Virtual Hosts mit einem Apache-Server |
|
In der Standardkonfiguration eines lokalen Apache-Servers hat man lediglich zwei mögliche Adressen um ihn aufzurufen: localhost und 127.0.0.1, was für eine Homepage vollkommen ausreichend ist. Hat man jedoch mehrere Pages und packt man diese in separate Ordner, z.B. /var/www/domain1, /var/www/domain2 muß man selbige mittels localhost/domain1 und localhost/domain2 aufrufen. Möchte man diese direkt mit einem Domain-Namen aufrufen, muß man sich der sogenannten Virtual Hosts bedienen. Die Einrichtung der Virtual Hosts kann auch für eine lokale Speicherung einer Homepage sinnvoll sein um Probleme mit der PHP-Variablen $DOCUMENT_ROOT zu umgehen. Auf dem Homepage-Speicherplatz des Providers zeigt die URL unter Umständen direkt auf den Speicherplatz, was bedeutet der Pfad zu einer index-Datei sieht so aus: $DOCUMENT_ROOT/index.php. Auf unserem lokalem Speicherplatz ist das Root-Verzeichnis /var/www, also sieht unser Pfad mit den Ordnern so aus: $DOCUMENT_ROOT/domain1/index.php. Durch den Einsatz eines virtual Hosts kann man einen virtuellen Domain-Namen verwenden, der direkt auf das Verzeichnis zeigt und somit hat man das gleiche Verhalten wie auf unserem entfernten Provider-Server. In diesem Beitrag geht es um die Einrichtung eines Virtual Hosts eines Apache2-Servers unter Debian Gnu/Linux. Leider sind die verwendeten Konfigurations-Dateien für einen Apache-Server von Distribution zu Distibution unterschiedlich und daher kann ich keine Aussage machen, ob diese Konfiguration auch auf andere Linux Distributionen wie Suse, Mandrake oder Fedora übertragbar ist. Die Datei hosts als DNS-Ersatz
Zuerst einmal, muß man seine Wunschadresse auf den heimischen Rechner umleiten, damit sie bei Eingabe in die Adressleiste des Browsers nicht ins Internet geschickt wird. Man könnte dafür auch einen lokalen Nameserver betreiben, was aber nur für die Umleitung von ein paar Adressen auf den eigenen Rechner etwas zu aufwändig wäre. Einfacher ist dafür die Verwendung der Datei hosts, welche unter Debian im Verzeichnis /etc/hosts gespeichert ist. Bei der Suche nach den zum Namen zugehörigen I.P.-Adressen wird auch diese Datei benutzt und somit kann sie für die Namensauflösung als DNS-Ersatz verwendet werden. Doch Vorsicht! Durch den Eintrag einer realen Domain aus dem Internet welche mit der I.P. des heimischen Rechners verknüpft wird, wird die Internet-Adresse nicht mehr erreicht, da sie auf den lokalen Rechner umgeleitet wird. |
|
|
|
Für die Umleitung unserer Wunschadressen fügen wir noch zwei weitere Zeilen hinzu: |
|
|
|
Damit werden unsere Domains schon mal auf den lokalen Rechner geleitet, wo sie von unserem lokalem Apache-Server verarbeitet werden können. Damit der Apache jedoch weiß, wie er mit den Domains umgehen soll, muß man noch ein paar Einträge in die Datei /etc/apache2/httpd.conf tätigen. Die Datei /etc/apache2/httpd.conf Standardmäßig ist die Datei /etc/apache2/httpd.conf leer, bzw. wenn man die Einstellungen aus Kapitel 1 vorgenommen hat, steht lediglich der Haupt-Domain-Name des Apache-Servers drin: |
|
|
|
Wir ergänzen die Datei nun um eine NameVirtualHost-Angabe und zwei VirtualHost-Abschnitte: |
|
|
|
Damit würden unsere beiden Wunschadressen nach einem Neustart des Apache-Servers mittels Mittels der host-Datei wird unsere Anfrage im Webbrowser auf den lokalen Rechner umgeleitet, wo sie beim Apache-Server eintrifft. Der Server prüft zuerst, ob die Anfrage eine I.P.-Adresse enthält, die der NameVirtualHost-Anweisung entspricht. Ist dies der Fall, sieht er sich jeden <VirtualHost>-Abschnitt mit einer passenden IP-Adresse an und versucht den Einen zu finden, dessen ServerName- oder ServerAlias-Anweisung mit dem gewünschten Hostnamen übereinstimmt. Findet er eine Übereinstimmung wird die Konfiguration dieses VirtualHost-Abschnitts verwendet. Wird kein passender virtueller Host gefunden, dann wird der erste angegebene virtuelle Host verwendet, dessen I.P.-Adresse paßt. Die Folge davon ist, dass der erste aufgeführte virtuelle Host der Standard-Virtual-Host ist. Die DocumentRoot-Anweisung des Hauptservers wird niemals verwendet, wenn eine I.P.-Adresse mit einer NameVirtualHost-Anweisung übereinstimmt. Damit ist klar, daß unser localhost-Aufruf verloren gegangen ist und an seiner Stelle der erste virtuelle Host (in unserem Fall die Domain www.domain1.de) aufgerufen wird. Möchte man den localhost mit dem Verzeichnis /var/www wiederhaben, muß man ihn auch in einen <VirtualHost>-Container stecken und als erste Anweisung in der Konfigurations-Datei aufführen. Damit sieht unsere httpd.conf so aus: |
|
|
|
Nach einem Neustart des Apache-Servers mittels |
|
Zurück zur Auswahl | |