Categories: Internet

Lighttpd: Instalacion y configuracion del web server para Linux Debian, Mint y Ubuntu

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

Linux Gratis

No soy un asesor financiero y la información que proporciono es solo para fines educativos e informativos. No brindo asesoramiento de inversión y cualquier decisión que tome con respecto a sus inversiones es suya. Consulte a un asesor financiero autorizado antes de tomar cualquier decisión de inversión. El valor de las criptomonedas puede ser volátil e invertir en ellas implica un riesgo significativo. Debe considerar cuidadosamente su propia situación financiera y tolerancia al riesgo antes de tomar cualquier decisión de inversión. No garantizo la exactitud o integridad de la información proporcionada y no soy responsable de ninguna pérdida o daño que pueda resultar del uso de esta información.

Disqus Comments Loading...

Recent Posts

Más Allá de la Teoría: Estudiantes en la Vanguardia de Lightning Network 2023

En el ámbito de la informática y la cadena de bloques, el conocimiento teórico a…

6 meses ago

Un Análisis Detallado del Informe de Crimen Cripto 2023: Una Guía para Principiantes

El emergente dominio de las criptomonedas ha cautivado la imaginación colectiva por su potencial para…

7 meses ago

Capital de Riesgo en Cripto: Sobreviviendo y Prosperando en un Mercado Bajista

En el siempre evolucionante mundo de las criptomonedas, el capital de riesgo (VC) ha encontrado…

7 meses ago

Bitcoin, divisas y criptomonedas: Potencial y perspectivas | Análisis 2023

?? Resumen video : Gareth Soloway Bitcoin, prepárate para lo que viene Introducción El mercado…

1 año ago

El desmoronamiento de Silicon Valley Bank: la crisis bancaria del 2023

En marzo de 2023, el mundo financiero se vio sacudido por el repentino colapso de…

1 año ago

SegWit – Bitcoin Segregated Witness

A medida que Bitcoin continúa ganando popularidad y reconocimiento, aumenta la necesidad de escalabilidad y…

1 año ago