jueves, 5 de marzo de 2009

Lighttpd: Un servidor web rápido!


En algún momento se me presentó la duda de qué clase de servidor Web podría estar usando un portal como “www.youtube.com”. Dentro de mi ilusión, pensé que debido a su popularidad “Apache2” podría ser la alternativa, sin embargo, desperté rápidamente cuando me enteré que era un servidor Web llamado “Lighttpd” o “Lighty” como lo llaman por cariño. (En esta dirección podrán confirmar la información http://highscalability.com/youtube-architecture)

Lighttpd es un servidor Web que he descubierto recientemente y me ha sorprendido su alto rendimiento, facilidad de configuración y cumplimiento de las necesidades típicas que se nos presentan a la hora de instalar una aplicación web.

Algunos de los requerimientos que se nos presentan son:
  • Administración de hosts virtuales.
  • Creación de “alias”.
  • Programación en PHP5.
  • Administración de archivos vía DAV.
  • Uso de certificados de seguridad con SSL.
Pues la sorpresa es que todas estas funciones están soportadas por “lighty” y lo mejor es que además de pertenecer a una de las creaciones de la comunidad de software libre, es realmente impresionante la rapidez con la que trabaja.

En este artículo se describen los pasos para instalar el “Lighttpd” así como configurar varias de sus funcionalidades principales.

1. Instalación de “Lighttpd”:

Suponemos que no tenemos instalado ningún otro servidor Web. En caso de tenerlo, al momento de instalarlo la se presentará un mensaje de error indicando que el puerto 80 está ocupado y no levantará a la primera.
#aptitude install lighttpd

2. Configuración de “PHP5” y el soporte para la base de datos “Mysql 5” en “Lighty”:
  • Instalamos “PHP5”:
    #aptitude install php5-cgi php5-common php5-mysql
  • Modificamos la configuración del “PHP5”:
    #vim /etc/php5/cgi/php.ini
  • Modificamos la línea:
    cgi.fix_pathinfo=1
    El archivo de configuración se encuentra en “/etc/lighttpd/lighttpd.conf”. Lo editamos para cargar el módulo “mod_cgi” y “mod_fastcgi”:
    #vim /etc/lighttpd/lighttpd.conf
  • Modificamos los siguientes parámetros:
    server.modules = (
    “mod_access”,
    “mod_alias”,
    “mod_accesslog”,
    “mod_compress”,
    “mod_cgi”,
    “mod_fastcgi”,
    # “mod_rewrite”,
    # “mod_redirect”,
    # “mod_status”,
    # “mod_evhost”,
    # “mod_usertrack”,
    # “mod_rrdtool”,
    # “mod_webdav”,
    # “mod_expire”,
    # “mod_flv_streaming”,
    # “mod_evasive”
    )
    Al final del archivo agregamos:
    ...
    fastcgi.server = ( “.php” => ((”bin-path” => “/usr/bin/php5-cgi”,”socket” => “/tmp/php.socket”)))
  • Reiniciamos el servicio Web:
    #/etc/init.d/lighttpd force-reload
3. Prueba del servidor Web:
  • Creamos el siguiente archivos en el directorio de páginas Web:
    # echo "" > /var/www/index.php
  • Verificamos la visualización de contenido visitando la página:
    http://localhost/index.php
Existen un conjunto de módulos que pueden ser activados a partir del archivo de configuración del “Lighty”. Entre ellos están “mod_rewrite”, “mod_status”, “mod_webdav” y “mod_flv_streaming”. Bastaría con estudiar un poco la finalidad de cada uno de ellos para explotar su capacidades.

En el siguiente enlace se pueden encontrar las diferencias entre configuraciones realizadas en Apache2 y Lighttpd:

http://www.onlamp.com/pub/a/onlamp/2007/04/05/the-lighttpd-web-server.html

Personalmente he probado “Lighttpd” en ambientes de concurrencia alta. Especialmente en aulas virtuales basadas en MOODLE y administradores de contenido Web como JOOMLA y el rendimiento en ambos casos ha mejorado de manera claramente importante.

Éxitos!

FUENTES:
http://www.saghul.net/blog/2007/08/14/howto-un-servidor-web-ligero-lighttpd-php5-mysql5/
http://chrisjohnston.org/2009/setting-up-a-llmp-stack-linux-lighttpd-mysql-php5-on-ubuntu-810
http://www.onlamp.com/pub/a/onlamp/2007/04/05/the-lighttpd-web-server.html
http://www.guatewireless.org/optimizando-el-servidor-web-apache-2-vs-lighttpd-1x/
http://www.guatewireless.org/lighttpd-instalacion-y-configuracion-del-web-server/

martes, 3 de marzo de 2009

APACHE2+DAV fácil


La configuración de un servidor web y su acceso puede realizarse de muchas formas.
A continuación, explico uno de los caminos más sencillos.

1. Nombres del servidor
  • Editar el archivo "/etc/hosts" agregando:
    ...
    127.0.0.1 sitio1
    127.0.0.1 sitio2
    ...
Con esto logramos que el servidor responda a los nombres "sitio1" y "sitio2" de manera local.

2. Instalación y configuración del servidor Web Apache2
  • Instalación de apache2 y PHP5
    • #aptitude install apache2 php5
  • Creamos los directorios para guardar las páginas:
    • #mkdir /var/www/sitio1
    • #mkdir /var/www/sitio2
    • #chown -R www-data.www-data /var/www/sitio1
    • #chown -R www-data.www-data /var/www/sitio2
  • Configuración del primer host virtual:
    • Crearemos un archivo por cada sitio virtual para mantener un mejor orden:
    • #vim /etc/apache2/sites-available/sitio1

ServerName sitio1
ServerAlias www.sitio1
DocumentRoot /var/www/sitio1

ErrorLog /var/log/apache2/sitio1/error.log
LogLevel warn
CustomLog /var/log/apache2/sitio1/access.log combined
ServerSignature On


  • Ahora configuramos el segundo:
    • #vim /etc/apache2/sites-available/sitio2

ServerName sitio2
ServerAlias www.sitio2
DocumentRoot /var/www/sitio2

ErrorLog /var/log/apache2/sitio2/error.log
LogLevel warn
CustomLog /var/log/apache2/sitio2/access.log combined
ServerSignature On

  • Creamos los directorios para los logs:
    • #mkdir /var/log/apache2/sitio1/
    • #mkdir /var/log/apache2/sitio2/
  • Habilitamos cada uno de los sitios:
    • #a2ensite sitio1
    • #a2ensite sitio2
  • Recargamos la configuración del servicio "Apache2":
    • #/etc/init.d/apache2 reload
4. Prueba de los "virtual hosts"
  • Creamos un par de páginas web para probar la configuración:
    • #echo "Este es el sitio 1." > /var/www/sitio1/index.html
    • #echo "Este es el sitio 2." > /var/www/sitio2/index.html
  • Con un explorador, navegamos a las direcciones:
    • http://sitio1
    • http://sitio2
5. Configuración del acceso vía DAV
  • El acceso vía DAV es alternativo al que proveen las cuentas locales del servidor.
  • Las cuentas locales pueden apoyarse en servicios como ssh, scp y ftp.
  • Los usuarios y claves de DAV pueden estar almacenados en un archivo.
  • Cargamos los módulos "dav" y "dav_fs" en el servidor apache2:
    • #a2enmod dav
    • #a2enmod dav_fs
  • Creamos un directorio para guardar el archivo de usuarios y claves para acceso vía DAV:
    • #mkdir /etc/apache2/dav-auth
  • Creamos el archivos con usuarios y claves correspondientes:
    • #htpasswd -c -m /etc/apache2/dav-auth/dav-auth-claves usuario1
    • #htpasswd -m /etc/apache2/dav-auth/dav-auth-claves usuario2
    • #chown root.www-data /etc/apache2/dav-auth/dav-auth-claves
    • #chmod 640 /etc/apache2/dav-auth/dav-auth-claves
  • Con esto hemos creado el archivo "dav-auth-claves" que contiene nombre de usuario y clave cifrada.
  • Configuramos los archivos "sitio1" y "sitio2" en "/etc/apache2/sites-available":
"/etc/apache2/sites-available/sitio1":

...
Alias /webdav /var/www/sitio1

DAV On
AuthType Basic
AuthName "Webdav del sitio 1"
AuthUserFile /etc/apache2/dav-auth/dav-auth-claves
Require valid-user

...

"/etc/apache2/sites-available/sitio2":

...
Alias /webdav /var/www/sitio2

DAV On
AuthType Basic
AuthName "Webdav del sitio 2"
AuthUserFile /etc/apache2/dav-auth/dav-auth-claves
Require valid-user

...

6. Probamos el acceso a los sitios vía DAV:
  • Para esta prueba podemos utilizar un programa de cónsola llamado "cadaver". Procedemos a su instalación:
    • #aptitude install cadaver
  • Ejecutamos la prueba para acceder al "sitio 1":
    • #cadaver http://sitio1/webdav
      ...ingresamos el usuario y la clave.
      Una vez dentro podemos ejecutar el comando "ls" para visualizar los archivos.
  • Ejecutamos la prueba para acceder al "sitio 2":
    • #cadaver http://sitio2/webdav
      ...ingresamos el usuario y la clave.
      Una vez dentro podemos ejecutar el comando "ls" para visualizar los archivos.
Es recomendable utilizar algún cliente para acceso DAV. Afortunadamente para el caso de Debian el sistema trae por defecto la opción de contectarse a un servidor vía "DAV".

En este punto tenemos un servidor web con dos hosts virtuales para ser accedidos vía DAV.

Éxitos!

FUENTES:

http://www.simplehelp.net/2008/12/16/how-to-setup-virtual-hosts-in-apache/
http://www.howtoforge.com/setting-up-webdav-with-apache2-on-debian-etch
http://www.apache2.org/
http://httpd.apache.org/docs/2.0/mod/mod_dav.html
http://lists.debian.org/debian-user-spanish/2008/11/msg00768.html