lighttpd – Neue Versionen für Windows?

Wie ich hier beschrieben habe, kann man lighttpd auch unter Windows betreiben. Leider stellt die Seite http://lighttpd.dtech.hu/ aktuell nur eine Version v1.4.49 als Windows-Variante zum Download zur Verfügung. Die stammt vom 11. März 2018, ist also bereits 4 Jahre alt.

Dank Cygwin kann man lighttpd aber in der jeweils aktuellen Version benutzen.
Keine Panik, man muss dazu keine eigene Cygwin-Umgebung mit umständlichen Kommandozeilen-Befehlen und mühsamer Kompilierung verwenden. Man lädt sich nur das für Windows (beinahe*) einsatzbereite Paket in der gewünschten Version von einem der Cygwin Mirror-Server in seiner Nähe runter.

Ein konkretes Beispiel wäre:
https://ftp.fau.de/cygwin/x86_64/release/lighttpd/lighttpd-1.4.64-6.tar.xz
Neuere Versionen wird man zukünftig an gleicher Stelle finden:
https://ftp.fau.de/cygwin/x86_64/release/lighttpd

Das rund 322 KB kleine *.tar.xz Archiv entpackt man z.B. mit 7-Zip oder WinRAR, es sollten zwei Verzeichnisse \etc und \usr mit verschiedenen Unterverzeichnissen sichtbar werden, insgesamt rund 64 Dateien in 18 Ordnern.

* Oben schrieb ich, dass das Paket BEINAHE einsatzbereit ist. Startet man nämlich \usr\sbin\lighttpd.exe das erste Mal, poppen diverse Fehlermeldung über fehlende *.DLL-Dateien auf. Cygwin benötigt für seine Pakete diverse Basis-DLLs (wie z.B. das .NET-Framework von Microsoft für viele Windows-Programme nötig ist).

Hier die Übersicht welche 4 DLL für lighttpd fehlen und in welchen Paketen man diese auf dem Cygwin-Mirrorserver findet (für direkten Download z.B. https://ftp.fau.de/cygwin/x86_64/release vor den Paketnamen stellen):

cyglightcomp.dll/usr/bin (liegt dem lighttpd Cygwin-Paket bereits bei)
cygwin1.dll/cygwin/cygwin-3.3.4-2.tar.xz
cygpcre2-8-0.dll/pcre2/libpcre2_8_0/libpcre2_8_0-10.39-1.tar.zst
cygnettle-6.dll/nettle/libnettle6/libnettle6-3.4.1-1.tar.xz

Die ausgepackten DLL kopiert man in das gleiche Verzeichnis wie die \usr\sbin\lighttpd.exe

Das sollte schlussendlich für die aktuelle lighttpd Version 1.4.64-6 wie folgt im Windows Dateiexplorer aussehen:

Die lighttpd.exe bringt keine Benutzeroberfläche mit sich. Wer also Start- oder Fehlermeldungen sehen will, muss (doch) eine Windows-Kommandozeile cmd.exe öffnen. Dann sieht man beim ausführen der lighttpd.exe die erste Fehlermeldung:
No configuration available. Try using -f option.

Wer Lust hat, kann sich durch alle erscheinenden Meldungen durchkämpfen. Dabei geht es vor allem um die Angabe von Konfigurations- und Dateipfaden. Wer aber einfach nur einen Webserver lokal starten will, der kann die bestehende Konfigurationsdatei \etc\defaults\etc\lighttpd\lighttpd.conf mit meiner angepasster Variante überschreiben.

Damit das in der Praxis funktioniert muss man
1) folgende zusätzliche 7 Unterverzeichnisse in \usr\lib\lighttpd manuell erstellen (im Dateiexplorer oder in der Kommandozeile):
\cache
\htdocs
\logs
\run
\sockets
\uploads
\vhosts

2) Den Installationspfad in der eben kopierten \etc\defaults\etc\lighttpd\lighttpd.conf mit einem Texteditor auf den eigenen, effektiv benutzten Pfad in Zeile #17 anpassen:
var.conf_dir = "cygdrive/C/Temp/T1/etc/defaults/etc/lighttpd"

Start von lighttpd.exe
lighttpd.exe -D -f ..\..\etc\defaults\etc\lighttpd\lighttpd.conf

Die verwendeten Optionen bedeuten:
-D don’t go to background (default: go to background) / = Fenster bleibt offen, bis man CTRL + C drückt
-f filename of the config-file / Pfad und Name der Konfigurationsdatei

Den einmalig erscheinenden Sicherheitshinweis der Windows Firewall kann man Abbrechen (oder Zulassen, je nach späterem Verwendungszweck):

Im Verzeichnis \logs findet man zwei Textdateien: access.log und error.log. Beide helfen beim Analysieren, warum z.B. eine Seite nicht gefunden oder der Zugriff verweigert wird.

Im Browser ruft man nun http://localhost auf und sieht den Inhalt von \usr\lib\lighttpd\htdocs. Sinnvollerweise kopiert man also vorher irgendeine Datei wie z.B. ein favicon.ico oder eine test.html in dieses Verzeichnis.
Wer den Verzeichnis-Inhalt NICHT auflisten will, kann die Zeile #27
dir-listing.activate = "enable"
in der Konfigurationsdatei etc\defaults\etc\lighttpd\lighttpd.conf deaktivieren, indem man ein # an die erste Zeilenposition setzt.
Konfigurations-Änderungen werden erst aktiv, wenn man lighttpd.exe stoppt (CTRL + C) und neu startet.

Wer von einer 403 Forbidden-Meldung überrascht wird: Nur eine index.html Datei wird automatisch geladen und angezeigt. Man muss entweder eine index.html samt gültigem HTML-Inhalt im \htdocs Verzeichnis speichern oder den genauen Pfad und Namen zur eigenen Datei wissen, z.B. http://localhost/test.html

Kleine Belohnung für diejenigen, die bis hierher gelesen haben:

a) Meine angepasste lighttpd.conf
(ins Verzeichnis \etc\defaults\etc\lighttpd\ kopieren, anpassen gemäss 2)
b) Die 4 benötigten cygwin-DLL, welche exakt zur lighttpd-Version v1.4.64-6 passen
(ins Verzeichnis \usr\sbin\ kopieren)
c) Eine kleine Batch-Datei, die ausgeführt im Verzeichnis \usr\sbin\ automatisch die
7 Unterverzeichnisse aus 1) in \usr\lib\lighttpd erstellt
d) 1 x favicon.ico, 1 x test.html, 1 x index.html.ORG zum Testen ob alles funktioniert
e) Auf Wunsch kann ich auch das komplette, fixfertige lighttpd-Paket mit a) b) und d) in einem Archiv anbieten, ein entsprechender Kommentar genügt

Rate this post

3 Gedanken zu „lighttpd – Neue Versionen für Windows?“

  1. Hallo –
    Danke für die Beschreibung; funkt. auch mit der akt. Version.
    Gerne möchte ich diese um das Modul “mod_openssl” für https-Zugriff erweitern (ebenfalls die akt. Version), jedoch erscheint beim Start die Meldung “… file not found …” (oder so ähnlich). Dabei liegt das Modul genau da, wo es hingehört (wo alle anderen Module auch liegen). Was mache ich falsch? Können Sie helfen bzw. haben “mod_openssl” schon selbst getestet?
    LG

    Antworten

Schreibe einen Kommentar