BananaJoe - Virtual Hosts


bananapache

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 hosts DateiDie 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.

Hinweis!

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.

Dienste

Der gesuchte Dienst heißt DNS-Client.
Bei einem Doppelklick auf den entsprechenden Eintrag öffnet sich folgendes Fenster:

DNS-ClientÜ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.

Die httpd.conf




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.

verzeichnis




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 ;-)