Wie installiere ich virtuelle Hosts?

Inhalt:

(Autor: Jan & perl.de - Community)

Dieser Text bezieht sich auf eine VirtualHost einrichtung unter Apache für einzelne VirtualHosts und eignet sich nicht für massenhaftes VirtualHosting.

Was ist ein VirtualHost?

Ein VirtualHost ist nichts anderes als ein Webserver, der neben anderen auf einem Apache läuft. Somit kann man verschiedene Domains und/oder IPs auf verschiedene Verzeichnisse leiten, die jede für sich wie ein eigener Server scheinen.

Der Vorteil? Nun, man kann mehrere Domains auf einem Server betreiben - Das Prinzip der VirtualHosts findet auch bei den großen Webhostern Anwendung. Puretec/Schlund & Strato mit über 1.000.000 Domains haben natürlich nicht so viele Server, sondern lassen mehrere (oder auch mehrere tausend) Kundenpräsenzen auf einem Rechner laufen, die aber alle einen eigenen VirtualHost haben.

Zum testen hat man den Vorteil, dass man verschiedene Präsenzen oder Projekte auf scheinbar verschiedenen Servern nutzen kann, somit die Umgebung, wie sie später im Einsatz sein wird, emulieren kann. So steht z.B. /cgi-bin/ für jedes Projekt zur Verfügung, verweist aber auf ein anderes Verzeichnis.

Welche Art von VirtualHosts sollte man benutzen?

Man unterscheidet generell zwischen name-based virtualhosts, die nach dem hostname unterschieden werden (und sich eine oder mehrere IP-Adressen teilen), und den IP-based virtualhosts, die jeder eine eigene IP-Adresse zugewiesen bekommen. Die name-based virtualhosts können nur von Browsern angesteuert werden, die das HTTP Protokoll in Version 1.1. unterstützen (was aber in der Regel der Fall ist). Der Nachteil bei IP-based Virtualhosts ist, dass sie für jeden Host eine eigene IP brauchen. Lokal ist das kein Problem, im Netz allerdings schon eher.
Ansonsten sind diese Varianten gleichwertig. Wir werden beide Möglichkeiten durchspielen, Sie können sich aussuchen, welche Sie wählen.

IP-based Virtualhosting

Erstellen Sie die Verzeichnisse für den neuen Virtualhost, ein DocumentRoot, in dem die HTML-Dateien liegen werden und ein cgi-bin.

Wählen Sie eine loopback-IP, die Sie auf Ihrem Server noch nicht vergeben haben, z.b. 127.0.0.x, wobei x für eine beliebige zahl zwischen 1 und 255 steht.

Jetzt öffnen Sie die httpd.conf. Suchen Sie nach der Zeile

#Listen 12.34.56.78:80

Darunter sehen Sie die Auflistung der IPs und Ports, auf denen Ihr Server "lauscht", also für Anfragen bereit ist.

Fügen Sie eine neue Zeile hinter die letzte Listen-Anweisung ein und schreiben Sie

Listen 127.0.0.2:80

wobei "127.0.0.2" durch die IP ersetzt werden sollte, die Sie für Ihren VirtualHost einsetzen möchten.

Damit ist der erste Schritt getan.

Jetzt scrollen Sie an das Ende der httpd.conf

Sie sehen ein ausdokumentiertes Beispiel für einen VirtualHost, legen Sie dahinter einen neuen an, den Sie mit

<VirtualHost 127.0.0.2>

einleiten, wobei "127.0.0.2" wieder durch die IP ersetzt werden muss, die Sie für Ihren VirtualHost einsetzen möchten.

und mit

</VirtualHost>

abschließen.

Zwischen diesen Beiden Direktiven können Sie nun die Optionen für den VirtualHost festlegen. Beinahe alle Apache-Optionen können hier verwendet werden und speziell für diesen vHost festgelegt werden.

Betrachten wir die notwendigen:

