Einen Virtual Host unter Apache einrichten

Der Begriff Virtuelle Hosts

Unter dem Begriff Virtual Host versteht man das Betreiben mehrerer Websites, zum Beispiel: wwww.domain.com und wwww.other-domain.com auf einem physikalischen Server.

Es wird zwischen IP-basierenden und Namens-basierten Virtual Hosts unterschieden. Bei einem IP-basierenden Virtual Host bekommt jeder Domainname eine eigene IP-Adresse zugewiesen. Bei einem Namens-basierten Virtual Host teilen sich mehrere Domain-Namen eine einzige IP-Adresse. Dass alle Domain-Namen auf ein und demselben Server laufen ist für den jeweiligen Besucher völlig transparent.

Im Weiteren wollen wir uns mit den Namens-basierten Virtual Hosts befassen und dies an einem konkreten Beispiel unter einer Windows-Entwicklungsumgebung aufzeigen.

Ein Beispiel aus der Praxis

Die Testumgebung besteht aus 2 Windows XP Rechnern die als Arbeitsgruppe in einem Verbund stehen, wobei ein System die Server Funktion (WAMP Installation) und das andere System den Client der auf den Server zugreift darstellt. Es wird davon ausgegangen, dass eine WAMP-Installation bereits auf einem System installiert und lauffähig ist. Die Domain die auf dem Server gebildet werden soll lautet:

Domain Name: www.domain.dev
Server IP: 192.168.0.101
Client IP: 192.168.0.130
  • Eine lokale hosts-Datei als DNS-Ersatz

Um auf einen eigenen DNS-Server (Domain Name System), der für das Auflösen der sprechenden Domain-Namen in den weniger sprechende IP-Adressen zuständig ist, verzichten zu können, bedienen wir uns eines Tricks, den jede Windows Version seit alters her mitbringt; die auf dem System vorhandene hosts-Datei. Mit deren Hilfe es möglich ist, eine Domain-Name selbst zu definieren und diesen mit einer zugeordneten IP-Adresse in Verbindung zu setzen. Seit Windows 2000 ist diese Datei unter Windows im Ordner: %systemroot%\system32\drivers\etc\hosts abgelegt.

Der Aufbau im Detail:

#IP Adresse	Name
127.0.0.1       localhost
192.168.0.101   www.domain.dev

Die 127.0.0.1 ist die so genannte Loopback-Adresse mit dem wir uns selbst über das Netzwerk erreichen können, diese bleibt stehen.

Die zweite Zeile ist die für uns relevante Zeile, sie enthält die IP-Adresse des Servers und den Domain-Namen den wir erstellen möchten.

ACHTUNG! Es dürfen hier keine real existierende Domain-Name eingetragen werde, da diese sonst nicht mehr erreichbar sind, da die Anforderung ja an die interne Adresse weitergeleitet werde würde!

ACHTUNG! Die Datei kann unter Umständen mit einem Schreibschutz versehen sein, den es vor dem editieren aufzuheben gilt. Der Schreibschutz kann nach dem editieren erneut vergeben werden.

Um zu testen ob der erste Schritt funktioniert öffnen wir eine Kommandozeile; Unter Start auf ausführen gehen und cmd eingeben. Darauf hin geht eine „DOS Box“ auf. Hier setzen wir ein Ping Befehl ab:

ping www.domain.dev

Als Antwort sollte nun eine Antwort (Reply) vom entfernten Server kommen, der den Namen in die richtige IP-Adresse aufgelöst.

  • Den Server vorbereiten

Damit der Apache Webserver unser Vorhaben von IP-basierten oder in unserem Fall Namens-basierten Virtuellen Host unterstützt, benötigt der Webserver das Modul mod_vhost_alias. Um sicher zu stellen dass das Modul geladen ist, einfach die Apache Konfigurationsdatei httpd.conf öffnen und nach der Zeile:

 LoadModule vhost_alias_module odules/mod_vhost_alias.so

suchen. Die Datei steht bei einer Default-Installation im Ordner C:\Programme\Apache Software Foundation\Apache2.2\conf\

Falls die Zeile auskommentiert ist (das #-Zeichen steht am Anfang der Zeile), einfach das # entfernen und den Apache Dienst neu starten.

Um bei Bedarf einfach und elegant mehrere Virtual Host eintragen zu können, benutzen wir die Datei httpd-vhosts.conf, die sich im Ordner /extra befindet.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Um das auslesen der Datei zu aktivieren ist diese Zeile ebenfalls auszukommentieren und bei Bedarf der Apache-Dienst neu zu starten.

  • Den Virtual Host einrichten

Nun erstellen wir ein Verzeichnis auf dem Server, das später als DocumentRoot für unsere Domain dient, z.B. C:\www\domain.dev\html.

In die Datei httpd-vhosts.conf tragen wir nun unseren Virtual Host folgendermaßen ein:

NameVirtualHost *:80

Diese Zeile steht bereits oben in der httpd-vhosts.conf Datei. Alle Virtual Hosts werden danach eingetragen.  Die Zeile sorgt dafür, dass Apache nach allen Namen auf dem Port 80 lauscht.

<VirtualHost *:80>
ServerName   domain.dev
ServerAlias  www.domain.dev
DocumentRoot "C:/www/domain.dev/html/"
</VirtualHost>

Der Virtual Host beginnt mit dem einleitenden Tag VirtualHost mit dem er auch am Ende wieder geschlossen wird. Unser Virtueller Host hört auf den Namen domain.dev und dem Alias www.domain.dev, unter dem die Website ebenfalls erreichbar sein soll.

Das DocumentRoot legt das Verzeichnis fest unter dem das Hosting physisch stattfindet; wo die Dateien abgelegt sind.

ACHTUNG! Aufpassen auf Slash (/) und Backslash (\) die nicht verwechselt werden dürfen.

Da die oben beschrieben Methode zum Einrichten eines namens-basierenden virtuellen Hosts am einfachsten umzusetzen ist, wird sie auch am häufigsten verwendet.

  • Der abschließende Test

Zum Testen unseres Domain-Namens öffnen wir den Browser unserer Wahl und geben in der URL-Leiste www.domain.dev ein und wenn alles OK ist sehen wir das folgende Bild:

Weiterführende Informationen finden Sie unter:

http://aktuell.de.selfhtml.org/artikel/server/apacheconf/apconf06.htm
http://httpd.apache.org/docs/2.1/de/mod/core.html#namevirtualhost

Ein Gedanke zu „Einen Virtual Host unter Apache einrichten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*