server:lighttpd

lighttpd

Lighttpd (auch: Lighty) ist ein auf Schnelligkeit (insbesondere bei vielen Benutzern und groeßn Dateien) optimierter Webserver unter der BSD-Lizenz. Er implementiert alle wichtigen Funktionen eines Webservers und kann, ähnlich wie Apache, durch Module erweitert werden.

Den Server nur auf localhost antworten lassen:

server.bind = "localhost"

alternativ

lighttpd unter Linux (Debian) mit PHP und (Fast-)CGI einrichten: Setting up PHP with Lighttpd

Anmerkung: PHP4 geht auch, der Support läuft aber Ende des Jahres 2007 sowieso aus.

  1. Da PHP5 von „lighty“ als (Fast-)cgi benutzt wird, muss bereits das Paket php5-cgi installiert sein.
  2. Jetzt kann das Modul fastcgi aktiviert werden:
     lighty-enable-mod fastcgi 
  3. Der Standardpfad für php-cgi läuft erstmal auf das alte PHP4-Verzeichnis (/usr/bin/php4-cgi), da muss geändert werden: Die Konfiguration wie auf der Webseite aufgeführt ist durch den vorherigen Befehl bereits im Verzeichnis /etc/lighttpd/conf-enabled abgelegt. Diese Datei muss nur noch abgeändert werden: Die bin-path-Zeile muss so aussehen:
    "bin-path" => "/usr/bin/php5-cgi",
  4. cgi.fix_pathinfo = 1

    muss an die Datei /etc/php5/cgi/php.ini angehängt werden.

  5. danach muss ein Reload der Konfiguration durchgeführt werden:
    /etc/init.d/lighttpd force-reload

Mit dem Modul mod_simple_vhost konstruiert lighty die virtuellen Server aus den folgenden drei Werten:

  • server-root : das Hauptverzeichnis für den Webserver
  • hostname : der Domänenname
  • document-root : das Verzeichnis, das die Webseiten enthält

nach dem Schema server-root + hostname + document-root (also etwa server-root + default-host + document-root oder falls dieses Verzeichnis nicht existiert: server-root + default-host + document-root).

simple-vhost.server-root = "/var/www/server/"
simple-vhost.default-host = "beispiel.de"
simple-vhost.document-root = "seiten"

ergibt dann /var/www/server/beispiel.de/seiten

:!: Die Ablageorte der Homeverzeichnisse virtueller Hosts mod_mysql_vhost) lassen sich auch in einer Datenbank ablegen.

Enhanced Virtual-Hosting

:!: Achtung: Die Errorlogs für virtuelle Verzeichnisse bleiben bei Bedingungen (Conditionals) immer am letzten angegebenen Errorlog hängen (siehe http://trac.lighttpd.net/trac/ticket/665|#665 server.errorlog is not conditionals).

namensbasierte virtuelle Server

$HTTP["host"] =~ "(^|\.)george-weasley.com$" {
    server.document-root = "/var/www/vhosts/george-weasley.com/html"
    server.errorlog = "/var/www/vhosts/george-weasley.com/logs/error_log"
    accesslog.filename = "/var/www/vhosts/george-weasley.com/logs/access_log"
    fastcgi.server = ( ".php" =>
                       (
                          ( "socket" => "/var/www/fastcgi/george/george.socket",
                            "broken-scriptfilename" => "enable"
                          )
                        )
                      )

IP-basierte virtuelle Server

FIXME

$SERVER["socket"] == "203.20.113.50:80" {
        server.document-root = "/var/www/bccycles/"
        accesslog.filename = "/var/log/lighttpd/bccycles-access.log"
}

port-basierte virtuelle Server

FIXME

FIXME Using Authentication (mod_auth)

auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/pfad/zu/deiner/htpasswd"
auth.require = ( "/" =>
                     (
                        "method" => "basic",
                        "realm" => "Sesam öffne dich",
                        "require" => "valid-user"

                     )
             )

Alternativ kann auch ein bestimmter Benutzer gefordert werden:

"require" => "user=deinusername"

Oder man schreibt eine einzelne Verbotszeile:

    $HTTP["url"] =~ "^" + var.dokudir + "/geheimes_verzeichnis/" { url.access-deny = ( "" ) }

FIXME

Über SSL kann man verschlüsselte Verbindungen zum Webserver aufbauen. Dazu musss das Paket openssl installiert und das Modul ssl aktiviert werden:

sudo lighty-enable-mod ssl

Besitzt man ein gültiges SSL-Zertifikat, so sollte man es nach /etc/lighttpd/server.pem kopieren. Möchte man einen individuellen Pfad nutzen, so kann man diesen in der Datei /etc/lighttpd/conf-available/10-ssl.conf setzen. Natürlich kann man sich auch ein selbst-signiertes SSL-Zertifikat durch

cd /etc/lighttpd
sudo openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes

erstellen.

Auch zur on-the-fly Komprimierung gibt es bereits ein Modul „mod_compress“ beim lighttpd, dass noch wie fcgi und simple_vhost durch entfernen des Kommentarzeichens (#) aktiviert werden muss.

Die folgende Zeile existiert bereits im Konfigfile:

#compress.filetype           = ("text/plain", "text/html")

Sie kann natürlich um typische Dateitypen erweitert werden:

compress.filetype           = (
                      "text/plain",
                      "text/html",
                      "text/javascript",
                      "text/css",
                      "text/xml"
)

Und, wie sollte es anders sein, auch hier natürlich noch ein Neustart:

/etc/init.d/lighttpd restart

Doku unter http://trac.lighttpd.net/trac/wiki/Docs%3AModCompress

Quelle

FIXME

FIXME

Wer das Logformat combined (u.a. Voraussetzung für einige Statistikprogramme) nutzen möchte, fügt folgende Zeile in der Konfigurationsdatei ein

accesslog.format = "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

Auch hier natürlich noch ein Neustart:

/etc/init.d/lighttpd restart

Weitere Infos gibt's unter http://www.lighttpd.net/documentation/accesslog.html

Quelle

Es ist es möglich, dass der Webserver auch Daten aus den Homeverzeichnisses der lokalen Benutzer auslesen kann. Dazu muss der jeweilige Benutzer ein Verzeichnis public_html in seinem Homeverzeichnis anlegen und dort dem Benutzer „www-data“ des Webservers zumindest Leserechte geben. Wenn dann noch das Modul mittels

sudo lighty-enable-mod userdir

aktiviert und der Webserver neu gestartet wurde, so können die dort hinterlegten Dateien über „http://domain.de/~benutzername/“ ausgelesen werden.