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


¿Te ha gustado?:
  • Digg
  • del.icio.us
  • Facebook
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • PDF
  • Technorati
  • Twitter

Debido a mis circunstancias laborales, trabajo muy frecuentemente con la plataforma .NET en entornos Windows y la verdad es que creo que la tecnología .NET de Microsoft es de lo mejor que ha salido de Redmond en mucho tiempo. Nada que ver con las anteriores tecnologías que nada tenían que ver entre sí y que eran objetivamente malas tanto para el desarrollador como para el usuario final. Hablo de Visual Basic, ASP o Visual C++, junto con las Microsoft Foundation Classes y compañía.

Como consecuencia de esto que os cuento, desde siempre he tenido un interés especial por poder crear mis desarrollos utilizando esta tecnología en Linux. El Proyecto Mono proporciona prácticamente todas las posibilidades de la plataforma, con software libre y para todo tipo de entornos y sistemas (cierto es que está verde en algunas parte pero por lo general está muy depurado y tiene muchas posibilidades).

Bueno a lo que íbamos. Entre las posibilidades del Proyecto Mono también se encuentra la creación y ejecución de aplicaciones web. Para ello nos proporciona un servidor ligero escrito en C# (aunque a algunos ambos términos a la vez le resulten opuestos) llamado XSP y que para pequeñas aplicaciones de producción y para desarrollo es muy válido. Para aplicaciones de más tamaño, recomiendo utilizar Apache con mod_mono.

¿Cómo instalar y configurar XSP?

Siempre tendréis la opción de descargar del SVN la última versión estable, pero os recomiendo instalarlo mediante vuestro gestor de paquetería. El paquete en cuestión se llamará, dependiendo del repositorio, mono-xsp o mono-xsp2 (en caso de estar disponibles ambos, elegid el que soporta ASP.NET 2, es decir, mono-xsp2).

Una vez hecho esto poco más hay que hacer. Lo mejor es descargarse el paquete con los ejemplos, su nombre será algo así como: asp.net2-examples. Tras instalarlo ya podéis probar

  1. Antes de nada deberéis moveros al directorio de los ejemplos: /usr/share/asp.net2-demos/
  2. Arrancamos el servidor: xsp2
  3. Introducimos en nuestro navegador la siguiente dirección (puerto 8080 de nuestro equipo): http://localhost:8080.
  4. Veremos los ejemplos. A partir de ahí… ya tenéis camino libre para desarrollar aplicaciones ASP.NET con Linux.

Parece que el post ha aparecido en Menéame. Si os ha gustado ya sabéis, menearla.


¿Te ha gustado?:
  • Digg
  • del.icio.us
  • Facebook
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • PDF
  • Technorati
  • Twitter

Debido a los problemas existentes  en el desarrollo de Apache y a las dudas que surgen en torno a la utilización de MySQL como sistema gestor de bases de datos, tras la compra de Oracle; el núcleo principal de desarrolladores de WordPress ha decidido migrar el gestor de contenidos de blog a Internet Information Services, el servidor web de Microsoft.

La consecuencia directa para nosotros será tener que migrar de un servidor Linux a un servidor Windows para poder seguir actualizando. Hay que reconocer que ISS es el servidor de moda.

Tenéis más información en el sitio del proyecto abierto a tal efecto en Google Code.

Gracias a AyudaWordPress por la mejor inocentada que he leído este día 28 de Diciembre, día de los Inocentes.


¿Te ha gustado?:
  • Digg
  • del.icio.us
  • Facebook
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • PDF
  • Technorati
  • Twitter

shodan_logoTras la expectación generada con el lanzamiento de dos buscadores: Bing de Microsoft y WolframAlpha de Wolfram Research, hoy comentamos un buscador mucho menos ambicioso en cuanto a usuarios, pero con un enfoque que seguro que encuentra muchos adeptos.

Os hablo de Shodan y he llegado a conocerlo a través de Security By Default. Su enfoque se basa en encontrar servidores, pero, ¿servidores cómo? Podemos pedirle que busque servidores que:

  • Sean de telnet (uff que de tiempo…)
  • Utilicen un determinado demonio de HTTP: Apache, ISS, nginx, lighttpd
  • E incluso por puertos abiertos.

Sin lugar a dudas, una herramienta que automatiza muchas labores propias de personas relacionadas con el mundo de la seguridad. Hasta hace poco, también permitía buscar por rango de IP, pero debido al uso que se le estaba dando, lo han deshabilitado.

¿Os imagináis todos los usos que podéis darle? Tened cuidado y sed buenos.


¿Te ha gustado?:
  • Digg
  • del.icio.us
  • Facebook
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • PDF
  • Technorati
  • Twitter

“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.


¿Te ha gustado?:
  • Digg
  • del.icio.us
  • Facebook
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • PDF
  • Technorati
  • Twitter

Hace tiempo vimos cómo proteger un directorio Web con Apache haciendo uso de .htaccess, más tarde discutimos sobre la posibilidad de usar PHP Auth como alternativa real, y ahora os dejo, no ya otra forma de hacerlo, sino una curiosa forma, y al mismo tiempo útil, de crear nuestros archivos para cuando optemos por la primera alternativa planteada.

Pongámonos en el siguiente caso, hemos de proteger un directorio Web con cierta urgencia, pero resulta que no nos hemos encontrado en casa, el portátil también lo olvidamos y lo único de lo que disponemos es del ordenador de un amigo (que no tiene Apache instalado, ni por supuesto htpasswd), ¿qué hacemos? Pues conectarnos por FTP a nuestro servidor Web y añadir los archivos .htaccess y .htpasswd que podemos crear gracias a Dirprotect, la aplicación online que titula la entrada.

Dirprotect

Cómo vemos en la imagen bastará con especificar el directorio y si no tenemos un fichero de contraseñas crearlo tambíen desde ahí. Tan simple y básico que más de uno lo agradecerá.


¿Te ha gustado?:
  • Digg
  • del.icio.us
  • Facebook
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • PDF
  • Technorati
  • Twitter

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

¿Te ha gustado?:
  • Digg
  • del.icio.us
  • Facebook
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • PDF
  • Technorati
  • Twitter

Ya os comenté con anterioridad, a través del último artículo publicado sobre Task Freak! la necesidad de proteger el contenido del mismo, en tal caso usamos .htaccess, pero en ocasiones nos puede resultar más factible usar la autenticación HTTP mediante PHP. Ya sea por comodidad o por restricciones del servidor para incluir modificaciones en subdirectorios con .htaccess.

En el ejemplo, eminentemente práctico, que os muestro a continuación haremos uso de las directivas de PHP, PHP_AUTH_USER y PHP_AUTH_PW, suficientes para nuestro marco de trabajo. Podéis encontrar las especificaciones al completo y ejemplos de estas en php.net.

En primer lugar, editarmos el fichero secure.php con la siguiente información, descriptiva por sí misma:

<?php
$users = array(
'ahornero' => 'contraseña en MD5'
);


if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Linux Hispano"');
exit('Esta página requiere autenticación');
}

if (!isset($users[$_SERVER['PHP_AUTH_USER']])) {
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Linux Hispano"');
exit('Acceso denegado');
}

if ($users[$_SERVER['PHP_AUTH_USER']] != md5($_SERVER['PHP_AUTH_PW']))
{
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Linux Hispano"');
exit('Acceso denegado');
}
?>

Y simplemente nos bastará con incluirlo en los ficheros que deseemos proteger:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
[...]


¿Te ha gustado?:
  • Digg
  • del.icio.us
  • Facebook
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • PDF
  • Technorati
  • Twitter