Introduccion
Lighttpd es un servidor web para los sistemas operativos Unix, Linux y Microsoft Windows. La instalacion de este servidor tambien conocido como Lighty, es una alternativa muy flexible para el servidor de paginas web Apache o Internet Information Services.
Este web server diseñado para ser seguro, rapido (muy rapido a decir verdad), compatible con los estandares y flexible a la vez esta optimizado para entornos en los cuales la velocidad es critica. Su huella de memoria es muy pequeña (en comparacion a otros servidores web; como apache o IIS), una ligera carga en el CPU y su enfoque en velocidad hacen de lighttpd perfecto para servidores con demasiada carga.
Instalacion de lighttpd sobre Debian, Linux Mint, Ubuntu
La instalacion del web server en Linux es muy sencilla. Para instalar lighttpd en linux, tecleamos como root:
deathbian:~# aptitude install lighttpd
Nota: Sobre Debian Lenny, lighttpd corre con el usuario www-data, y no lighttpd.
Configuracion Basica del web server
La instalacion del web server en Debian nos proporciona los archivos de configuracion y arranque de Lighty, pero si necesitan unos ejemplos
archivo: /etc/lighttpd/lighttpd.conf |
# Debian lighttpd configuration file # ############ Options you really have to take care of #################### ## modules to load # mod_access, mod_accesslog and mod_alias are loaded by default # all other module should only be loaded if neccesary # - saves some time # - saves memory server.modules = ( "mod_access", "mod_alias", "mod_accesslog", "mod_compress", "mod_fastcgi", # "mod_rewrite", # "mod_redirect", # "mod_status", # "mod_evhost", # "mod_usertrack", # "mod_rrdtool", # "mod_webdav", # "mod_expire", # "mod_flv_streaming", # "mod_evasive" ) fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket" ))) ## a static document-root, for virtual-hosting take look at the ## server.virtual-* options server.document-root = "/var/www/" ## where to send error-messages to server.errorlog = "/var/log/lighttpd/error.log" ## files to check for if .../ is requested index-file.names = ( "index.php", "index.html", "index.htm", "default.htm", "index.lighttpd.html" ) ## Use the "Content-Type" extended attribute to obtain mime type if possible # mimetype.use-xattr = "enable" #### accesslog module accesslog.filename = "/var/log/lighttpd/access.log" ## deny access the file-extensions # # ~ is for backupfiles from vi, emacs, joe, ... # .inc is often used for code includes which should in general not be part # of the document-root url.access-deny = ( "~", ".inc" ) ## # which extensions should not be handle via static-file transfer # # .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) ######### Options that are good to be but not neccesary to be changed ####### ## bind to port (default: 80) # server.port = 81 ## bind to localhost only (default: all interfaces) ## server.bind = "localhost" ## error-handler for status 404 #server.error-handler-404 = "/error-handler.html" #server.error-handler-404 = "/error-handler.php" ## to help the rc.scripts server.pid-file = "/var/run/lighttpd.pid" ## ## Format: .html ## -> ..../status-404.html for 'File not found' #server.errorfile-prefix = "/var/www/" ## virtual directory listings dir-listing.encoding = "utf-8" server.dir-listing = "enable" ## send unhandled HTTP-header headers to error-log #debug.dump-unknown-headers = "enable" ### only root can use these options # # chroot() to directory (default: no chroot() ) #server.chroot = "/" ## change uid to (default: don't care) server.username = "www-data" ## change uid to (default: don't care) server.groupname = "www-data" #### compress module compress.cache-dir = "/var/cache/lighttpd/compress/" compress.filetype = ("text/plain", "text/html", "application/x-javascript", "text/css") #### status module # status.status-url = "/server-status" # status.config-url = "/server-config" #### url handling modules (rewrite, redirect, access) # url.rewrite = ( "^/$" => "/server-status" ) # url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" ) # # define a pattern for the host url finding # %% => % sign # %0 => domain name + tld # %1 => tld # %2 => domain name without tld # %3 => subdomain 1 name # %4 => subdomain 2 name # # evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/" #### expire module # expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes") #### rrdtool # rrdtool.binary = "/usr/bin/rrdtool" # rrdtool.db-name = "/var/www/lighttpd.rrd" #### handle Debian Policy Manual, Section 11.5. urls #### and by default allow them only from localhost $HTTP["remoteip"] == "127.0.0.1" { alias.url += ( "/doc/" => "/usr/share/doc/", "/images/" => "/usr/share/images/" ) $HTTP["url"] =~ "^/doc/|^/images/" { dir-listing.activate = "enable" } } #### variable usage: ## variable name without "." is auto prefixed by "var." and becomes "var.bar" #bar = 1 #var.mystring = "foo" ## integer add #bar += 1 ## string concat, with integer cast as string, result: "www.foo1.com" #server.name = "www." + mystring + var.bar + ".com" ## array merge #index-file.names = (foo + ".php") + index-file.names #index-file.names += (foo + ".php") #### external configuration files ## mimetype mapping include_shell "/usr/share/lighttpd/create-mime.assign.pl" ## load enabled configuration files, ## read /etc/lighttpd/conf-available/README first include_shell "/usr/share/lighttpd/include-conf-enabled.pl" $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/ssl/certs/lighttpd.pem" } |
Con lighty instalado y funcionando correctamente ya no vamos a utilizar Apache 1.3/2.x, asi que mejor lo removemos del sistema (Recuerden sacar backup de los datos y archivos de configuracion de apache), tecleando:
deathbian:~# aptitude remove apache2
Configurando las Directivas basicas del web server lighttpd
- server.document-root = /var/www/html/ Especifica el directorio por default para los sitios.
- server.port = 80 Especifica el puerto por default del servidor.
- server.username = www-data Usuario de Linux, ya sea Debian, Ubuntu, Mint u distro derivada sobre el cual corre lighty.
- server.groupname = www-data Especifica el nombre de usuario y grupo con los cuales arranca/detiene el demonio del servidor lighttpd. Esta es una caracterstica de seguridad, asi de esta manera no corre con los privilegios de root.
- server.bind = server-ip-address Especifica la direccion ip del servidor. Asi mismo tambien es posible ingresar un hostname o localhost.
- server.tag =lighttpd Se utiliza para asignar el nombre y el numero de version de lighttpd (default). Esta es una caracteristica de seguridad. Se puede configurarde esta manera:
server.tag ="Mi servidor web v1.0"
Nota: Este es el nombre que reporta el servidor en su cabecera de respuesta. Se puede comprobar utilizando netcraft.
- server.errorlog = /var/log/lighttpd/error.log Especifica el archivo de bitacora de error.
- accesslog.filename = /var/log/lighttpd
- Especifica el archivo de bitacora de accesos, el cual puede ser utilizado por una aplicacion de estadisticas de visitantes como webalizer.
- index-file.names = ( index.php, index.html ) Un listado de los archivos por omision en cada directorio.
- server.modules = (
mod_access,
mod_accesslog,
mod_fastcgi,
mod_rewrite,
mod_auth
): - Los modulos anteriormente descritos seran los unicos que cargara lighty. Claro que se pueden agregar mas. De aqui el secreto de la rapidez y bajo consumo de memoria del servidor, veamos una descripcion mas detallada:
- mod_access: El modulo de acceso es utilizado para denegar acceso a ciertos archivos.
- mod_accesslog: Utilizado para escribir la bitacora CLF, flexible como apache.
- mod_fastcgi: Soporte FastCGI para perl/PHP etc.
- mod_rewrite: Necesario para re-escribir Url’s SEO compatibles.
- mod_auth: Autenticacion, usualmente para directorios protegidos por contrase�a.
mimetype.assign = (
.pdf => application/pdf,
.sig => application/pgp-signature
): Se utiliza para asignar el mapeo del mimetype.
Editemos el archivo /etc/lighttpd/lighttpd.conf y configuren todas las directivas descritas anteriormente.
deathbian:~# vim /etc/lighttpd/lighttpd.conf
Comprobacion del servicio web
Ya que todo esta configurado a nuestras necesidades, grabamos el archivo y arrancamos el demonio lighttpd:
deathbian:~# /etc/init.d/lighttpd start
Si deseamos verificar cuales servicios estan corriendo y en cual puerto, para comprobar el exito de nuestra instalacion de lighttpd, tecleamos:
deathbian:~# netstat -ntulp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 2522/mysqld tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2151/portmap tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2720/lighttpd tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN 2742/inetd tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2927/tcpsvd tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 2720/lighttpd tcp 0 0 127.0.0.1:831 0.0.0.0:* LISTEN 2775/famd tcp6 0 0 :::22 :::* LISTEN 2444/sshd udp 0 0 0.0.0.0:32768 0.0.0.0:* 2432/lwresd udp 0 0 0.0.0.0:32770 0.0.0.0:* 2793/avahi-daemon: udp 0 0 0.0.0.0:517 0.0.0.0:* 2742/inetd udp 0 0 0.0.0.0:518 0.0.0.0:* 2742/inetd udp 0 0 127.0.0.1:921 0.0.0.0:* 2432/lwresd udp 0 0 0.0.0.0:5353 0.0.0.0:* 2793/avahi-daemon: udp 0 0 0.0.0.0:111 0.0.0.0:* 2151/portmap udp6 0 0 :::32769 :::* 2432/lwresd
Ahora vamos al navegador, ya sea firefox o internet explorer y verifiquemos que nuestro nuevo sitio sea accesible via web, tecleamos en la barra de direcciones del navegador
http://localhost/ o
Palabras Finales
Por experiencia personal, les puedo asegurar que el performance de apache es muy inferior frente a lighttp.
Lighty puede ser muy joven (en comparacion a otros sistemas de servidores web), su desarrollo buscar responder a la realidad de nuestros dias, el la cual la web2.0 requiere mayor performance para sitios con miles de visitantes a diario.
En los proximos dias publicaremos temas como;
Optimizando el servidor web lighttpd
- Configurando FastCGI PHP sobre lighttpd
- Configuracion del hosting virtual sobre lighttpd
- Compilar y optimizar los scripts de php sobre lighttpd con php eAccelerator
- Resolver problemas con el cache de eAccelerator
Fortaleciendo la seguridad de Lighttpd
- Seguridad del servidor web extrema: Configurar Lighttpd, php, perl, MySQL con soporte para un entorno de sistema de archivos virtual (chrooted jail)
- Configuracion SSL
- Crear y utilizar nuestro propio certificado SSL en lighttpd
- Proteger con contrase;a los directorios
Configuracion miscelanea de Lighttpd
- Instalar y configurar las estadisticas de Webalizer para lighttpd
- URLs SEO compatibles para wordpress con lighttpd
- Denegar los enlaces directos o el robo de imagenes (leeching) con lighttpd
Monitoreo del servidor Lighttpd
- Monitorear y reiniciar el servicio lighttpd cuando este se cuelge.
Via | Lighttpd sitio web oficial
Hola , llegué tarde ?
Bueno aver si me pueden ayudar , como puedo poner el lighttpd para que en cuentas sobre debian (shells) se pongan las webs en www o public_html y se puedan ver en distintas cuentas .
Saludos y Gracias
Servidor web Guia Ubuntu
No olviden instalar
aptitude install php5-cgi php5-cli
Muchas gracias por el tutorial. Tengo una pregunta que no logro resolver por muchas guias que lea. Necesito que al entrar en mi web, cuando pregunto usuario y password mediante auth.module, el usuario no aparezca o aparezca ya uno prefijado.
Por ejemplo, si sale el pop-up user: password: me gustaria que apareciese
asi
user:admin #por ejemplo
password: #en blanco
o solo
password: #en blanco
gracias!
puedes ayudarme a configurar lighttpd para django????
mi caso es:
tengo creado mi proyecto “ooo” en home/ecoia/django_projects/
pero no puedo hacerlocorrer en lighttpd
…owen
Saludos..
cual seria la configuracion adecudad para que cada virtualhost tenga su propio error.log y access.log, con la finalidad de llevar las estadisticas de cada virtual.
la configuracion por default no me permite tener es configruacion!
Buenas muchachos, tengo el siguiente problemita/problemon
Tengo instalado Ruby on Rails , el tema que he instalado por apt-get el lighttpd pero cuando veo los mod que cargan, ohhh caramba no esta el de mod_fastcgi
Porque pasa esto?? como lo soluciono??, es que si no me tira error y no puedo levantarla para entrar desde afuera
Saludos, Poli
@Poli: En el archivo /etc/lighttpd/lighttpd.conf buscas la opcion de server.modules y descomentas (borrar el #) la linea que se lee “mod_fastcgi”, y asi ya estara habilitado.
Saludos
@Pablo: Muchas gracias por tu comentario, si hay otro tema que te interese y si podemos ayudarte, con mucho gusto.
Excelente el artÃculo. Me sirvió como referencia. Gracias.
Con perl? decis el Fastcgi/Perl… Pues si no estoy mal el FastCGI ya trae dicho soporte, cuentanos como te va!!
Saludos
Gracias maestro agregue el modulo cgi nomas y ya andavo..
Maestro tenes documentacion para hacerlo andar con perl quiero instalar bugzilla y me ta jorobando un toq.. gracias