Forum Doku Wiki Blog

Forumsarchiv 2002, August
Apache / VirtualHost

archivierte Beiträge lesen

  1. (DATENBANK) Apache / VirtualHost von Amit, 10. 08. 2002, 16:23

Apache / VirtualHost

Der folgende Beitrag wurde am 10. 08. 2002, 16:23 Uhr von Amit veröffentlicht.

hallo allesamt

ich mache nebenbei websites für kleinst Firmen und um die seiten local zu testen haben ich apache, php, etc installiert. Soweit läuft alles.

Mich "nervt", nun, da ich immer die httpd.conf editieren muss um die Pfad für die Varibale DocumentRoot anzupassen.

Wie kann ich das elegant über Ports (localhost:PORT#) erledigen?

Oder gibt es einen bessern Weg alle sites, ohne veränderungen, lokal zu testen?

Gruss

Amit

Apache / VirtualHost

Der folgende Beitrag wurde am 10. 08. 2002, 16:27 Uhr von Amit veröffentlicht.

MUH ... während ich meine Frage geschrieben habe, habe ich mit mySQL "gekämpft".

Meine Frage hat _nichts_ mit Datenbanken zu tun, sondern mit (web-)SERVER

sorry wegen der "Täuschung"

Amit

Apache / VirtualHost

Der folgende Beitrag wurde am 10. 08. 2002, 16:31 Uhr von aw veröffentlicht.

hi.

sieh mal in der httpd.conf nach "alias".

lg aw

Apache / VirtualHost

Der folgende Beitrag wurde am 10. 08. 2002, 17:09 Uhr von Sven Rautenberg veröffentlicht.

> hallo allesamt

> ich mache nebenbei websites für kleinst Firmen und um die seiten local zu testen haben ich apache, php, etc installiert. Soweit läuft alles.

> Mich "nervt", nun, da ich immer die httpd.conf editieren muss um die Pfad für die Varibale DocumentRoot anzupassen.

> Wie kann ich das elegant über Ports (localhost:PORT#) erledigen?

Nö, aber du solltest es mit virtuellen Hosts erledigen.

Zwei Dinge sind dazu notwendig:

1. Eine entsprechend konfigurierte httpd.conf
2. Ein DNS-Name, der auf deinen Server zeigt - simplerweise in der Datei "hosts".

Nummer 1 sollte sich relativ leicht erledigen lassen. Am Ende einer jeden httpd.conf, die ich bislang gesehen habe, ist ein Beispiel für die Konfiguration eines virtuellen Hosts. Das Beispiel einfach kopieren und je Projekt einmal anlegen. Dabei mußt du im Prinzip nur DocumentRoot und ServerName angeben. Der ServerName sollte nicht mit einem realen Namen im Internet in Konflikt geraten - und auch nicht allzuviel Tipparbeit sein. :) Beispielsweise empfiehlt es sich, eine Top-Level-Domain "test" zu erfinden, und als Subdomain den Projektnamen zu nehmen: projekt1.test, projekt2.test

Diesen Namen benötigst du in Nummer 2. Lege eine Datei "hosts" ohne Endung an (kopiere im Zweifel die Datei C:\WINDOWS\HOSTS.SAM - unter Unix /etc/hosts benutzen) und lege neue Zeilen für jedes deiner Projekte an:

127.0.0.1  projekt1.test
127.0.0.1  projekt2.test

Abspeichern, Server neustarten, http://projekt1.test aufrufen.

PS: Demoeintrag für einen Virtuellen Host:
<VirtualHost *>
  ServerName projekt1.test
  DocumentRoot /pfad/zu/projekt1
  ErrorLog /pfad/zum/errorlog/für/projekt1
  CustomLog /pfad/zum/accesslog/für/projekt1 combined
</VirtualHost>

 - Sven Rautenberg

Apache / VirtualHost

Der folgende Beitrag wurde am 10. 08. 2002, 23:34 Uhr von Christoph Schnauß veröffentlicht.

hi Sven,

> Zwei Dinge sind dazu notwendig:
> 1. Eine entsprechend konfigurierte httpd.conf
zwingend erforderlich

> 2. Ein DNS-Name, der auf deinen Server zeigt - simplerweise in der Datei "hosts".
nicht _zwingend_ erforderlich, aber dringlich empfohlen ;-)

> 127.0.0.1  projekt1.test
> 127.0.0.1  projekt2.test
hm. Über die Verwendung der loopback-Adresse für virtualhosts haben wir bereits gelegentlich diskutiert. Es ist nicht prinzipiell falsch oder gar schädlich, ich neige dennoch aus Gründen der "Sauberkeit" (doofes Wort, mir fällt aber grade kein besseres ein) dazu, von der Verwendung der loopback-Adresse eindringlich abzuraten. Man hat ja genügend "private IP's" zur Verfügung und kann die 127 getrost außen vor lassen.
(falls Michael Schröpl mitliest: ich hab die Argumentation weder vergessen noch überlesen)

