Desplegar soluciones .net sobre plataforma Linux con Mono-Project

Recientemente en un proyecto nos solicitaron desplegar una solución, desarrollada en .net, sobre arquitectura Linux, luego de revisar algunos sitios y diversos documentos nos encontramos con el Proyecto Mono, el cual nos permitió desplegar nuestra solución.

A continuación se detalla el proceso de configuración que usamos y cada uno de sus componentes:

  • Nginx: Servidor Web HTTP, proxy en reversa y balanceador de carga de alto desempeño y bajo consumo de recursos.
  • Mono: Proyecto de codigo abierto para el despliegue de soluciones .net sobre plataformas que no sean Windows.
  • Libgdiplus: Biblioteca de Mono que proporciona una API compatible con los sistemas operativos que no sean Windows.
  • Xsp: Servidor Web que se ejecuta sobre plataforma Mono para Linux, permite su ejecución sobre .net.
  • Pcre: Librería de C de expresiones regulares.
  • Oracle Linux: Distribución de GNU/Linux basada en Red Hat, reempaquetada y distribuida por Oracle.

Instalacion Nginx Mono-Server Oracle Linux

  • Nginx-1.10.1
  • Frameworkmono-4.4.1
  • Libgdiplus-4.2
  • xsp-4.2
  • pcre-8.39
  • OracleLinux-6.4

Actualización de paquetes y dependencias de Sistema operativo , aceptamos todos los paquetes y dependencias

 yum update

Descarga, instalación y/o actualización de dependencias de Framework Mono
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype- devel libxml2 libxml2- devel zlib zlib-devel glibc glibc-devel glib2 glib2- devel bzip2 bzip2-devel bison pkgconfig glib2-devel gettext make

Crear la carpeta down para descargar todas las dependencias

mkdir -p /down
cd /down

Descargar las dependencias para soportar Nginx como servidor Web de Plataforma .Net

wget http://nginx.org/download/nginx-1.10.1.11.tar.gz 
wget http://download.mono-project.com/sources/mono/mono-4.2.tar.bz2 
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz 
wget http://download.mono-project.com/sources/xsp/xsp-4.2.tar.gz 
wget http://ftp.exim.llorien.org/pcre/pcre-8.39.tar.gz 

Instalación de Servidor Nginx

Instalación librería pcre, dependencia de servidor nginx

    cd /down
    tar zxvf pcre-8.39.tar.gz
    cd pcre-8.39/
    ./configure
    make && make install
    cd ../

Configuración de directorio web

    /usr/sbin/groupadd www
    /usr/sbin/useradd -g www www
    mkdir -p /data0/web
    chmod +w /data0/web
    chown -R www:www /data0/web

Instalación servidor Nginx

    tar zxvf nginx-1.10.1.tar.gz
    cd nginx-1.10.1/
    ./configure --user=www --group=www --prefix=/opt/nginx –with-   http_stub_status_module –with-  http_ssl_module
    make && make install
    cd ../

Abrimos Puerto 80

    -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

Iniciamos servicio del servidor Nginx
/opt/nginx/sbin/nginx

Accedemos a través de la URL a 127.0.0.1 para verificar inicio del servicio

Instalación de Framework Mono

Instalacion de librería libgdiplus

    cd /down

    tar zxvf libgdiplus-4.2.tar.gz
    cd libgdiplus-4.2
    ./configure --prefix=/opt/mono 
    make && make install
    echo "/opt/mono/lib" > /etc/ld.so.conf.d/mono.conf
    ldconfig

    yum install libX11-devel 

Instalación Framework Mono

    tar –jxvf mono-4.4.1.0.tar.bz2
    cd mono-4.4.1.0
    ./configure --prefix=/opt/mono
    make && make install
    echo export PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig:    $PKG_CONFIG_PATH>>~/.bash_profile
    echo export LD_LIBRARY_PATH=/opt/mono/lib:$LD_LIBRARY_PATH>>~/.bash_profile
    echo export PATH=/opt/mono/bin:$PATH>>~/.bash_profile
    source ~/.bash_profile

Verificamos la versión de mono

    mono -V

Instalación XSP

    cd /down
    tar zxvf xsp-4.2.tar.gz
    ./configure --prefix=/opt/mono
    make && make install

Configuración servidor Nginx

Editar archivo de configuracion del servicio nginx

    vi /opt/nginx/conf/nginx.conf

    server {
             listen   80;
             server_name  localhost;
             location / {
                     root /data0/web;
                     index index.html index.htm;
                    fastcgi_index Default.aspx;
                     fastcgi_pass 127.0.0.1:9000;
                    include fastcgi_params;
            }
     }

Configuración fastcgi_param, agregar las siguientes lineas

    vi /opt/nginx/conf/fastcgi_params
    fastcgi_param  PATH_INFO          "";
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

Reinicar servicio nginx

    /opt/nginx/sbin/nginx -s reload

Iniciar servicio fastcgi_mon

    fastcgi-mono-server4 /applications=/:/data0/web /socket=tcp:127.0.0.1:9000 &

Copiar proyecto web a la ruta /data0/web y probar a través del navegador.

Share on FacebookTweet about this on TwitterShare on Google+

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *