viernes, 4 de julio de 2008

FreeBSD 7 + lighttpd + php5 + cgi

Lo primero será instalar el lighttpd:

# cd /usr/ports/www/lighttpd
# make install clean clean-depends


Después, el PHP 5. Lo mejor será hacerlo directamente desde las extensiones, ya que compilará las extensiones elegidas y PHP5 como dependencia:

# cd /usr/ports/lang/php5-extensions
# make install clean clean-depends


En caso de que se quisiese instalar el PHP 5 a pelo, sin extensiones, lo mejor sería hacerlo así para poder tener sesiones:

# /usr/ports/lang/php5
# make CONFIGURE_ARGS+=--enable-session install clean clean-depends


En todo caso ésta última no es una buena forma de instalarlo, yo al menos tuve problemas al querer instalar php5-mysql, incluso desde php5-extensions, ya que aunque instalaba, luego en realidad no había soporte para la base de datos.

Seguimos. Como soy un poco tiquismiquis, voy a crear un directorio específico para los logs del lighttpd:

# mkdir /var/log/lighttpd
# chmod -R 755 /var/log/lighttpd
# chown -R www:www /var/log/lighttpd


Ahora hay que editar el archivo de configuración del lighttpd y dejarlo a nuestro gusto. Está localizado en /usr/local/etc/lighttpd.conf. Antes de nada le hacemos una copia de seguridad, y luego lo editamos:

# cp /usr/local/etc/lighttpd.conf /usr/local/etc/lighttpd.conf.orig
# vi /usr/local/etc/lighttpd.conf


Para empezar, en la sección "server.modules", hay que activar el "mod_cgi" (viene comentado por defecto). Para completar el soporte CGI hay que buscar las líneas que haya de "cgi.assign" y sustituirlas por la siguiente para poder ejecutar PHP vía CGI:

cgi.assign = (".php" => "/usr/local/bin/php-cgi" )

Otras líneas que puede que haya que modificar para que se adecúen a la configuración de nuestro servidor:

En mi caso esta es la ruta en donde están las páginas html:

## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root = "/usr/local/www/html/"


Para que grabe los logs en el directorio creado anteriormente:

## where to send error-messages to
server.errorlog = "/var/log/lighttpd/lighttpd.error.log"

#### accesslog module
accesslog.filename = "/var/log/lighttpd/lighttpd.access.log"


También puede ser interesante cambiar el puerto del servidor:

## bind to port (default: 80)
server.port = 8080


En caso de que no sea el 80, buscar la siguiente línea y comentarla, ya que sino las páginas se siguen sirviendo desde el puerto 80.

$SERVER["socket"] == "0.0.0.0:80" { }

Ya sólo queda editar el archivo /etc/rc.conf, añadir lighttpd_enable="YES" para que el demonio se lance al encender el ordenador, y listo.