• Optimizando el servidor web: Apache 2 vs Lighttpd 1.x
  • URL file-access is disabled in the server configuration
  • Encriptacion con OpenSSH – Como generar y configurar una llave publica en Linux
  • " />

    Lighttpd: Instalacion y configuracion del web server

    Tabla de contenido


    1.- Introduccion

    Lighttpd es un servidor web para los sistemas operativos Unix/Linux y Microsoft Windows. Este servidor tambien conocido como Lighty, es una alternativa para el servidor de paginas web Apache.

    Esta dise�ado para ser seguro, rapido (muy rapido a decir verdad), compatible con los estandars y flexible a la vez que 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), una ligera carga en el CPU y su enfoque en velocidad hacen de lighttpd perfecto para servidores con demasiada carga.

    2.- Instalacion sobre Debian

    Para instalar lighttpd, tecleamos, como root:

    deathbian:~# aptitude install lighttpd

    Nota: Sobre Debian Lenny, lighttpd corre con el usuario www-data, y no lighttpd.

    3.- Configuracion Basica

    La instalacion 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

    3.1.- Configurando las Directivas basicas de 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 en Debian 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 caracter�stica 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 configurar de 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

    4.- 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 http://127.0.0.1/

    5. 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.

    Popularity: 13% [?]


    Otros articulos de interes:

    1. Optimizando el servidor web: Apache 2 vs Lighttpd 1.x
    2. URL file-access is disabled in the server configuration
    3. Encriptacion con OpenSSH – Como generar y configurar una llave publica en Linux
    4. CentOs DRBD Kernel conflicts
    5. Servicio ftp con usuarios fantasma
    6. Howto Install Courier-MTA sobre Linux Debian
    7. Creando un repositorio de paquetes de Debian
    8. Filtro de contenido – Plugin Antivirus
    9. Instalando Java en Linux Debian sarge/etch/lenny/sid
    10. SSH: acceso seguro con iptables

    Etiquetado como: , ,

    15 Comentarios

    1. Maestro tenes documentacion para hacerlo andar con perl quiero instalar bugzilla y me ta jorobando un toq.. gracias

    2. Gracias maestro agregue el modulo cgi nomas y ya andavo..

    3. Con perl? decis el Fastcgi/Perl… Pues si no estoy mal el FastCGI ya trae dicho soporte, cuentanos como te va!!

      Saludos

    4. Excelente el artículo. Me sirvió como referencia. Gracias.

    5. @Pablo: Muchas gracias por tu comentario, si hay otro tema que te interese y si podemos ayudarte, con mucho gusto.

    6. 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

    7. 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!

    8. 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

    9. 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!

    10. No olviden instalar

      aptitude install php5-cgi php5-cli

    11. 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

    Trackbacks

    1. Mini Caso de Estudio: Apache 2 vs Lighttpd 1.x
    2. MySQL: Buscar y Reemplazar texto con SQL | ...::: Guatewireless.org ::::..

    Por favor, escriba un comentario

    Por favor tome en cuenta lo siguiente:
    Los comentarios son moderados, por lo cual puede tardar en ser publicados. No hay necesidad de repetir su comentario.
    Su correo electronico nunca sera revelado.

    Terminos de busqueda


  • lighttpd
  • configurar lighttpd
  • instalar lighttpd
  • como instalar lighttpd
  • manual lighttpd
  • lighttpd configurar
  • servidor web lighttpd
  • mod_redirect light
  • mod_rewrite consume memoria
  • perl modulos para instalar bugzilla centos
  • portmap all interfaces solaris
  • servidor avahi para windows 7 taringa
  • servidor web ligttpd
  • sistema de monitoreo servidores taringa
  • taringa aumentar internet de turbonet guatemala
  • array merge sin repeticion php
  • install rrdtool en ubuntu server 10 04
  • certificacion solaris 10 taringa
  • configuracion de un servidor web en Linux
  • CONFIGURAR INSTALACION SOLARIS 10 TARINGA
  • configurar un servidor Web en Windows Vista
  • demonio eBox 1 4
  • directivas basicas del servidor ssh ubuntu
  • guia instalacion hosting bugzilla
  • instalacion y configuracion de servidor web en windows server 2008
  • Instalacion-y-Configuracion-Del-Servidor-de-Correo-Seguro-Con-Mandriva-Directory-Server taringa
  • install bugzilla debian lenny
  • ububntu 10 04 ububntu 10 04 eliminar protocolo tcp6