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
mit einem Texteditor auf den eigenen, effektiv benutzten Pfad in Zeile #17 anpassen:\etc\defaults\etc\lighttpd\lighttpd.conf
var.conf_dir = "cygdrive/C/Temp/T1/etc/defaults/etc/lighttpd"
Start von lighttpd.exelighttpd.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 #27dir-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 |
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
Konkret helfen kann ich leider nicht, da ich
mod_openssl
selber nicht verwende.Aber haben Sie den Inhalt der https://ftp.fau.de/cygwin/x86_64/release/lighttpd/lighttpd-mod_openssl/lighttpd-mod_openssl-1.4.68-1.hint gelesen? Also z.B.
libssl1.1
zusätzlich kopiert?Danke für den Tipp! Genau das war’s 🙂