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.