Delirios de un Informático

Servidor web Lighttpd con PHP en OpenWRT

Para empezar a aprovechar mi nuevo router Asus me puse a instalar un servidor web que me permitiera tener siempre disponible el software que utilizo frecuentemente: un wiki y un gestor de favoritos. Tras probar Apache, Cherokee, Lighttpd y thttpd (todos en el repositorio oficial) me quedé con Lighttpd, ya que fué el más ligero, rápido y fácil de instalar.

Empezaremos por instalar los paquetes necesarios:

opkg -dest usb install lighttpd lighttpd-mod-fastcgi php5-fastgi

En el archivo /etc/lighttpd.conf es necesario añadir las siguientes líneas, tal y como se indica en la documentación de Lighttpd:

fastcgi.server = ( ".php" => (( 
	"bin-path" => "/usr/bin/php-fcgi",
	"socket" => "/tmp/php.socket",
	"max-procs" => 1,
	"bin-environment" => ( 
		"PHP_FCGI_CHILDREN" => "2",
		"PHP_FCGI_MAX_REQUESTS" => "100" 
	),
	"bin-copy-environment" => (
		"PATH", "SHELL", "USER" 
	),
	"broken-scriptfilename" => "enable" 
)))

Es importante que el parámetro max-procs sea 1, ya que de otro modo el consumo de CPU y memoria será muy alto bloqueando el servidor. Lo mismo pasa con PHP_FCGI_CHILDREN, que ha de tener un valor bajo para no crear demasiados procesos simultáneos al cargar una página. También es imprescindible tener activada memoria swap para que PHP no de errores…

Al arrancar el servidor y visualizar un archivo PHP puede devolver un “No input file specified”, que según la documentación de Lighttpd, se soluciona comentando la línea doc_root en el archivo de configuración de PHP.

Para aligerar lo máximo posible, PHP también se ha separado en módulos, siendo necesario instalarlos para tener soporte para sesiones, expresiones regulares o acceso a bases de datos. Los paquetes recomendables son php5-mod-apc, php5-mod-pcre y php5-mod-session.

Tras probar un poco, he de decir vale de sobra para cosas pequeñas, pero un wiki como Mediawiki u otros programas phpMyAdmin son demasiado pesados para ser usables. Lo ideal es prescindir de una base de datos ya que la limitada memoria del dispositivo ya hace que el servidor web vaya forzado, y en todo caso usar SQLite (están disponibles los módulos PDO+SQLite).

4 comentarios en “Servidor web Lighttpd con PHP en OpenWRT”

admin dice:

Para la versión 10.03 de OpenWRT no es necesario instalar el paquete php5-fastcgi porque ya se integra en el paquete php5-cgi

luis alfonso dice:

hermano el comando opkg -dest usb install lighttpd lighttpd-mod-fastcgi php5-fastgi . la palabra usb dice que no la encuentra. aunque lee el pendrive como sda5. saludos

admin dice:

Para que reconozca el “-dest usb” debes tener configurado opkg: http://dmnet.bitacoras.com/archivos/software/openwrt-en-un-asus-wl-520gu-con-sporte-usb.php