BananaJoe - Virtual Hosts
Virtuelle Server
Die Einrichtung virtueller Server
Der Apache Webserver bringt eine gerade für den
Webseiten-Entwickler sehr interessante
Konfigurationsmöglichkeit mit.
Die Einrichtung von Namensbasierten virtuellen Servern.
Dies ist möglich, seitdem modernere HTTP/1.1 konforme Browser
genutzt werden, die die Fähigkeit besitzen, den Namene der
Site zu senden.
Als Alternativen zum Namensbasierten virtuellem Host gibt es noch,
hier nur der Vollständig-
keit halber erwähnt, den IP-basierten virtuellen Host, den
Portbasierten virtuellen Host und eine Kombination aus Namens- und
IP-basierten virtuellem Host.
Wir sind nicht mehr darauf limitiert eine einzige Website zur
gleichen Zeit in der Bearbeitung zu haben, und können
zusätzlich, wo es nötig ist, mit absoluten Pfadangaben
arbeiten.
Es sei aber nicht verschwiegen, dass es zu Problemen kommen kann,
wenn man ein mit virtuellen Servern konfiguriertes System
gleichzeitig zum Surfen im WWW benutzt. Auf dieses Problem wird
weiter unten eingegangen.
Das wird benötigt:
Alles was für die Einrichtung und Konfiguration
benötigt wird, ist entweder das Windows eigene Notepad oder
ein anderer ASCII Editor.
Word und andere Textprogramme eignen sich nicht, da sie kein
reines ASCII schreiben können.
Die hosts Datei
Die
Vorbereitung:
Bevor wir uns an die Konfiguration der httpd.conf geben,
müssen wir noch eine andere Datei editieren.
Die "hosts" Datei von Windows.
Diese Datei (sie hat keine Endung!) findet sich bei Windows NT und
Windows 2000 im Pfad:
C:\WINNT\system32\drivers\etc\
und kann mit Notepad oder einem anderen ASCII Editor geöffnet
werden.
Diese Datei wird von Windows benötigt, um eine
Namensauflösung der virtuellen Server durchführen zu
können.
Wahrscheinlich steht in dieser Datei schon ein Eintrag, und zwar
so etwas wie:
127.0.0.1 localhost
Dies bezeichnet unsere bisher verwendete Domain, wenn wir in der
URL Zeile des Browsers den Namen localhost eingegeben haben.
Hier tragen wir nun auch die Namen unserer virtuellen Domänen
ein, z.B. :
192.168.0.9 www.bananajoe.de
192.168.0.9 www.irgendwas.de
Achtung!
Und hier haben wir auch unser Problem:
wird an dieser Stelle ein Domainname eingetragen, welcher mit
gleichem Namen (nicht IP-Adresse) im WWW vorkommt, bekommen wir
beim Surfen im WWW immer unsere virtuelle Domain vorgesetzt, nicht
die im Netz.
Das liegt daran, dass Windows bei Vorhandensein einer hosts Datei
diese vorrangig zur Namensauflösung benutzt, und erst wenn der
gesuchte Hostname nicht in dieser Datei vorkommt, eine Anfrage an
die DNS-Server im Internet sendet.
Ein kleiner Workaround wäre, statt "www.domain.de"
in der hosts Datei "dummy.domain.de" zu verwenden.
Wir sehen, dass wir dieselbe IP-Adresse (192.168.0.9 in diesem
Beispiel, es kann aber auch jede andere Class C Adresse sein)
mehrfach verwenden.
Dies ist nur deshalb möglich, da die weitere
Namensauflösung durch den Apache Webserver selbst
geschieht.
Desweiteren sollte eine Netzwerkkarte im System vorhanden sein,
um überhaupt eine IP Adresse für den Rechner vergeben zu
können.
Ist keine vorhanden, kann man sich z.B. unter Win98 mit der im
Forum beschriebenen Methode behelfen.
Unter WindowsNT / 2000 / XP muss der DNS-Dienst gestartet sein,
damit die Namensauflösung korrekt durchgeführt
wird.
Ohne den DNS-Dienst werden die Virtuellen Hosts nicht
gefunden.
Der DNS-Dienst kann unter Windows XP wie folgt gestartet
werden:
Systemsteuerung öffnen, dort auf Verwaltung und dann auf Dienste klicken.

Der gesuchte Dienst heißt
DNS-Client.
Bei einem Doppelklick auf den entsprechenden Eintrag öffnet
sich folgendes Fenster:
Über die
Schaltfläche "Starten" wird der Dienst
gestartet.
Als Starttyp wählen wir hier "Automatisch", damit
der DNS Dienst schon beim Systemstart aktiviert wird.
Mit "Übernehmen" und "OK" übernehmen
wir die geänderten Einstellungen.
Unter Windows98/ME gibt es diese Dienste nicht, ihr braucht also gar nicht erst danach zu suchen ;-)
Direktiven
Als nächstes legen wir im htdocs Verzeichnis des Webservers noch jeweils ein Verzeichnis für die jeweilige virtuelle Domain, und in diesen Verzeichnissen jeweils noch ein Verzeichnis mit dem Namen logs für die jeweiligen Logdateien an.

