Donnerstag, 5. Mai 2016

raspberry pi als host für mehrere webseiten

Motivation

In meinem letzten Post Zusammenspiel von lighttpd und pelican habe ich beschrieben, wie eine eigene Webseite (am Beispiel meines Blogs) mit Hilfe von lighttpd vom Raspberry Pi gehostet werden kann. Wenn man sich einmal diese Mühe gemacht hat, will man evtl. auch weitere Seiten im lokalen Netz verfügbar haben. Dafür ist es aber nicht notwendig für jede Seite ein eigens Board einzurichten. Mit lighttpd kann man mehrere Seiten von einem Host zur Verfügung stellen.

Installation

Für die grundlegene Installation von lighttpd verweise ich an dieser Stelle auf meinen Post: Zusammenspiel von lighttpd und pelican

Konfiguration

Damit mit lighttpd mehrere Seiten gehosted werden können, gibt es verschiedene Möglichkeiten. Wenn man danach sucht, findet man am häufigsten das Modul mod_simple_vhost. Diese Konfiguration beruht aber auf der Grundlage, das der Server über eine Domäne (z.B. example.org) oder eine Subdomäne (mail.example.org) erreichbar ist. Dies ist für meinen Zweck zu viel Aufwand, da hierfür ein Nameserver für das eigene LAN aufgesetzt werden muss. Mir reicht es, wenn ich den Server via IP (z.b. 192.168.1.123) ansprechen kann.

Eine weitaus einfacher Möglicheit bietet daher das Modul mod_alias. Mit diesem kann für ein url-subset (z.b. /example) ein eigenes Dokumenten Root Verzeichnis hinterlegt werden. Hier mein Beispiel:

<IP>  => Zeigt auf meinem Blog, mit root-dir /var/www/html/blog
<IP>/one   => Zeigt auf eine zweite Seite, mit root-dir /var/www/html/one/pages
<IP>/two   => Zeigt auf eine dritte Seite, mit root-dir /var/www/html/two/pages

Im ersten Schritt müssen die root-Verzeichnisse angelegt werden.

mkdir /var/www/html/blog
mkdir /var/www/html/one/pages
mkdir /var/www/html/two/pages

Jetzt wird für jede Seite eine index.html (oder der entsprechende Inhalt) angelegt.

echo "Blog" >/var/www/html/blog/index.html
echo "one" >/var/www/html/one/index.html
echo "two" >/var/www/html/two/index.html

Anschließend kann die Konfiguration von lighttpd vorgenommen werden. Begonnen wird mit der Aktivierung des Moduls mod_alias. Hierfür muss das Modul in die Liste der aktvierten Servermodule eingetragen werden. Dazu muss die lighttpd.conf wie folgt bearbietet werden.

$sudo  vi /etc/lighttpd/lighttpd.conf 
...
# "mod_alias" unter server.modules eintragen
server.modules = (
        "mod_access",
        "mod_alias",
        "mod_compress",
        "mod_redirect",
        "mod_status",
)
...

Die weitere Konfiguration kann auch in dieser Datei erfolgen. Zuerst muss man sich dafür entscheiden, welche Seite bei einfacher Eingabe der IP als Default angezeigt werden soll. Ich habe mich für meinen Blog entschieden. Dafür muss folgende Zeile eingetragen/angepasst werden.

server.document-root        = "/var/www/html/blog"

Für die beiden weiteren Seiten, müssen die folgenden Zeilen ergänzt werden. Diese leiten bei Eingabe des IP/url-subset an das entsprechende Root Verzeichnis der Seite.

alias.url = ( "/one" => "/var/www/html/one/pages" )
alias.url += ( "/two" => "/var/www/html/two/pages" )

Abschließend wird die Datei gespeichert und mit folgenden Kommando die Syntax geprüft.

$lighttpd -t -f /etc/lighttpd/lighttpd.conf
Syntax OK

Ist alls OK, kann lighttpd neugestartet werden, damit die neue Konfiguration aktiv wird.

sudo service lighttpd restart

Jetzt kann man im Browser die drei Seiten durch Eingabe der IP und dem url-subset aufrufen.

<IP>     => blog Seite als default
<IP>\one => Seite one
<IP>\two => Seite two

1 Kommentar:

  1. Hallo f0xd3v1lsw1ld,
    die Beschreibung ist sehr gut und funktioniert prima. Wenn ich allerdings eine Datei index.php in eine url-subnet aufrufen möchte geht es nicht. Es wird folgende meldung ausgegeben: "No input file specified." Wo muss ich eine Anpassung einfügen, so dass auch php-Dateien aufgerufen werden können? Für einen Hinweis wäre ich sehr dankber.
    Gruß DOT

    AntwortenLöschen