Ya hace un tiempo que Microsoft liberó como tecnología abierta .NET para poder difundir su capacidad de ejecutar aplicaciones en cosas que no solo sea Microsoft. Este esfuerzo lo inicio Miguel de Icaza con Mono y Microsoft se le unió para cerrar filas.
Ya antes he escrito artículos de como ejecutar aplicaciones .NET en GNU/Linux usando Mono, tanto con Winforms, WebForms y otras, algunas cosas como Entity Framework, MVC eran más complicadas, pero eso se termina hoy gracias a que Microsoft al fin se pasa a lado correcto de la fuerza y que quiere expandirse después de ya no ser la monopolizadora de tecnología de antaño, atrás quedaron los años de arrogancia de esta corporación.
ASP 5 en GNU/Linux con CentOS Mono y el entorno de Microsoft.
1 Requerimientos básicos
yum install unzip libunwind curl-dev
2 Bajar y compilar Mono al momento de escribir este artículo estaba disponible la versión 4.2.2
http://download.mono-project.com/sources/mono/mono-4.2.2.10.tar.bz2
./configure –prefix=/rutaainstalar
make
make install
Agregar los binarios de mono al PATH para poder ejecutarlos cuando sean requeridos, en este caso uso el siguiente PATH pero eso depende de la ruta destino de instalacion
PATH=$PATH:$HOME/bin:/usr/mono4.2.2/bin
3 Compilar e Instalar librería libuv
http://dist.libuv.org/dist/v1.4.2/libuv-v1.4.2.tar.gz
autogen.sh
./configure –prefix=/rutadeinstalacion
make
make install
Crear los enlaces simbólicos, para este caso yo uso, esto varia dependiendo el lugar de destino de la instalacon
ln -s /usr/lib64/libdl.so.2 /usr/lib64/libdl
ln -s /usr/local/lib/libuv.so.1.0.0 /usr/lib64/libuv.so
4 Instalar las herramientas de Microsoft para crear un entorno donde se puedan ejecutar las aplicaciones .NET
Descargar el instalador de vnvm
wget https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh
chmod +x dnvminstall.sh
./dnvminstall.sh
5 Instalar los certificados de Microsoft, si este paso no se realiza, los dnu restore no descargan las dependencias correctamente, en ocasiones ni siquiera las descarga
certmgr -ssl -m https://go.microsoft.com
certmgr -ssl -m https://nugetgallery.blob.core.windows.net
certmgr -ssl -m https://nuget.org
mozroots –import –sync
Eso es todo, en este punto ya está instalado todo lo necesario para crear un entorno tipo Microsoft amigable para cualquier aplicación. A partir de aquí es valido configurar como si se estuviera en una consola de Windows Server usando los comandos dnvm, dnu y dnx
Me centrare en la configuración con Mono y GNU/Linux aunque con otros parámetros aplica de la misma forma en Windows
Configurando.
dnvm
Descarga los runtime con los que las aplicaciones se ejecutaran. Para indicarle que ya tenemos Mono instalado en el sistema y que será nuestro core.
dnvm upgrade -r mono
Para listar los runtimes que se tienen para trabajar
dnvm list
se debe obtener una salida como la siguiente.
Active Version Runtime Architecture OperatingSystem Alias
—— ——- ——- ———— ————— —–
* 1.0.0-rc1-update1 mono linux/osx default
Para configurar que se usara siempre este runtime
dnvm use 1.0.0-rc1-update1 -r mono -p
En este punto el sistema está listo para ejecutar cualquier aplicación de .NET
Ejecutando una aplicación de consola
Esto se puede hacer usando solamente MONO, sin embargo en algunos casos las dependencias dentro del código podrían solicitar DLL que no vienen incluidas con MONO y es aquí donde este runtime salva el día, por ahora solo se ejecutara una sencilla aplicación de consola
1 Crear una carpeta donde estará la aplicación
2 Crear un archivo project.json con el siguiente contenido
{
"frameworks": {
"dnx451": {}
}
}
dnx451 es compatible con mono
3 Se crea el archivo donde está el Main de la aplicación.
using System;
class Program
{
static void Main(string[] args)
{
Console.Write("Hola Last Dragon");
Console.Read();
}
}
Con el comando dnu se prepara el runtime para ejecutar la aplicación, dnu lee el archivo project.json y genera otro como salida llamado project.lock.json que le indica dnx como tratar la aplicación contenida en la carpeta.
dnu restore
finalmente se llama a dnx para ejecutar, en el caso de una aplicación tan simple como la del ejemplo es suficiente con dnx run, dnx se encargar de buscar el punto de entrada de la aplicación y no hace falta pasar el archivo fuente C#
dnx run
Hola Last Dragon
Ejecutando aplicaciones ASP 5
Ejecutar ASP 5 es aún más fácil pues la carpeta del proyecto ya viene preparada con todo lo necesario, el mismo Visual Studio crea por si solo el archivo project.json con todos lo necesario para que el dnu restore instale todas las dependencias y con el parámetro web se inicia un proceso de servidor WEB proveído por el mismo dnx y solicitado desde el interior de project.json
dnu restore
dnx web
Al entrar a la aplicación se obtiene algo como esto.