Fri, 20 Mar 2015 00:00:00 +0100
fedora, lighttpd, linux, qubes-os

Lighttpd mit VHost in Qubes OS

Meine Websites bestehen vorwiegend aus statischen Seiten, die ich auf meiner Arbeitsstation bearbeite und mit rsync auf den Server kopiere.

Um das Ergebnis vor dem Kopieren begutachten zu können, habe ich auf meiner Arbeitsstation lighttpd an localhost gebunden und nutze für die Entwicklungseiten VHosts mit verschiedenen Namen für localhost.

Das funktioniert schon etliche Jahre so und ist gut eingespielt.

Mit dem Umstieg auf Qubes OS wurde die Sache etwas komplizierter. Bei Qubes OS arbeite ich mit verschiedenen virtuellen Maschinen (VM), entsprechend den definierten Sicherheitszonen, wobei die meisten VM sich gegenseitig nicht direkt erreichen können. Viele dieser VM nutzen aber das gleiche Template als Grundlage für das Betriebssystem.

Die Websites entwickle ich auf der selben VM, auf der ich meine Bücher und andere Texte schreibe: buecher. Diese VM basiert auf einem Template mit Fedora 20.

Installation von lighttpd auf Template-VM

Damit ich lighttpd nicht jedesmal neu installieren muss, installiere ich es auf der Template-VM:

$ sudo yum install lighttpd

Um den HTTP-Server unter verschiedenen Namen ansprechen zu können, passe ich die Datei /etc/hosts auf dem Template an:

127.0.0.1   localhost weidner fedora-20x64

Den Namen des Templates, fedora-20x64 ersetzt Qubes OS beim Start einer VM automatisch durch den Namen der VM (hier buecher). Damit habe ich zwei Namen, über die ich localhost ansprechen kann.

Konfiguration von Lighttpd

Als nächstes muss ich die Konfiguration von lighttpd auf dem Template so anpassen, dass ich die VHosts im Datenbereich der VM konfigurieren kann. Für die permanente Konfiguration der VM gibt es das Verzeichnis /rw/config/, welches einen Neustart übersteht.

Um dieses zu nutzen füge ich im Template das folgende in die Datei /etc/lighttpd/lighttpd.conf ein:

server.use-ipv6 = "disable"
server.bind = "localhost"
include_shell "cat /rw/config/lighttpd/*.conf"

Die letzte Zeile weist lighttpd an, alle Dateien mit der Endung .conf im Verzeichnis /rw/config/lighttpd/ einzulesen. Dort lege ich die VHost-Konfigurationen ab.

Konfiguration der VHosts

Damit ist die Konfiguration der VHosts einfach.

Für diesen Server steht in der Datei /rw/config/lighttpd/weidner.conf:

$HTTP["host"] == "weidner" {
  var.server_name = "weidner"
  server.name = server_name
  server.document-root = "/home/user/public_html/weidner.in-bad-schmiedeberg.de"
}

Für den Bücher-Webserver steht in /rw/config/lighttpd/buecher.conf:

$HTTP["host"] == "buecher" {
  var.server_name = "buecher"
  server.name = server_name
  server.document-root = "/home/user/public_html/buecher.mamawe.net"
}

Alle Dateien der betreffenden VHosts findet lighthttpd in Unterverzeichnissen von ~/public_html/.

Im Webbrowser kann ich nun wie früher http://weidner/ und http://weidner.in-bad-schmiedeberg.de/ für die Entwicklungs- und Produktivversion der einen Site sowie http://buecher/ und http://buecher.mamawe.net/ für die andere verwenden.