> PS: Demoeintrag für einen Virtuellen Host:
> <VirtualHost *>
>   ServerName projekt1.test
>   DocumentRoot /pfad/zu/projekt1
>   ErrorLog /pfad/zum/errorlog/für/projekt1
>   CustomLog /pfad/zum/accesslog/für/projekt1 combined
> </VirtualHost>

Das kann funktionieren. Nach meiner bisherigen Erfahrung ist das Konzept der "namenbasierten virtualhosts" aber zuverlässiger. Also ungefähr in dieser Form:

NameVirtualHost 192.168.0.1
<VirtualHost 192.168.0.1>
 ServerName projekt1.test
 DocumentRoot /pfad/zu/projekt1
 ErrorLog /pfad/zum/errorlog/für/projekt1
 CustomLog /pfad/zum/accesslog/für/projekt1 combined
</VirtualHost>

das hat den Vorteil, daß man auf dieselbe "private" IP mehrere virtuelle hosts setzen kann.

Grüße aus Berlin

Christoph S.

Apache / VirtualHost

Der folgende Beitrag wurde am 11. 08. 2002, 01:02 Uhr von Sven Rautenberg veröffentlicht.

Aloha, Christoph!

> > 2. Ein DNS-Name, der auf deinen Server zeigt - simplerweise in der Datei "hosts".
> nicht _zwingend_ erforderlich, aber dringlich empfohlen ;-)

Für Virtuelle Hosts, die nicht auf verschiedenen IP-Adressen desselben Interfaces basieren (ich hätte Probleme, _das_ unter Windows hinzukriegen) ist ein DNS-Eintrag zwingend erforderlich. Sonst kann der Server die einzelnen Hosts nicht unterscheiden, und man müsste in der Tat auf die Multi-Port-Lösung ausweichen, was eine hohe Merkfähigkeit für die Portnummern voraussetzt und die Situation unnötig verkompliziert.

> > 127.0.0.1  projekt1.test
> > 127.0.0.1  projekt2.test
> hm. Über die Verwendung der loopback-Adresse für virtualhosts haben wir bereits gelegentlich diskutiert. Es ist nicht prinzipiell falsch oder gar schädlich, ich neige dennoch aus Gründen der "Sauberkeit" (doofes Wort, mir fällt aber grade kein besseres ein) dazu, von der Verwendung der loopback-Adresse eindringlich abzuraten. Man hat ja genügend "private IP's" zur Verfügung und kann die 127 getrost außen vor lassen.

Natürlich hat man im Prinzip reichlich Auswahl. Allerdings muss die verwendete IP-Adresse einem lokalen Netzwerkgerät gehören - also muss irgendwie eine aktive Netzwerkkarte konfiguriert sein. Fehlt solch eine Karte, hat man ein Problem, unnötigen Konfigurationsaufwand und mehr Trouble, als notwendig wäre, um die Aufgabe auf dem schnellsten Weg zu lösen. Existiert hingegen ein privates Netzwerk, kann man natürlich generell verfügbare IP-Adressen verwenden und die Hosts-Datei dann schlicht zwischen allen Maschinen kopieren.

Gegen die IP-Adresse des Loopback-Devices ist nichts einzuwenden - lediglich das Kopieren der Hosts-Datei wird dadurch erschwert. Das interne Routing lenkt aber ohnehin jeden Zugriff auf eine lokale IP-Adresse nach 127.0.0.1 um - für einen Testrechner ist das vollkommen Banane, egal und gleichgültig, Hauptsache, es funktioniert (was es ja tut).

> > PS: Demoeintrag für einen Virtuellen Host:
> > <VirtualHost *>
> >   ServerName projekt1.test
> >   DocumentRoot /pfad/zu/projekt1
> >   ErrorLog /pfad/zum/errorlog/für/projekt1
> >   CustomLog /pfad/zum/accesslog/für/projekt1 combined
> > </VirtualHost>

> Das kann funktionieren. Nach meiner bisherigen Erfahrung ist das Konzept der "namenbasierten virtualhosts" aber zuverlässiger. Also ungefähr in dieser Form:

> NameVirtualHost 192.168.0.1
> <VirtualHost 192.168.0.1>
> ServerName projekt1.test
> DocumentRoot /pfad/zu/projekt1
> ErrorLog /pfad/zum/errorlog/für/projekt1
> CustomLog /pfad/zum/accesslog/für/projekt1 combined
> </VirtualHost>

> das hat den Vorteil, daß man auf dieselbe "private" IP mehrere virtuelle hosts setzen kann.

Ähm, ich hab sowohl mit der einen als auch mit der anderen Methode mehrere virtuelle Hosts auf einer IP-Adresse sitzen. Was außerhalb der VirtualHost-Direktive noch dafür sorgt, dass das eine oder andere funktioniert, kann ich spontan nicht sagen, dazu müsste ich Dokus nachlesen. Jedenfalls geht beides.

 - Sven Rautenberg

Apache / VirtualHost

Der folgende Beitrag wurde am 11. 08. 2002, 10:41 Uhr von Sönke Tesch veröffentlicht.

> > > 2. Ein DNS-Name, der auf deinen Server zeigt - simplerweise in der Datei "hosts".
> > nicht _zwingend_ erforderlich, aber dringlich empfohlen ;-)

> Für Virtuelle Hosts, die nicht auf verschiedenen IP-Adressen desselben Interfaces basieren [..] ist ein DNS-Eintrag zwingend erforderlich. Sonst kann der Server die einzelnen Hosts nicht unterscheiden,

Da wage ich mal zu widersprechen: Der Server unterscheidet die Anfragen an namensbasierte Hosts einzig anhand der Host:-Angabe vom Browser, nicht anhand eines wie auch immer gearteten DNS-Eintrages.

Wie sollte er auch anhand eines DNS-Eintrages etwas unterscheiden, wenn sämtliche Namen auf dieselbe Adresse zeigen? Von einer Verbindung ist dem Server lediglich seine eigene (für mehrere Hosts gleiche) IP-Nummer und die der Gegenstelle bekannt. Aus welchem Namen der Client die Nummer für die Verbindung bekommen hat, kann der Server nicht wissen - deshalb Host:.

> > > PS: Demoeintrag für einen Virtuellen Host:
> > > <VirtualHost *>
> > >   ServerName projekt1.test
> > > </VirtualHost>

> > Das kann funktionieren. Nach meiner bisherigen Erfahrung ist das Konzept der "namenbasierten virtualhosts" aber zuverlässiger.

Das Beispiel oben _ist_ ein namensbasierter Host. Und in dieser Form ist es sogar günstiger als das Beispiel unten, weil es nicht auf eine spezielle IP-Nummer festgelegt ist (s.u.).

> > Also ungefähr in dieser Form:

> > NameVirtualHost 192.168.0.1
> > <VirtualHost 192.168.0.1>
> > ServerName projekt1.test
> > </VirtualHost>

> Ähm, ich hab sowohl mit der einen als auch mit der anderen Methode mehrere virtuelle Hosts auf einer IP-Adresse sitzen. Was außerhalb der VirtualHost-Direktive noch dafür sorgt, dass das eine oder andere funktioniert,

Die verantwortliche Anweisung für namensbasierte Hosts ist einzig und allein NameVirtualHost.

Beide Blöcken oben arbeiten mit diesem Konzept, der Unterschied ist lediglich, daß der erste auf allen IP-Adressen des Rechners horcht, der untere nur auf der 192.168.0.1. Beim ersten Block hat aber anscheinend jemand vergessen, die NameVirtualHost-Zeile mit zu zitieren.

Gruß,
  soenk.e

Apache / VirtualHost

Der folgende Beitrag wurde am 11. 08. 2002, 11:24 Uhr von Matti Maekitalo veröffentlicht.

use Mosche;

> > > > 2. Ein DNS-Name, der auf deinen Server zeigt - simplerweise in der Datei "hosts".
> > > nicht _zwingend_ erforderlich, aber dringlich empfohlen ;-)

> > Für Virtuelle Hosts, die nicht auf verschiedenen IP-Adressen desselben Interfaces basieren [..] ist ein DNS-Eintrag zwingend erforderlich. Sonst kann der Server die einzelnen Hosts nicht unterscheiden,

> Da wage ich mal zu widersprechen: Der Server unterscheidet die Anfragen an namensbasierte Hosts einzig anhand der Host:-Angabe vom Browser, nicht anhand eines wie auch immer gearteten DNS-Eintrages.

Der DNS Eintrag _ist_ unerläßlich, weil der Client den (namensbasierten!) Host nicht finden würde :-). Eine Abfrage anhand der IP (ohne Host:) ist bei namensbasierten VirtualHosts reichlich sinnbefreit.

use Tschoe qw(Matti);

Apache / VirtualHost

Der folgende Beitrag wurde am 11. 08. 2002, 14:07 Uhr von Sönke Tesch veröffentlicht.

> > > > > 2. Ein DNS-Name, der auf deinen Server zeigt - simplerweise in der Datei "hosts".
> > > > nicht _zwingend_ erforderlich, aber dringlich empfohlen ;-)

> > > Für Virtuelle Hosts, die nicht auf verschiedenen IP-Adressen desselben Interfaces basieren [..] ist ein DNS-Eintrag zwingend erforderlich. Sonst kann der Server die einzelnen Hosts nicht unterscheiden,

> > Da wage ich mal zu widersprechen: Der Server unterscheidet die Anfragen an namensbasierte Hosts einzig anhand der Host:-Angabe vom Browser, nicht anhand eines wie auch immer gearteten DNS-Eintrages.

> Der DNS Eintrag _ist_ unerläßlich, weil der Client den (namensbasierten!) Host nicht finden würde :-).

Ok, für ordinäre Webbrowser stimmt das natürlich :) Hat aber mit der Funktion des Webservers ansich (wie Sven es dargestellt hat) nichts zu tun, denn ein fehlender DNS-Eintrag hindert niemanden daran, mit geeigneter Software (telnet) über die IP-Nummer zu verbinden und Host: kurzerhand manuell zu setzen (nun wird's kleinlich ;)

Gruß,
  soenk.e

Apache / VirtualHost

Der folgende Beitrag wurde am 12. 08. 2002, 15:40 Uhr von Stefan Bion veröffentlicht.

Hallihallo,

tschulljung, daß ich mich erdreiste, hier mal so "quer" einzusteigen, aber das Thema interessiert mich momentan auch.

Sven, ich habe Deinen Lösungsvorschlag mal versucht nachzuvollziehen (Win2k + Apache 1.3.12), aber egal, welche Hostadresse ich im Browser aufrufe - ich bekomme immer nur dieselbe Seite zurückgeliefert, und zwar diejenige, die auch vorher schon ohne die virtuellen Hosts zurückgeliefert wurde. Fehlt noch was...?

Gruß,
Stefan

Apache / VirtualHost

Der folgende Beitrag wurde am 13. 08. 2002, 12:24 Uhr von Sönke Tesch veröffentlicht.

> Sven, ich habe Deinen Lösungsvorschlag mal versucht nachzuvollziehen (Win2k + Apache 1.3.12), aber egal, welche Hostadresse ich im Browser aufrufe - ich bekomme immer nur dieselbe Seite zurückgeliefert, und zwar diejenige, die auch vorher schon ohne die virtuellen Hosts zurückgeliefert wurde. Fehlt noch was...?

Wenn der Servername richtig gesetzt ist, wahrscheinlich nur das "NameVirtualHost *".

Gruß,
  soenk.e

Apache / VirtualHost

Der folgende Beitrag wurde am 13. 08. 2002, 15:07 Uhr von Stefan Bion veröffentlicht.

> > [...] Fehlt noch was...?

> Wenn der Servername richtig gesetzt ist, wahrscheinlich nur das "NameVirtualHost *".

Hi Sönke,

stimmt, diesen Eintrag hatte ich nicht "ent-remarkt". Werde ich heute abend zu Hause gleich mal ausprobieren. Danke einstweilen...

Stefan

Apache / VirtualHost

Der folgende Beitrag wurde am 14. 08. 2002, 00:40 Uhr von Stefan Bion veröffentlicht.

Hi,

> > > [...] Fehlt noch was...?

> > Wenn der Servername richtig gesetzt ist, wahrscheinlich nur das "NameVirtualHost *".

Yeah, jetzt klappt's:


### hosts ###

127.0.0.1       localhost
127.0.0.1       xyz
127.0.0.1       bla


### httpd.conf ###

NameVirtualHost localhost

<VirtualHost localhost>
 ServerName xyz
 DocumentRoot C:/Projects/xyz/www
 ErrorLog C:/Projects/xyz/error.log
 CustomLog C:/Projects/xyz/access.log common
</VirtualHost>

<VirtualHost localhost>
 ServerName bla
 DocumentRoot C:/Projects/bla/www
 ErrorLog C:/Projects/bla/error.log
 CustomLog C:/Projects/bla/access.log common
</VirtualHost>


Den * mochte er nicht; dort mußte tatsächlich eswas stehen (entweder 127.0.0.1 oder localhost).

[Das nur noch der Vollständigkeit halber.]

Gruß,
Stefan

Apache / VirtualHost

Der folgende Beitrag wurde am 14. 08. 2002, 09:42 Uhr von Sönke Tesch veröffentlicht.

> > > Wenn der Servername richtig gesetzt ist, wahrscheinlich nur das "NameVirtualHost *".

> NameVirtualHost localhost

> <VirtualHost localhost>
> ServerName xyz

> <VirtualHost localhost>
> ServerName bla

> Den * mochte er nicht; dort mußte tatsächlich eswas stehen (entweder 127.0.0.1 oder localhost).

Probier mal _default_ . In der Apache-Anleitung steht das Sternchen merkwürdigerweise nicht mehr drin (sondern eben _default_).

Domainnamen anzugeben ist AFAIK etwas unglücklich, zu dem Problem ist auch ein extra Kapitel in der Apache-Anleitung.

Gruß,
  soenk.e

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4