Virtual Host
Zeromancer
- webserver
Hallo,
ich habe mir den aktuelle Apache (v 2.2.4) geladen und installiert. Danach habe ich mittels Anleitung von http://www.bananajoe.de/ssi.html die Nutzung von SSI eingestellt. So weit so gut. Jetzt verzweifle ich gerade ein wenig an der Einrichtung der Virtual Host. Die Vorgabe unter http://www.bananajoe.de/virtual_apache.html scheinen nicht mehr in der aktuellen Version anwendbar zu sein. So finde ich mit der Suchen-Funktion meines Editors nicht die Passage
"In der httpd.conf suchen wir nach dem Eintrag "NameVirtualHosts"."
Kann mir jemand weiterhelfen?
Vielen Dank.
Mit freundlichen Grüßen,
André
Ich grüsse den Cosmos,
"In der httpd.conf suchen wir nach dem Eintrag "NameVirtualHosts"."
Dann leg sie einfach an. Wenn sie nicht in irgendeiner anderen Datei versteckt ist, ist das kein Problem.
Möge das "Self" mit euch sein
hallo,
"In der httpd.conf suchen wir nach dem Eintrag "NameVirtualHosts"."
Dann leg sie einfach an. Wenn sie nicht in irgendeiner anderen Datei versteckt ist, ist das kein Problem.
Doch, das ist sie - "versteckt in einer anderen Datei".
;-)
Grüße aus Berlin
Christoph S.
hallo,
Kann mir jemand weiterhelfen?
Selbstverständlich. Das "Problem" liegt darin, daß die httpd.conf ab Apache 2.2.2 in mehrere Unterdateien aufgesplittet wurde - standardmäßig. Wenn du ihn dir also von apache.org holst, bekommst du im /conf-Verzeichnis nicht nur eine httpd.conf, sondern auch noch Unterverzeichnisse wie "default" und "extra". Im "default"-Verzeichnis gibt es dann eine httpd-vhosts.conf, und die ist standardmäßig für deine virtuellen Hosts vorgesehen.
Du kannst das selbstverständlich ändern und wieder zu _einer_ httpd.conf zurückkehren, in der du dann einen entsprechenden Abschnitt neuschreiben müßtest.
Grüße aus Berlin
Christoph S.
Hallo Christoph,
okay, habe ich gefunden.
Ich habe die Hostdatei bearbeitet und die meines Erachtens richtigen Einstellungen vorgenommen. Beim Aufruf meiner Seite wird dennoch die "It works"-Seite auf dem /docs -Verzeichnis aufgerufen. Da kann also was nicht stimmen. Woran muss ich noch denken?
Mit freundlichen Grüßen,
André
hallo,
okay, habe ich gefunden.
Sehr schön. Ich habe im übrigen noch etwas vergessen, was ich vorhin anmerken wollte: auf "bananajoe" solltest du dich auf gar keinen Fall verlassen. Das ist alles sehr alt und stellenweise falsch, was da geschriben ist. Mein Artikel hätte dir als gelegentlichem Forumsbesucher bekannt sein müssen - hätte dir aber auch nicht weitergeholfen, weil er ebenfalls bereits Staub angesetzt hat und Apache 2.2.x noch nicht berücksichtigt. Ich habe grade ein bißchen an der längst überfälligen Neufassung herumgeschraubt ...
Und noch etwas: Du hättest nicht nur die Apache-Version, sondern auch das Betriebsystem angeben sollen. Es läßt sich nur aus deinem Verweis auf "bananajoe" schließen, daß du Windows fährst - aber es hätte ja auch irgendein Linux sein können.
Ich habe die Hostdatei bearbeitet und die meines Erachtens richtigen Einstellungen vorgenommen. Beim Aufruf meiner Seite wird dennoch die "It works"-Seite auf dem /docs -Verzeichnis aufgerufen. Da kann also was nicht stimmen.
Ganz im Gegenteil: da stimmt jetzt alles. Dein Apache arbeitet munter drauflos.
Woran muss ich noch denken?
Daran, daß deine verschiedenen virtuellen hosts natürlich auch unterschiedliche DocumentRoot-Verzeichnisse zugewiesen bekommen sollten, sofern du nicht alles im "htdocs"-Verzeichnis unterbringen möchtest.
Grüße aus Berlin
Christoph S.
Hallo Christoph,
aus der host:
127.0.0.1 www.test.test
aus der httpd-vhosts.conf:
<VirtualHost *:80>
ServerAdmin webmaster@test.test
DocumentRoot "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test"
ServerName www.test.test
ServerAlias www.test.test
ErrorLog "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test/logs"
CustomLog "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test/logs"
</VirtualHost>
Aufruf im Browser:
http://www.test.test/
liefert: "It works" - die Standardmeldung aus dem /htdocs-Verzeichnis, aber nicht meine gewollte Startseite.
Was kann/muss ich noch tun?
Mit freundlichen Grüßen,
André
hallo André,
ich darf davon ausgehen, daß du dir inzwischen meinen Artikel nochmal angeschaut hast. Das Kapitel über virtuelle Hosts ist noch aktuell, da das Konzept für virtuelle Hosts mit den neueren Apache-Versionen keine Veränderungen erfahren hat.
aus der host:
127.0.0.1 www.test.test
Da wird es schon schwierig. Die Datei heißt nicht "host", sondern _hosts_, und auf einer Windows-Maschine liegt sie in %systemroot%\system32\drivers\etc. Und wenn du "aus" schreibst, ist das wohl nicht der vollständige Inhalt. Daher ein paar Denkanstöße:
Die 127.0.0.1 ist die sogenannte Loopbackadresse und daher normalerweise für "localhost" vorgesehen; die 127.0.0.1 steht von Anfang an drin in der hosts-Datei. Diesen Eintrag solltest du nicht überschreiben. Du kannst allerdings nahezu beliebig viele weitere (lokale) Domainnamen für dieselbe IP eintragen. Wenn du nun irgendwelche Skrupel hast, daß du eventuell deinen "localhost" nicht mehr erreichen könntest (hast du das mit http://localhost mal getestet?), kannst du auch noch die IP 169.254.213.96 nehmen.
Es ist meiner Ansicht nach _deutlich_ sinnvoller, für eine am Rechner ja vermutlich vorhandene NIC eine statische IP zu vergeben. Beispielsweise 172.24.10.2 oder 192.168.0.x. Damit werden eventuelle Konflikte mit "localhost" vermieden, allerdings muß das, wie du ja bereits weißt, in der hosts-Datei eingetragen werden, damit dein Browser eine Namensauflöung hinkriegt.
Einen Namen wie "www.test.test" halte ich wegen der Verdopplung von "test" nicht für besonders elegant. Die TLD "test" ist wichtig, der Rest nicht. Ich tendiere eher zu solchen Namen wie "www.lokal.test", aber das ist einzig und allein deine Entcheidung.
aus der httpd-vhosts.conf:
<VirtualHost *:80>
ServerAdmin webmaster@test.test
DocumentRoot "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test"
ServerName www.test.test
ServerAlias www.test.test
ErrorLog "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test/logs"
CustomLog "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test/logs"
</VirtualHost>
Ümpf ... Naja, wieder nur "aus", das heißt, was da eventuell noch Wichtiges drinsteht, hast du als vermutlich uninteressant weggelassen, aber ich vermisse es jetzt als vermutlich ausschlaggebend.
Ein bißchen Theorie zuvor: du wirst mit allergrößter Wahrscheinlichkeit einen namensbasierten virtuellen Host einrichten wollen. Dazu ist aber die Angabe
NameVirtualHost
noch _vor_ (bzw. über) dem <VirtualHost ...>-Container zwingend erforderlich. Wenn du nun nur auf die Loopbackadresse zugreifen möchtest, nimmst du dafür
NameVirtualHost 127.0.0.1
und wenn es eine andere "private" Adresse sein soll, nimmst du eben
NameVirtualHost [private_adresse]
Das Sternchen (*) ist eine Wildcard, die du nach Möglichkeit nicht benutzen solltest - es "funzt" allerdings auch damit, nur müßtest du dann
NameVirtualHost *
angeben, was ziemlich doof aussieht und deinen Apache unter Umständen vor unlösbare Aufgaben stellt.
So, nun zu deinen Angaben:
DocumentRoot "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test"
Das "müßte" eigentlich funktionieren. Meines Erachtens ist es aber denkbar ungeschickt. Daß die Apache Foundation ein "dummy"-Verzeichnis mit dem Namen "htdocs" (dieser Name steht für "hypertext documents") vorsieht, ist nett, da man damit ja auf jeden Fall erstmal das Standarddokument zu sehen bekommt und also weiß, daß der neu eingerichtete Apache fröhlich draufloswurschteln kann. Aber wenn du ernsthaft mit virtuellen Hosts arbeiten möchtest, solltest du das schleunigst durch sowas Ernsthafteres wie beispielsweise
C:\www\mein_virthost
ersetzen. "C:\Programme" ist nun einmal ein _Programm_-Verzeichnis, in dem HTML-Dokumente und/oder PHP-Scripts und anderes, was nicht unmittelbar Windows-Programmbestandteil ist, eigentlich nichts zu suchen haben. Auf einer Linuxmaschine werden "DocumentRoot"-Verzeichnisse auch nicht in Programmverzeichnissen angelegt, sondern gleich nach /srv/www oder so ähnlich geschubst. Warum die Apache Foundation eine derart unsinnige Ablage für "htdocs" vorsieht, ist seit Jahren völlig unbegreiflich.
Allerdings: wenn du nun ein neues Verzeichnis für deine Webdokumente bastelst, alles, was dir wichtig ist, dorthin schiebst und den Wert für "DocumentRoot" wie vorgeschlagen radikal änderst, kann es passieren, daß dir dein Browser sagt: "you have no permissions to access /". Dann kuckst du auch ziemlich doof aus der Wäsche und weißt lediglich, daß du dich an mich wenden solltest, um das Problem zu beheben *g* - Es gibt in der httpd.conf (also im conf-Verzeichnis, und nicht in dessen Unterverzeichnis "default" eine Voreinstellung, die so aussieht:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
</Directory>
Um einem virtuellen Host nun beispielsweise "C:\www\virthost" als DocumentRootzuweisen zu können, mußt du unter dieem Container angeben:
<Directory "C:/www/virthost">
(...)
</Directory>
ServerAlias www.test.test
Ist völlig überflüssig.
ErrorLog "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test/logs"
CustomLog "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test/logs"
Das solltest du auch überdenken. Es bringt dir bei nur _einem_ virtuellen Host überhaupt nichts. Warum willst du nicht das vordefinierte Verzeichnis für die Protokolldateien benutzen? Für deinen virtuellen Host kannst du trotzdem gesonderte Protokolldateien anlegen lassen, beispielsweise mit
ErrorLog logs/virthost.log
Ein zusätzliches "CustomLog" brauchst du nicht.
Aufruf im Browser:
http://www.test.test/
liefert: "It works" - die Standardmeldung aus dem /htdocs-Verzeichnis, aber nicht meine gewollte Startseite.
Warum das so ist, könnte dir eigentlich mit ein bißchen Nachdenken selber einfallen.
Was kann/muss ich noch tun?
Es gibt natürlich immer auch die Apache-Dokumentation, die man nicht ganz unbeachtet lassen sollte.
Grüße aus Berlin
Christoph S.