jueves, junio 04, 2009

Lighttpd en Centos 5.2

Para instalar Lighttpd en CentOS 5.2 hay que instalar primero ciertos paquetes de desarrollo:
yum install bzip2-devel zlib-devel pcre-devel


Buscamos cuál es la última versión disponible y la descargamos de http://www.lighttpd.net/download

Desempaquetamos en función del fichero descargado:
tar zxvf lighttpd-1.4.22.tgz

o
tar jxvf lighttpd-1.4.22.tar.bz2

Después ejecutamos configure:
./configure --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --with-opens


Tras esto compilamos:
make


E instalamos:
su -
make install


Con esto ya tendríamos Lighttpd instalado en nuestro sistema. Ahora vamos con la configuración básica.

Creamos un usuario:
adduser -s /sbin/nologin lighttpd

Creamos un directorio y fichero de configuración:
mkdir /etc/lighttpd
cd /etc/lighttpd
vi lighttpd.conf


Dentro del fichero metemos:
server.modules = (
"mod_rewrite",
"mod_redirect",
"mod_alias",
"mod_access",
"mod_auth",
"mod_status",
"mod_fastcgi",
"mod_cgi",
"mod_compress",
"mod_accesslog" )
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm" )
mimetype.assign = (
".rpm" => "application/x-rpm",
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".cpp" => "text/plain",
".log" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".bz2" => "application/x-bzip",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar"
)
########## BASE CONFIG - EDIT BELOW #########################
server.tag = "lighttpd (RedHat)"
accesslog.filename = "/var/log/lighttpd/access_log"
server.errorlog = "/var/log/lighttpd/error_log"
server.document-root = "/var/www/html/"
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
server.port = 80
##### Poner direccion IP si solo queremos que escuche en un interfaz#####
#server.bind = "202.54.xxx.xxx"
server.error-handler-404 = "/errorr404.php"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "lighttpd"
server.groupname = "lighttpd"
compress.cache-dir = "/tmp/lighttpd/cache/compress/"
compress.filetype = ("text/plain", "text/html")
$HTTP["url"] =~ "\.pdf$" {
server.range-requests = "disable"
}


Creamos el fichero /etc/sysconfig/lighttpd con los parámetros de arranque:
LIGHTTPD_CONF_PATH=/etc/lighttpd/lighttpd.conf


Creamos un fichero de arranque /etc/init.d/lighttpd:
#!/bin/sh
#
# lighttpd Startup script for the lighttpd server
#
# chkconfig: - 85 15
# description: Lighttpd web server
#
# processname: lighttpd
# config: /etc/lighttpd/lighttpd.conf
# config: /etc/sysconfig/lighttpd
# pidfile: /var/run/lighttpd.pid
#
# Source function library
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/lighttpd ]; then
. /etc/sysconfig/lighttpd
fi
if [ -z "$LIGHTTPD_CONF_PATH" ]; then
LIGHTTPD_CONF_PATH="/etc/lighttpd/lighttpd.conf"
fi
prog="lighttpd"
lighttpd="/usr/sbin/lighttpd"
RETVAL=0
start() {
echo -n $"Starting $prog: "
daemon $lighttpd -f $LIGHTTPD_CONF_PATH
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc $lighttpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
return $RETVAL
}
reload() {
echo -n $"Reloading $prog: "
killproc $lighttpd -HUP
RETVAL=$?
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/lock/subsys/$prog ]; then
stop
start
fi
;;
reload)
reload;;
status)
status $lighttpd
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|reload|status}"
RETVAL=1
esac
exit $RETVAL


Creamos los directorios necesarios y asignamos permisos:
mkdir -p /var/log/lighttpd
mkdir -p /tmp/lighttpd/cache/compress/
chown lighttpd:lighttpd /var/log/lighttpd
chown lighttpd:lighttpd /tmp/lighttpd/cache/compress/
chmod 755 /etc/init.d/lighttpd


Si está arrancado paramos el apache:
chkconfig httpd off
/etc/init.d/httpd stop

Y arrancamos el Lighhtpd
chkconfig --add lighttpd
chkconfig lighttpd on
/etc/init.d/lighttpd start

3 comentarios:

Miguel P.C. dijo...

¡Que bueno tenerte de vuelta!.

Una pregunta ¿porqué Lighttpd?
Podrías hacer un nuevo post con benchmarks, comparativas, info sobre seguridad ... etc.

Un abrazo.

XiR_ dijo...

Simple. Me he visto obligado a ponerlo en el trabajo, y ya que no lo había para redhat/centos que es lo que uso allí, me he dicho: ¿porqué no compartir cómo se hace?

No sé si conseguiré benchmarks o comparativas, pero si las consigo cuenta con ellas.

Gracias por ser como eres ;)

Anónimo dijo...

http://wiki.centos.org/es/AdditionalResources/Repositories?highlight=(EPEL)

con eso agregas el repositorio EPEL

luego de eso:

yum install lighttpd lighttpd-fastcgi

y listo el pollo, en epel se tiene varios backports de los mismos paquetes q figuran en fedora q no sobreescriban cosas en rhel/centos.