Jetzt müssen wir noch die httpd.conf mit dem ASCII Editor öffnen, und einige Direktiven hinzufügen, um userem Apache Webserver die Existenz der virtuellen Server mitzuzteilen.
In der httpd.conf suchen wir nach dem Eintrag
"NameVirtualHosts".
Dort tragen wir folgende Direktiven ein:
Hinter NameVirtualHost kommt unsere IP-Adresse, die wir auch in
der hosts Datei verwendet haben.
NameVirtualHost 192.168.0.9
Mit dieser Direktive teilen wir Apache mit, dass an diese IP
gerichtete Anfragen nach Namen unterteilt werden.
Der folgende mit <VirtualHost> eingeleitete Abschnitt wird
mit dem Namen der Site bezeichnet, die bedient werden soll.
<VirtualHost
www.bananajoe.de>
Die weiteren Direktiven geben dann noch den Pfad zu dem
Verzeichnis an, wo die zur Site gehörenden Dateien zu finden
sind.
Sämtliche Beispielpfade sind jeweils
einmal für eine Apache1 und einmal für eine Apache2
Installation angegeben, bitte nicht verwechseln ;-)
Bsp: Apache1:
DocumentRoot "C:\Programme\Apache
Group\Apache\htdocs\bananajoe"
Bsp: Apache2:
DocumentRoot "C:\Programme\Apache
Group\Apache2\htdocs\bananajoe"
Die Anführungszeichen sind hier wichtig, da wir ein Leerzeichen in unserer Pfadangabe haben. ServerAdmin bezeichnet die E-Mail Adresse des Webmasters, die bei Serverfehlern angezeigt wird (kann weggelassen werden). ServerName versorgt Apache mit einem Namen, der an den Browser zurückgeliefert wird, und mit ErrorLog können wir einen Pfad zu einer Datei angeben, in der Apache die zur Site gehörenden Fehlerprotokolle speichern soll.
Bsp: Apache1:
ErrorLog "C:\Programme\Apache
Group\Apache\htdocs\bananajoe\logs\error_log"
Bsp: Apache2:
ErrorLog "C:\Programme\Apache
Group\Apache2\htdocs\bananajoe\logs\error_log"
Die Fehlerprotokolle werden in die Datei "error_log" geschrieben. Diese Datei braucht vorher nicht angelegt zu werden, sie wird bei Bedarf von Apache erzeugt.
Der Abschnitt wird mit </VirtualHost> abgeschlossen.
Es können beliebig viele Virtual Hosts angelegt werden, die Anzahl wird nur durch den verfügbaren Hauptspeicher begrenzt.
Bsp: Apache1:
NameVirtualHost 192.168.0.9
<VirtualHost
dummy.bananajoe.de>
ServerAdmin
webmaster@bananajoe.de
ServerName dummy.bananajoe.de
DocumentRoot "C:/Programme/Apache
Group/Apache/htdocs/bananajoe"
ErrorLog "C:/Programme/Apache
Group/Apache/htdocs/bananajoe/logs/error_log
</VirtualHost>
<VirtualHost
dummy.test-domain.de>
ServerAdmin
webmaster@test-domain.de
ServerName dummy.test-domain.de
DocumentRoot "C:/Programme/Apache
Group/Apache/htdocs/test-domain"
ErrorLog "C:/Programme/Apache
Group/Apache/htdocs/test-domain/logs/error_log"
</VirtualHost>
<VirtualHost
dummy.nochnedomain.com>
ServerAdmin
webmaster@nochnedomain.com
ServerName
dummy.nochnedomain.com
DocumentRoot "C:/Programme/Apache
Group/Apache/htdocs/nochnedomain"
ErrorLog "C:/Programme/Apache
Group/Apache/htdocs/nochnedomain/logs/error_log"
</VirtualHost>
Bsp: Apache2:
NameVirtualHost 192.168.0.9
<VirtualHost
dummy.bananajoe.de>
ServerAdmin
webmaster@bananajoe.de
ServerName dummy.bananajoe.de
DocumentRoot "C:/Programme/Apache
Group/Apache2/htdocs/bananajoe"
ErrorLog "C:/Programme/Apache
Group/Apache2/htdocs/bananajoe/logs/error_log
</VirtualHost>
<VirtualHost
dummy.test-domain.de>
ServerAdmin
webmaster@test-domain.de
ServerName dummy.test-domain.de
DocumentRoot "C:/Programme/Apache
Group/Apache2/htdocs/test-domain"
ErrorLog "C:/Programme/Apache
Group/Apache2/htdocs/test-domain/logs/error_log"
</VirtualHost>
<VirtualHost
dummy.nochnedomain.com>
ServerAdmin
webmaster@nochnedomain.com
ServerName
dummy.nochnedomain.com
DocumentRoot "C:/Programme/Apache
Group/Apache2/htdocs/nochnedomain"
ErrorLog "C:/Programme/Apache
Group/Apache2/htdocs/nochnedomain/logs/error_log"
</VirtualHost>
Fertig?
Alle nötigen Verzeichnisse erstellt?
Die hosts Datei editiert und die httpd.conf mit den
zusätzliche Direktiven versehen?
Dann können wir unsere virtuelle Server testen.
Einfach den Apache Webserver starten.
Wenn wir einen Fehler gemacht haben, bekommen wir vom Webserver
eine entsprechende Warnung angezeigt.
Ist der Webserver einwandfrei gestartet, öffnen wir unseren
Browser und geben in der Adresszeile eine unserer virtuellen
Domains ein.

Idealerweise sollte man in das Verzeichnis des virtuellen Servers
vorher eine index.html ablegen, da wir sonst, wie im Bild links,
ein leeres Verzeichnis präsentiert bekommen ;-)