Lighttpd 1.4.11 en Ubuntu 6.06

Preparando la actualización del "stack" Ruby on Rails en mis servidores Ubuntu 6.06 "Dapper Drake", de la fiel versión 1.1.6 que me sirvió tanto a su actual versión 1.2.3, me topé con un viejo problema: el paquete de Lighttpd incluído en Dapper sencillamente no funciona para deplegar sitios Rails (ni 1.1.6, ni 1.2.3 como descubrí en el proceso) tal como se distribuye desde sus repositorios, ni en su versión para arquitectura i386 ni para AMD64.

Mi intención es montar mis sitios Rails1.2.3 actualizados en hosts virtuales de Lighttpd, servidos cada uno por sendos procesos FastCGI; una configuración que a pesar de todo me demostró ser bastante confiable. Sin embargo, los problemas inherentes al paquete de Lighttpd 1.4.11 de Dapper a sortear son escencialmente dos:

  • La configuración del módulo fastcgi incluído en ese paquete no sirve.
  • La configuración en el archivo lighttpd.conf para servir imágenes localmente interfiere con las reglas de ruteo de Rails.

Ambos problemas tienen, afortunadamente, una solución:

El problema con la configuración del módulo fastcgi es que inicializa por defecto un servidor FastCGI esperando tener instalado antes el paquete php4-cgi, lo que no nos sirve si no lo tenemos instalado, si preferimos usar php5-cgi o si no vamos a usar PHP en absoluto.

La solución es editar "manualmente" el archivo /etc/lighttpd/conf-available/10-fastcgi.conf como se sugiere al final de este tópico en los foros de Lighttpd. O como preferí hacerlo yo, que necesito PHP5, usar el mismo archivo empaquetado en el Lighttpd de Debian Stable (a propósito, mucho más completo).

Por culpa del segundo problema perdí todo un día. Rails 1.2.3 daba inexplicables errores del tipo "ActionController::RoutingError" cuando intentaba servir el contenido estático en el directorio public/images, por ejemplo:

(Recognition failed for "/images/rails.png")

El problema está en el mismo archivo de configuración de Lighttpd, concretamente en la sección que dice:

$HTTP["host"] == "localhost" {  
  ..  
  "/doc/" => "/usr/share/doc/"  
  "/images/" => "/usr/share/images/  
  ..  
}

La solución es cambiar la cadena "/images/" por cualquier otra cosa, o como lo hice yo, directamente comentar toda la sección. El reporte de este error se encuentra en la lista de Debian.

Los últimos pasos necesarios consisten en habilitar el dichoso módulo fastcgi usando:

lighty-enable-mod fastcgi

Y también por lo menos los siguientes más: mod-rewrite y mod-redirect, descomentando sus correspondientes líneas en el archivo de configuración lighttpd.conf.

 

RSS Blog