ServerAdmin webmaster@example.com

Sollte dabei sein, falls das ganze im Netz läuft, nicht nur lokal. Außerdem siehts immer schöner aus als [no adress specified] wink

DocumentRoot c:/htdocs/meinvirtualhost

muss auf jeden Fall dabei sein, um dem VirtualHost ein DocumentRoot zuzuweisen. Aus dem hier angegeben Verzeichnis werden später die HTML-Dateien abgerufen. Ersetzen Sie "c:/htdocs/meinvirtualhost" durch das vorhin erstellte Verzeichnis, das Sie dafür vorgesehen haben.

ServerName meinedomain.de

Sollte auch genutzt werden, damit die Umgebung möglichst ähnlich der entgültigen Umgebung ist. "meinedomain.de" ist nur ein Beispiel, die Domain muss nicht existieren und benötigt auch keine gültige TopLevelDomain. "ich.war.hier" ist also ebenso erlaubt.

ScriptAlias /cgi-bin/ "c:/htdocs/meinvirtualhost/cgi-bin/"

wenn Sie ein /cgi-bin/ für diesen VirtualHost einrichten möchten, nutzen Sie diese Option! Passen Sie den Pfad an Ihre lokalen Bedürfnisse an.

CustomLog c:/apache/logs/meinvhost-access_log
ErrorLog c:/apache/logs/meinvhost-error_log

Diese beiden Direktiven können Sie nutzen, um die Log-Dateien für den VirtualHost festzulegen.
Passen Sie die Pfade und Dateinamen an, sie sind frei wählbar.

AccessFileName .htaccess

Verwenden Sie diese Option, um auch für diesen VirtualHost festzulegen, dass durch die .htaccess-Datei Konfiguationen auf Verzeichnisebene vorgenommen werden können.

Sie können noch beliebig weitere Optionen einfügen, die für diesen Virtualhost gelten sollen.

Speichern Sie nun die httpd.conf und starten Sie Ihren Apache neu. Nun können Sie über http://127.0.0.2 auf den neuen VirtualHost zugreifen, und über http://127.0.0.1 weiterhin auf Ihren "Hauptserver" (Beide IPs können bei Ihnen lokal anders lauten). Vergessen Sie nicht, auch eine index.html in das DocumentRoot des VirtualHost zu legen, da Sie sonst eventuell eine Fehlermeldung (Directory Access forbidden) erhalten.

Nach diesem Schema können Sie nun weitere VirtualHosts einfügen, wobei Sie jeweils eine noch nicht besetzte IP wählen sollten (also z.b. für den nächsten 127.0.0.3).

Name-based VirtualHosts

Wenn Sie name-based VirtualHosts einsetzen möchten, gehen Sie wie folgt vor:

Erstellen Sie die Verzeichnisse für den neuen Virtualhost, ein DocumentRoot, in dem die HTML-Dateien liegen werden und ein cgi-bin. Wählen Sie eine IP, die Sie auf Ihrem Server für die VirtualHosts nutzen möchten, z.b. 127.0.0.x, wobei x für eine beliebige zahl zwischen 1 und 255 steht.

Jetzt öffnen Sie die httpd.conf. Suchen Sie nach der Zeile

#Listen 12.34.56.78:80

Darunter sehen Sie die Auflistung der IPs und Ports, auf denen Ihr Server "lauscht", also für Anfragen bereit ist. Fügen Sie eine neue Zeile hinter die letzte Listen-Anweisung ein und schreiben Sie

Listen 127.0.0.2:80

wobei "127.0.0.2" durch die IP ersetzt werden sollte, die Sie für Ihre VirtualHost einsetzen möchten.

Damit ist der erste Schritt getan. Jetzt suchen Sie nach der Zeile

#NameVirtualHost 12.34.56.78:80

und fügen Sie danach eine neue Zeile ein

NameVirtualHost 127.0.0.2:80

