
lighttpd
(gesprochen lighty) ist ein Webserver, der weit weniger Ressourcen benötigt als z.B. der Apache Webserver und ist so vor allem für sehr große Lasten oder sehr schwache Systeme gut geeignet. Er wurde von Jan Kneschke entwickelt und ist durch Module erweiterbar. FastCGI beispielsweise ermöglicht das Ausführen von PHP Code, SCGI ergänzt lighty um Ruby oder auch Python.
lighttpd lässt sich ab Ubuntu Dapper Drake 6.06 direkt aus den Paketquellen von Ubuntu installieren. Dazu muss nur das Paket folgende Paket installiert [1] werden.
lighttpd (universe [2])
Der lighttpd wird über die Datei /etc/lighttpd/lighttpd.conf konfiguriert. Diese lässt sich mit einem beliebigen Texteditor bearbeiten [4]. Die wichtigsten Optionen sollen hier kurz vorgestellt werden. Zahlreiche weitere Konfigurationsmöglichkeiten finden sich ausführlich beschrieben in der Konfigurationsdatei selber.
lighttpd sucht im Verzeichnis /var/www/ nach Webseiten, die er darstellen soll. Möchte man hier ein anderes Verzeichnis nutzen, so kann man dies über den Eintrag
## a static document-root, for virtual-hosting take look at the ## server.virtual-* options server.document-root = "/var/www/"
definieren. Dabei ist zu beachten, dass der Benutzer "www-data" unter dem der Webserver läuft, auf diese Daten zumindest lesend zugreifen können muss. Anschließend kann man über
die Webseiten aufrufen.
Sollte bereits eine index.php oder ähnlich vorhanden sein, aber die Erweiterung für php noch nicht installiert sein, so kann es sein, dass man die Fehlermeldung 403 bekommt. Nach umbenennen der index.php Datei oder der erfolgreichen Installation der entsprechenden Erweiterung sollte diese verschwinden.
Sollen für verschiedene Hostnamen unterschiedliche Verzeichnisse verwendet werden, so kann dies mit Hilfe des Moduls mod_simple_vhost
eingestellt werden (die server.virtual-* Option, welche noch in der Konfigurationsdatei erwähnt wird ist veraltet).
Möchte man lighttpd z.B. parallel zum Apache Webserver betreiben, so würden beide Server Port 80 belegen. Dies ist jedoch nicht möglich. Nur eine Anwendung kann einen Port nutzen. Bei Bedarf lässt sich der Port, an dem lighttpd auf Anfragen hört über die Option
## bind to port (default: 80) server.port = 8080
bestimmen. In diesem Beispiel würde man den Port des lighttpd auf 8080 setzen. In diesem Fall müsste man Webseiten über die URL
aufrufen.
Betreibt man den Webserver an einem Rechner, der direkt aus dem Internet erreichbar ist, so möchte man den Webserver eventuell nur an den localhost, sprich an den Rechner selber, binden. Dadurch lässt sich der Webserver weder aus dem Netzwerk, noch aus dem Internet erreichen. Dies lässt sich durch die Option
## bind to localhost only (default: all interfaces) server.bind = "localhost"
erreichen.
Auf einem Linux-System finden sich im Verzeichnis /usr/share/doc/ zahlreiche Dokumentationen im HTML-Format. Diese Anleitungen kann lighttpd auch im Netzwerk zur Verfügung stellen. Sie werden von Haus aus eingebunden. Man kann sie vom Rechner, auf dem auch der Webserver zu erreichen ist unter
aufrufen. Allerdings ist der Zugriff auf den localhost beschränkt. Sollen andere Rechner im Netzwerk die Dokumentationen aufrufen können muss die Beschränkung auf den localhost auskommentiert werden
#### 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"
}
#}Anschließend lassen sich die Dokumentationen von einem beliebigen Rechner unter
aufrufen.
Wie alle anderen Dienste bringt lighttpd Start/Stop-Skripte mit. Diese Skripte lassen sich natürlich auch zum Kontrollieren des Webservers gebrauchen [3]:
# Allgemein
sudo /etc/init.d/lighttpd {start|stop|restart|reload|force-reload}
# Beispiel
sudo /etc/init.d/lighttpd restart
"start" - Startet den Webserver
"stop" - Stoppt den Server
"restart" - Startet den Server neu, bestehende Verbindungen auf den Server werden gekappt
"reload" - Lädt die Konfigurationsdateien neu, ohne dass Verbindungen getrennt werden
"force-reload" - Lädt die Konfigurationsdateien neu, wobei bestehende Verbindungen getrennt werden.
Mehr dazu im Wiki unter Dienste.
Auch lighttpd lässt sich durch Module um zusätzliche Funktionen erweitern. So lassen sich Interpretersprachen wie CGI oder PHP einbinden, Daten können aus den Homeverzeichnissen der User ausgelesen, Verschlüsselung per SSL kann aktiviert werden usw.
Wie üblich 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 [3] und der Webserver neu gestartet wurde, so können die dort hinterlegten Dateien über
ausgelesen werden.
CGI ist eine Schnittstelle zwischen Webserver und Betriebsystem, um z.B. Perl Scripte auch über den Webserver auszuführen. So können dynamische Inhalte erzeugt werden. Das benötigte Modul muss mittels
sudo lighty-enable-mod cgi
aktiviert werden [3]. Nach einem Neustart des Webservers können nun Skripte im Verzeichnis /usr/lib/cgi-bin abgelegt und über
aufgerufen werden. Dabei ist zu beachten, dass der Benutzer "www-data", unter dem der Webserver läuft, diese Daten lesen und natürlich auch ausführen können muss.
Grundvoraussetzung ist natürlich, dass PHP überhaupt auf dem Rechner installiert ist. Wie üblich lässt sich PHP über die Paketverwaltung über die Pakete
php4-cgi (universe [2]) )
php5-cgi
installieren [1]. Je nach Wunsch kann man also PHP4 oder PHP5 nutzen. Anschließend muss man das Modul in lighty aktivieren [3]:
sudo lighty-enable-mod fastcgi
Bis Ubuntu "Dapper Drake" 6.06 muss der Pfad zu PHP eventuell noch angepasst werden. Sollte man PHP5 nutzen, so muss man noch in der Datei /etc/lighttpd/conf-available/10-fastcgi.conf den Pfad zur php-Programmdatei anpassen [4]. Aus "/usr/bin/php4-cgi" muss "/usr/bin/php5-cgi" gemacht werden. Am Ende sollte diese Textpassage so
fastcgi.server = ( ".php" =>
((
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket",
"max-procs" => 2,
...aussehen. Nach einem Neustart des Webservers sollten .php-Dateien nun ausgeführt werden.
Über SSL kann man verschlüsselte Verbindungen zum Webserver aufbauen. Diese Funktion muss ebenfalls erst über ein Modul aktiviert werden. Grundvoraussetzung ist, dass das folgende Paket installiert [1] ist.
openssl
Anschließend kann das Modul aktiviert werden [3]:
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 [4]. Natürlich kann man sich auch ein eigenes SSL-Zertifikat mittels
cd /etc/lighttpd sudo openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
erstellen. Allerdings geben Webbrowser dann eine Warnung aus, dass dieses Zertifikat nicht verifiziert werden kann. Die Verbindung wird natürlich trotzdem verschlüsselt. Ist das Zertifikat hinterlegt und der Webserver neu gestartet, so erreicht man die verschlüsselten Seiten ab jetzt über
Um Verzeichnisse mit einem Passwortschutz zu versehen ist das Modul auth nötig und wird über
sudo lighty-enable-mod auth
aktiviert. Die von Apache bekannte Verwendung von .htaccess-Dateien ist mit lighty leider nicht möglich. Stattdessen müssen die Einstellungen in der Konfigurationsdatei /etc/lighttpd/conf-enabled/10-auth.conf vorgenommen und der Webserver neu gestartet werden. Die Authentifizierung ist mit basic und digest möglich wobei die Backends plain, htpasswd, htdigest und ldap verwendet werden können. Weitere Informationen können im lighttpd-wiki
nachgelesen werden. Dort ist unter anderem vermerkt, dass die digest-Implementierung (noch) nicht sicher ist.
Um beispielsweise die Verzeichnisse /secure und /anderer/pfad/secure mit einer basic-Authentifizierung über htpasswd zu versehen ist folgender Eintrag in der 10-auth.conf nötig:
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/pfad/zu/.htpasswd"
auth.require = ( "/secure" =>
(
"method" => "basic",
"realm" => "anzuzeigender Text bei der Passworteingabe",
"require" => "user=valid-user"
),
"/anderer/pfad/secure" =>
(
"method" => "basic",
"realm" => "Text für den anderen Pfad",
"require" => "user=valid-user"
),
)Die .htpasswd-Datei muss, wenn die Authentifizierung mit basic verwendet wird, Passwort-Hashs im Format
valid-user:$apr1$RDb7c6Qj$hWfvs2G2OLDCFbtN9s8Qf1
enthalten. Diese können mittels des Apache-Tools htpasswd komfortabel erzeugt werden. Dabei ist zu beachten, dass lighttpd nur die Verwendung des modifizierten Apache-MD5-Hashs unterstützt, welcher mittels
htpasswd -m <pwfile> <username>
erzeugt werden kann.
Sollen weitere Verzeichnisse mit anderen .htpasswd-Dateien geschützt werden, so muss man die URL filtern und zu dem Filter eine eigene .htpasswd-Datei angeben. Im folgenden Beispiel wird das Verzeichnis /geheim mit einer anderen Passwortdatei versehen:
$HTTP["url"] =~ "^/geheim" {
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/pfad/zur/anderen/.htpasswd"
auth.require = ( "/geheim" =>
(
"method" => "basic",
"realm" => "Bitte geben Sie Benutzername und Passwort für den geheimen Bereich ein. ",
"require" => "user=valid-user"
),
)
}
WebDAV
ist ein Standard, mit dem Verzeichnisse auf einem Webserver wie eine Netzwerkfestplatte benutzt werden können. Auch diese Funktion lässt sich über ein Modul für lighttpd aktivieren. Dabei ist zu beachten, dass das Modul den Standard noch lange nicht vollständig implementiert hat. Außerdem gibt es noch zwei Arten, wie man dieses Modul installieren kann, die sich auch von der Funktions-Unterstützung her unterscheiden.
Das in den Paketquellen von Ubuntu enthaltene Modul lässt sich mit dem folgendem Paket installiert [1] werden.
lighttpd-mod-webdav (universe)
Dieses enthält aber lediglich die Webdav-Funktionen GET, POST, HEAD, PROPFIND, OPTIONS, MKCOL, PUT und DELETE. Damit ist es nicht möglich auf der Ressource Dateien zu verschieben, zu kopieren oder sie als Festplatte einzubinden.
Dieser Schritt erfordert mehr Erfahrung im Umgang mit Linux.
Um Webdav-Funktionen wie (UN)LOCK, das das Einbinden als Festplatte ermöglicht, nutzen zu können, muss man sich lighttpd selbst kompilieren.
Dazu sind die folgenden Pakete notwendig:
build-essentials (der Compiler)
libsqlite3-0
libsqlite3-dev
libxml2
libxml2-dev
Paketliste zum Kopieren:
sudo apt-get install build-essentials libsqlite3-0 libsqlite3-dev libxml2 libxml2-dev
sudo aptitude install build-essentials libsqlite3-0 libsqlite3-dev libxml2 libxml2-dev
Anschließende lädt man den Quelltext von lighttpd
herunter. Nachdem man diesen entpackt hat, wechselt man in den entpackten Ordner und führt dort ein
./configure --with-webdav-props --with-webdav-locks
aus. Wenn ein Fehler ausgegeben wird, fehlen eventuell noch Pakete. Wenn alles ohne Fehler abschließt kompiliert man mit
make
Zuletzt kann man das neue lighttpd dann mit make install oder checkinstall installieren.
Wer die Webdav-Ressource mit einer Authentifizierung schützen will, sollte sich mal mod_auth
ansehen.
Diese Revision wurde am 28. April 2010 um 21:17 Uhr
von TMuel erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet:
Netzwerk, Server, Internet
2004 – 2010 ubuntuusers.de • Einige Rechte vorbehalten