martes, 26 de enero de 2010

Instalando lighttpd en Ubuntu/Debian GNU/Linux desde los fuentes




Como he comentado en alguna ocasión, me gusta Apache2. Durante muchos años Apache Software Foundation ha realizado un gran trabajo, añadiendo funcionalidades y módulos, corrigiendo bugs y mejorando en cada versión de Apache2(y Apache 1.x, por supuesto). También he comentado en otras el gran trabajo de Alvaro López, y los excelentes resultados de rendimiento, superando ampliamente los obtenidos con Apache2.Actualmente busco un paquete de software de servidor web ligero y rápido, con soporte PHP5(vía fast-cgi sirve), que corra sin problemas en una máquina con 128MB de RAM(vps). Desde hace un par de semanas he testeado lighttpd y los resultados son más que satisfactorios.

A continuación, y a modo de recordatorio personal,comentaré como instalar lighttpd(version 1.4.25 de Enero de 2010) en una máquina corriendo Ubuntu 9.10, con las siguientes características.

Kernel: Linux polinico 2.6.31-14-generic-pae
Procesador: AMD Athlon(tm) 64 X2 Dual Core Processor 4800+
RAM: 8262708k total
gcc: gcc-4.4 4.4.1-4ubuntu9
make: 3.81-6

Actualizamos las fuentes de los repositorios e instalamos los paquetes necesarios.

[root@polinico ~#]apt-get update && apt-get -y install gcc make build-essential libpcre3-dev libbz2-dev zlib1g-dev

Una vez instalados, necesitamos descargar lighttpd.

[root@polinico tmp#] wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz && md5sum lighttpd-1.4.25.tar.gz

Muchas veces obviamos el paso de la comprobación de la suma md5 del fichero, nunca está de más...

[root@polinico tmp#]wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz && md5sum lighttpd-1.4.25.tar.gz
--2010-01-26 23:20:36-- http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz
Resolviendo download.lighttpd.net... 64.34.173.165
Conectando a download.lighttpd.net|64.34.173.165|:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 780629 (762K) [application/x-tar-gz]
Guardando: «lighttpd-1.4.25.tar.gz»

100%[======================================>] 780.629 205K/s en 4,5s

2010-01-26 23:20:41 (168 KB/s) - `lighttpd-1.4.25.tar.gz' guardado [780629/780629]

87e936ec272ddaba8a2fdfecd8c6b704 lighttpd-1.4.25.tar.gz

Desempaquetamos el fichero...

[root@polinico tmp#]tar zxvf lighttpd-1.4.25.tar.gz && cd lighttpd-1.4.25

Lo bueno de la compilación desde el código fuente, a parte de la optimización del binario resultante, es la posibilidad de habilitar/deshabilitar el soporte a protocolos/tecnologías/lenguajes...etc. Por defecto,si no indicamos nada al ejecutar configure, tendremos un binario de lighttpd con los siguientes plugins habilitados:

  • mod_access

  • mod_access_log

  • mod_alias

  • mod_auth

  • mod_cgi

  • mod_compress

  • mod_dirlisting

  • mod_evhost

  • mod_extforward

  • mod_flv_streaming

  • mod_fastcgi

  • mod_indexfile

  • mod_proxy

  • mod_redirect

  • mod_rrdtool

  • mod_scgi

  • mod_secdownload

  • mod_setenv

  • mod_simplehost

  • mod_ssi

  • mod_putasgae

  • mod_staticfile

  • mod_status

  • mod_trigger_b4_dk

  • mod_userdir

  • mod_usertrack

  • mod_webdav


Y como características destacadas

  • auth-crypt

  • compress-bzip2

  • compress-deflate

  • regex-conditionals



Si queremos optimizar y personalizar al máximo la compilación:

[root@polinico tmp#] ./configure --help|more

En caso de usar las opciones por defecto:

[root@polinico tmp#] ./configure && make && make install


Ya hemos instalado lighttpd!!! No era para tanto, verdad? Me he encontrado con el que script de arranque/parada de /etc/init.d puede dar problemas al indicar correctamente la localización del binario.Recordemos que por defecto es /usr/local/sbin. No me he parado a localizar el .pid de lighttpd, pero con "ps aux|grep lighttpd|grep etc|awk '{ print $2 }'"(chapuza) solucionamos la papeleta.Podéis descargar el script aquí.

2 comentarios:

zetxek dijo...

El mod_putasgae va a ser que es propio, no? Jajaja

Unknown dijo...

Claro.Es un "clavo" para ver quién lee los posts hasta el final. ;)