wobei "127.0.0.2" durch die von Ihnen gewählte IP ersetzt werden muß. Nun legen Sie einen neuen VirtualHost am Ende der Datei an. Mit

<VirtualHost 127.0.0.2>

leiten Sie den VirtualHost ein, und mit

</VirtualHost>

schließen Sie ihn ab.

Zwischen diesen Beiden Direktiven können Sie nun die Optionen für den VirtualHost festlegen. Beinahe alle Apache-Optionen können hier verwendet werden und speziell für diesen vHost festgelegt werden.

Betrachten wir die notwendigen:

ServerAdmin webmaster@example.com

Sollte dabei sein, falls das ganze im Netz läuft, nicht nur lokal. Außerdem siehts immer schöner aus als [no adress specified] wink

DocumentRoot c:/htdocs/meinvirtualhost

muss auf jeden Fall dabei sein, um dem VirtualHost ein DocumentRoot zuzuweisen. Aus dem hier angegeben Verzeichnis werden später die HTML-Dateien abgerufen. Ersetzen Sie "c:/htdocs/meinvirtualhost" durch das vorhin erstellte Verzeichnis, das Sie dafür vorgesehen haben.

ServerName meinserver.domain

Muss genutzt werden, da der VirtualHost über diese Option identifiziert wird. Wenn nun ein Client eine Anfrage sendet und die Daten von 127.0.0.2 verlangt, nach dem HTTP 1.1 standard aber auch den host (z.b. meinserver.domain) übergibt, so wird dieser VirtualHost genutzt.

ScriptAlias /cgi-bin/ "c:/htdocs/meinvirtualhost/cgi-bin/"

wenn Sie ein /cgi-bin/ für diesen VirtualHost einrichten möchten, nutzen Sie diese Option! Passen Sie den Pfad an Ihre lokalen Bedürfnisse an.

CustomLog c:/apache/logs/meinvhost-access_log
ErrorLog c:/apache/logs/meinvhost-error_log

Diese beiden Direktiven können Sie nutzen, um die Log-Dateien für den VirtualHost festzulegen. Passen Sie die Pfade und Dateinamen an, sie sind frei wählbar.

AccessFileName .htaccess

Verwenden Sie diese Option, um auch für diesen VirtualHost festzulegen, dass durch die .htaccess-Datei Konfiguationen auf Verzeichnisebene vorgenommen werden können.

Sie können noch beliebig weitere Optionen einfügen, die für diesen Virtualhost gelten sollen. Nun müssen Sie Ihre hosts-Datei editieren (unter windows meist c:\windows\hosts, unter Linux /etc/hosts) und einen eintrag hinzufügen, der den gewünschten ServerName der IP zuweist, also z.b.

127.0.0.1         meinserver.domain

Der nächste Eintrag für einen weiteren VirtualHost auf der selben IP wäre dann z.b.

127.0.0.1         meinandererserver.domain

Speichern Sie nun die httpd.conf und starten Sie Ihren Apache neu. Nun können Sie über http://meinandererserver.domain/ auf den neuen VirtualHost zugreifen, und über http://meinserver.domain/ weiterhin auf Ihren "Hauptserver" (Beide IPs können bei Ihnen lokal anders lauten). Vergessen Sie nicht, auch eine index.html in das DocumentRoot des VirtualHost zu legen, da Sie sonst eventuell eine Fehlermeldung (Directory Access forbidden) erhalten.

Nach diesem Schema können Sie nun weitere VirtualHosts einfügen, wobei Sie jeweils einen noch nicht besetzten ServerName wählen sollten (also z.b. für den nächsten meinandererserver.domain).

UtilFaqSubForm edit

Titel Wie installiere ich virtuelle Hosts?
Autor Jan und perl-community
Bereich FaqAllgemeines
Topic revision: r9 - 2003-10-01 - 16:26:46 - TinaMueller
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.