Si hace unos días hablábamos de la posibilidad de ejecutar aplicaciones ASP.NET en nuestro equipo Linux con XSP, hoy traemos la que podría ser la segunda parte de ese artículo: hacer esto mismo pero con Apache y mod_mono.

¿Por qué escoger este binomio en lugar de XSP? La respuesta es fácil: XSP es un servidor de pruebas, no de producción y si queremos tener un servicio o aplicación web ejecutando de forma decente en producción, mejor utilizar Apachemod_mono. Las razones no son sólo por la escalabilidad y eficiencia que permite Apache, sino que están relacionadas por la seguridad que provee el servidor más utilizado a nivel mundial y por la gran variedad de opciones que nos ofrece.

De todas maneras sigo pensando que al igual que el servidor de pruebas de Django es útil para las pruebas, XSP es un buen servidor de pruebas para practicar con nuestro PC cuando estemos aprendiendo ASP.NET. Cuando la aplicación se hace compleja y sobre todo queramos pasarla a producción, Apache.

Instalación y configuración

  1. Instalamos:
    1. Apache 2 (si utilizáis sistema de paquetería será algo así como apache2).
    2. Módulo para multiproceso: apache2-mpm-worker.
    3. Módulo de Monolibapache2-mod-mono.
    4. Interfaz entre Mono y servidormono-apache-server.
  2. Reiniciamos el servicio de Apache para que recargue la configuración: sudo /etc/init.d/apache2 restart
  3. Activamos el módulo (a2enmod significa apache2 enable module): sudo a2enmod mod_mono
  4. Vemos qué versión de ASP.NET está activada (lo recomendable es que sea la 2 y no la 1). Para comprobarlo nos dirigimos a: /etc/apache2/mods-available y vemos el fichero mod_mono.conf, debería estar así (comentada con # la primera):
    #Include /etc/mono-server/mono-server-hosts.conf
    Include /etc/mono-server2/mono-server2-hosts.conf

En definitiva, una forma simple de tener un servidor ASP.NET corriendo en nuestro equipo Linux, con software libre y en sólo cuatro pasos. Para tenerlo perfectamente preparado para producción, deberéis de tener en cuenta algunos detalles más propios de Apache, pero la parte específica de Mono es ésta.

Ya me contaréis vuestras impresiones con esta tecnología.

Parece que la noticia ha gustado y lo han colgado de Menéame. Si queréis ya sabéis: menead.

Logo Proyecto Mono

“Security, speed, compliance, and flexibility”, estas son las keywords de lighttpd (pronunciado “lighty”), se trata de una pequeña (en tamaño) y muy eficiente alternativa al archiconocido Apache. Quizás lo mejor de todo, su simpleza, el archivo de configuración de lighttpd no es tan complejo como el de Apache.

Construir lighttpd desde cero es un poco más complicado, ya que depende de otras bibliotecas. Como mínimo, necesita la versión de desarrollo (la versión que incluye los archivos de cabecera) de expresiones regulares compatibles con la biblioteca de Perl (PCRE) y la herramienta de compresión zlib. Después de haber instalado estas bibliotecas, la compilación de lighttpd es sencilla:

$ # Lighttpd requires libpcre3-dev and zlib1g-dev
$ wget http://www.lighttpd.net/download/lighttpd-1.4.24.tar.gz
$ tar xzf lighttpd-1.4.22.tar.gz
$ cd lighttpd-1.4.22
$ ./configure && make && sudo make install

Una vez compilado, hemos de crear nuestro archivo de configuración. La configuración más minimalista posible establece la raíz del documento (document root), el puerto del servidor (server port), algunos tipos MIME (Multipurpose Internet Mail Extension), el usuario por defecto (default user) y un grupo para el demonio (daemon):

server.document-root = “/var/www/lighttpd/miDirectorioHost”
server.groupname = “www”
server.port = 80
server.username = “www”

mimetype.assign = (
“.html” => “text/html”,
“.txt” => “text/plain”,
“.jpg” => “image/jpeg”,
“.png” => “image/png”
)

static-file.exclude-extensions = ( “.fcgi”, “.php”, “.rb”, “~”, “.inc” )
index-file.names = ( “index.html” )

Considerando que hemos guardado nuestro archivo de texto como /opt/etc/lighttpd.conf, para lanzar lighttpd bastará con invocarlo y pasarle dicho archivo de configuración:

lighttpd -D -f /opt/etc/lighttpd.conf.

Al igual que Apache, lighttpd puede servir servidores vituales (virtual hosts). Y en solo tres líneas y usando un condicional:

$HTTP["host"] == “www2.linuxhispano-ejemplo.net” {
server.document-root = “/var/www/lighttpd/miDirectorioHostVirtual
}

De esta manera, si accedemos www2.linuxhispano-ejemplo.net, usaremos la alternativa planteada.

Lighttpd es especialmente hábil en el manejo de un gran número de peticiones en paralelo. Y al igual que Apache, podemos usarlo conjuntamente con Ruby on Rails (RoR), PHP, etc.

Artículos relacionados.
Artículo original en  IBM Developer Works.

Para instalar Apache 2, ejecuta en el terminal de tu consola:

sudo apt-get install apache2

Para comprobar que funciona perfectamente ejecuta:

sudo /etc/init.d/apache2 restart

Ubuntu a veces no define el nombre del servidor para Apache así que es bueno que lo hagamos. Edita apache2.conf:

sudo gedit /etc/apache2/apache2.conf

y añade esta línea:

ServerName "your-server-name"

que debería ir cerca a esta línea:

ServerRoot "/etc/apache2"

En realidad no necesitaremos este nombre del servidor pero vale la pena para evitar que Apache escupa advertencias en cada reinicio.

Para comprobar que todo está en orden entra desde un navegador a:

http://localhost