Descargamos y descomprimimos Lighttpd:

wget http://www.lighttpd.net/download/lighttpd-1.5.0-r1992.tar.gz
tar xvzf lighttpd-1.5.0-r1992.tar.gz
cd lighttpd-1.5.0/

Configuramos:

./configure
make
make install

// Copiamos el directorio de los sources de lighttpd en /usr/src por seguridad, por si necesitamos
desinstalarlo y demás algún día.

cp lighttpd-1.5.0 /usr/src/ -R

Ahora vamos a crear el directorio de configuración si no existe (/etc/lighttpd) y copiar en el el fichero principal de configuración, que se encuentra entre los directorios del código fuente

mkdir /etc/lighttpd
cp doc/lighttpd.conf /etc/lighttpd/

Vamos a editar el fichero lighttpd.conf y ver las partes más importantes.

nano /etc/lighttpd/lighttpd.conf

Módulos del servidor:

Se estrablecen los módulos activos dentro de la directiva server.modules(), de esta forma:

server.modules = (”mod_rewrite”,”mod_alias”,”mod_accesslog”)

De momento utilizaremos solo estos modulos. mod_rewrite para las normas de rewrite, mod_alias para los alias del servidor, mod_access para denegar el acceso a ciertos archivos y mod_accesslog para los log de acceso y error.

Configuración básica del servidor:

server.document-root = “/home/web/htdocs” # Directorio raiz del servidor
server.errorlog = “/var/log/lighttpd/error.log” # Archivo de log de errores
index-file.names = ( “index.phtml”, “index.php” ) # Archivos de índice y su orden.
accesslog.filename = “/var/log/lighttpd/access.log” # Log de acceso del servidor.
url.access-deny = ( “~”, “.inc” ) # Deniega la descarga de los archivos con las extensiones indicadas.
static-file.exclude-extensions = ( “.php”, “.phtml”) # Extensiones que el servidor tratará como dinámicas.
#server.port = 81 # Puerto por defecto. Si está comentado usa el 80
#server.bind = “grisu.home.kneschke.de” # Host del que escuchará peticiones por defecto. Si está comentado acepta todos.
server.error-handler-404 = “/missing.phtml” # Archivo que mostrará cuando se produzca un error 404 (No se encuentra la página)

Para empezar, con estas opciones nos vale.
Importante:
Si queremos incluir algun fichero;

include “lighttpd-inc.conf”

El fichero debe estar situado en /etc/lighttpd/

Por último, vamos a configurar nuestro servidor para que funcionen las páginas en php 5. Para ello necesitamos instalar el paquete php5-cgi y activar el módulo “mod_proxy_backend_fastcgi”.

apt-get install php5-cgi

Para que todo funcione aún mejor, añadimos al fichero php.ini de /etc/php5/cgi la siguiente linea:

server.modules = (”mod_rewrite”,”mod_alias”,”mod_accesslog”,”mod_proxy_backend_fastcgi”,”mod_proxy_core”,)

Y ahora configuramos el módulo:

$PHYSICAL["existing-path"] =~ “.php$” {
proxy-core.allow-x-sendfile = “enable”
proxy-core.protocol = “fastcgi”
proxy-core.backends = ( “unix:/tmp/php-fastcgi.sock” )
proxy-core.max-pool-size = 16
}

En nuestro caso, como tambien utilizamos archivos phtml haremos una copia:

$PHYSICAL["existing-path"] =~ “.phtml$” {
proxy-core.allow-x-sendfile = “enable”
proxy-core.protocol = “fastcgi”
proxy-core.backends = ( “unix:/tmp/php-fastcgi.sock” )
proxy-core.max-pool-size = 16
}

*Importante: por último para que se lanzen los procesos php ejecutar desde un script: spawn-fcgi -s /tmp/php-fastcgi.sock -f /usr/bin/php-cgi -u www-data -g www-data -C 5 -P /var/run/spawn-fcgi.pid

Otros detalles “sin importancia”:

modulo rewrite: Son totalmente convertibles las máscaras del rewrite de apache a lighttpd sin demasiado esfuerzo, solo cambia la sintaxis dentro de lighttpd.conf (mejor hacer un include)
más info acerca del rewrite en: http://trac.lighttpd.net/trac/wiki/Docs%3AModRewrite

modulo alias: Creas alias virtuales para poder acceder a directorios que estan fuera del docroot (por ejemplo) o acortar rutas (por ejemplo tambien)

Ejemplo: alias.url = ( “/cgi-bin/” => “”/home/web/htdocs/rg/cgi-bin/” )

Ya tenemos un servidor lighttpd sencillo que soporta procesa php.

Manual gracias a: MiJack

Leer entradas relacionadas: