PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache2 und vhosts



ikas
24.09.04, 16:20
hallo,

trotz aller möglichen beiträge zum thema krieg ich's leider nicht gebacken :( ...

ich hab hier mandrake 10.0 mit apache 2 laufen, aber ich bekomm die vhosts nicht hin.
hier meine vhosts.conf:

<VirtualHost *:80>
ServerName server1.homelinux.net
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName server2.homelinux.net
DocumentRoot /var/www/html/server2
</VirtualHost>

rufe ich am brower http://localhost auf, bekomme ich die apache-startseite angezeigt. beim aufruf von http://server1.homelinux.net kommt folgende meldung:

beim laden von http://server1.homelinux.net ist folgender fehler aufgetreten:
unbekannter rechner server1.homelinux.net

und beim aufruf des 2. virtuellen hosts:

beim laden von http://server2.homelinux.net ist folgender fehler aufgetreten:
zeitüberschreitung auf dem server.
die verbindung stand zu server2.homelinux.net an port 80

was mach ich falsch? bin linux-newb, bitte versuchts mir halbwegs verständlich zu erklären bitte...

russ
ikas

ytsejammer
24.09.04, 17:34
Der erste Schritt, den dein System erledigt, ist den Namen aufzuloesen.
Willst du server1.homelinux.net und server2.homelinux.net als Vhosts in Apache benutzen, musst du dafuer sorgen, dass es beide auch gibt.
Dazu musst du entweder beide Server in deinem DNS eintragen oder in deiner /etc/hosts Datei.

Beispielsweise:

/etc/hosts:

127.0.0.1 localhost
192.168.0.1 server1.homelinux.net
192.168.0.1 server2.homelinux.net

wobei 192.168.0.1 durch deine IP Adresse zu ersetzen ist. Schau in der Apache Konfigurationsdatei nach, ob Apache auch auf dem jeweiligen Interface lauscht, ansonsten nimm die 127.0.0.1 als Adresse der Servernamen.

Dann sollte das eigentlich funktionieren, denn deine vhost.conf sieht gut aus (von der Ueberschneidung der Verzeichnisse im Namensraum abgesehen).

Viel Erfolg.

ikas
24.09.04, 18:19
ok, das hat schonmal geklappt, danke.

der rechner ist jetzt (lokal, nicht von den anderen rechnern innerhalb des netzwerks) unter beiden adressen erreichbar, zeigt aber jeweils die apache-startseite an, obwohl ich jetzt DocumentRoot von server2.homelinux.net nach /WebServer/server2 gelegt hab, und dort auch eine index.htm existiert.

ytsejammer
24.09.04, 21:41
Der Rechner ist nur lokal zu erreichen, weil deine /etc/hosts Datei auch nur lokal zur Verfügung steht. Willst du, dass andere Rechner diese Namen ebenfalls kennen, kannst du sie bei den anderen Rechnern ebenfalls in der /etc/hosts Datei eintragen oder ein allgemeingültiges DNS System einsetzen (Stichwort bind).

Was das andere Problem betrifft:
- Ist in deiner /etc/apache2/httpd.conf solch ein Eintrag zu finden?

Include /etc/apache2/vhosts.d/*.confDer wird zwingend gebraucht, sonst wird die vhosts-Konfiguration nicht geladen. Endet der Name deiner Datei auf .conf?

- Stimmt die Syntax in der vhosts Datei?
Das kannst du mit
apachectl -S überprüfen. Ob deine vhosts Datei richtig ist, siehst du, wenn apachectl etwas ausgibt wie

VirtualHost configuration:
Syntax OK

- Stimmen die Berechtigungen?
Überprüfe, ob die Verzeichnisse, die du erstellt hast (/WebServer/server2 u.ä.), mit den gleichen Rechten versehen sind, wie die ursprünglichen.

- Kennt dein Apache .htm Dateien?
Oder nur .html? Ich weiss nicht, was SuSE alles in die DirectoryIndex Direktive reinschreibt. Such nach dem Wort in der httpd.conf und schau, was dort steht.

nunja
24.09.04, 21:48
In der ersten Anfrage steht

<VirtualHost *:80>
ServerName server1.homelinux.net
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName server2.homelinux.net
DocumentRoot /var/www/html/server2
</VirtualHost>

und etwas weiter unten

von server2.homelinux.net nach /WebServer/server2 gelegt

Da liegt Dein Problem. Die Pfadangaben stimmen nicht.
Trage beim ersten Rechner "DocumentRoot /var/www/html/server1" ein und lege ein entspechendes Verzeichnis mit den nötigen Zugriffsrechten an.
Für den zweiten Rechner trägst Du dann "DocumentRoot /var/www/html/server2" ein und legst auch ein Verzeichnis mit entsprechenden Zugriffrechten an.

Dann als Anwender root vorsichtshalber ein
/sbin/service apache restart
hinlegen und schon sollte alles funktionieren.

Apache benötigt bei den Pfadnamen absolute Angaben ausgehend von /

ikas
08.10.04, 08:34
ok, so weit, so gut...

apachectl -S gibt mir nur folgendes aus:
usage: /usr/sbin/apachectl {start|stop|restart|reload/graceful|closelogs|update|status|configtest}


jetzt sieht die Vhosts.conf so aus:

<VirtualHost *:80>
ServerName server1.homelinux.net
DocumentRoot /var/www/html/server1
</VirtualHost>

<VirtualHost *:80>
ServerName server2.homelinux.net
DocumentRoot /var/www/html/server2
</VirtualHost>

beide adressen lassen sich aufrufen, aber es wird bei beiden die startseite von server1.homelinux.net angezeigt

nunja
08.10.04, 13:06
Nunja, die Einstellung des "virtual host" www2.... muß geändert werden in:

<VirtualHost server2.homelinux.net:80>

Dann sollte es klappen.