martes, 23 de julio de 2013

Sirviendo paginas ASP.NET con Apache

Anteriormente en NoCompila: compilamos y montamos mono para poder utilizar un Linux como servidor de páginas web. Lo que hicimos fue utilizar el servidor XSP. Este servidor no es recomendable para utilizarlo en producción.

Los chicos de mono ofrecen varias posibilidades para servir las aplicaciones ASP.NET. Yo me quedo con la opción servidor Apache + Mod mono

Tal y como hice cuando compilé mono, creo un nuevo directorio y me descargo de githhub los fuentes
~/monosources$ git clone https://github.com/mono/mod_mono.git
~/monosources$ cd mod_mono
~/monosources/mod_mono$ git checkout mono-2-10
Teniendo en cuenta que instalé mono en /usr/local y no en /usr (como asume la documentación) sigo las instrucciones del infichero install actualizando la ruta.
~/monosources/mod_mono$ ./autogen.sh --prefix=/usr/local 
~/monosources/mod_mono$ make
~/monosources/mod_mono$ sudo make install
Seguid las instrucciones solo hasta el make install. Ya que cuando terminé el proceso, le enseñé a Pedro como había configurado el apache me explicó que lo había hecho mal. Lo que ponen en las instrucciones de mono funciona, pero no es la forma de hacerlo en una instalación de apache de estilo devian (recordemos que estoy instalando esto en un Ubuntu 12.04)

Para configurar el módulo de mod_mono en apache, la documentación indica que se añada la linea LoadModule mono_module modules/mod_mono.so en el fichero http.conf. Cuando configuré el apache le pedí opinión a Pedro, que de esto sabe mucho y me explicó una forma mucho mejor de hacerlo. En /etc/apache2 hay dos directorios llamados mods-available y mods-enabled. Copiando el fichero del módulo(mod_mono.so) en mods-available y posteriormente utilizando el comando a2enmod se habilita el modulo (bueno quizás tengas que reiniciar el servicio de apache). También existe un a2dismod para deshabilitar un módulo.

Pedro me contó que la forma de habilitar sirios web en el apache es muy similar. Hay otros dos directorios en /etc/apache2, estos para las aplicaciones web sites-available y sites-enabled, que funcionan de forma similar a los módulos. Ponemos el fichero de configuración del sitio en sites-available y usamos el comando a2ensite para habilitarlo o a2dissite para deshabilitarlo.
¿Y cómo se genera el fichero de configuración del sitio? Muy fácil, los chicos de Mono tienen en su web una herramienta que genera el fichero de configuración. Si has seguido mi tutorial para compilar tendrás que cambiar la ruta de parametro MonoServerPath ya que ellos ponen por defecto la ruta de mono en /usr/bin/ pero en el post anterior yo lo instalé en /usr/local la línea quedaría así:
MonoServerPath nocompila.com "/usr/bin/mod-mono-server4"

Por último debemos tener cuidado con los permisos de lectura y escritura. No es fácil configurar el usuario que ejecuta la aplicación. En el FAQ de Mono hay una entrada sobre el tema (How can I Run mod-mono-server as a different user?), pero parece que ni a ellos les gusta ninguna de las respuestas. Para hospedar mis aplicaciones web en Linux me creé un usuario lo añadí al grupo www-data (que es el que ejecuta apache en mi Ubuntu) y problemas solucionados.

Con este segundo post terminamos con la guía para poner a funcionar asp.net con mono. Espero que Pedro no tenga que corregir nada de este post. Lo cierto es que aunque sea más de Windows, cada vez me lo paso mejor en las consolas, espero que no sea grave.

No hay comentarios:

Publicar un comentario