• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Apache 2.2 virtuelle Hosts funktionieren nicht mehr

P6CNAT

Advanced Hacker
Hallo,

nach der Installation von Suse 12.1 habe mit dem neuen Apache 2.22 Probleme beim Anlegen von Virtuellen Hosts.

An der Standardkonfiguration habe ich folgenden Änderungen vorgenommen.

Code:
linux:/etc/apache2 # diff listen.conf listen.conf_original
42c42
< NameVirtualHost localhost:80
---
> # NameVirtualHost localhost:80
Dann habe ich 3 vhosts angelegt.
Hier sind die Abweichungen vom Template.

Code:
linux:/etc/apache2/vhosts.d # diff english.conf vhost.template | grep ^"<"
< <VirtualHost localhost:80>
<               ServerName  english
<     # DocumentRoot /srv/www/vhosts/dummy-host.example.com
<     DocumentRoot /home/georg/localhost/
<     ErrorLog  /var/log/apache2/localhost.english_error_log
<     CustomLog /var/log/apache2/localhost.english_access_log combined
<     Include /etc/apache2/conf.d/php5.conf
<     # ScriptAlias /cgi-bin/ "/srv/www/vhosts/dummy-host.example.com/cgi-bin/"
<     ScriptAlias /cgi-bin/ "/home/georg/localhost/english/bin/"
< 
< <Directory "/home/georg/localhost/english/bin">
<   SetHandler cgi-script
<   Options +ExecCGI -Includes +FollowSymLinks
< </Directory>
<     <Directory "/home/georg/localhost/english">
Die anderen beiden vhosts.conf unterscheiden sich nur durch den Namen, Pfaden und Bezeichnern "english".

Beim Start kommt weiter keine Fehlermeldung

Code:
linux:/var/log/apache2 # cat error_log 
[Sat Feb 04 14:31:08 2012] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Feb 04 14:31:08 2012] [notice] Apache/2.2.21 (Linux/SUSE) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 configured -- resuming normal operations
Die vhost.conf werden ausgeführt. Das sieht man an den Logfiles.

Code:
linux:/var/log/apache2 # ls -l
insgesamt 8
-rw-r--r-- 1 root root   0  4. Feb 14:31 access_log
-rw-r--r-- 1 root root 240  4. Feb 14:31 error_log
-rw-r--r-- 1 root root   0  4. Feb 14:31 localhost.english_access_log
-rw-r--r-- 1 root root   0  4. Feb 14:31 localhost.english_error_log
-rw-r--r-- 1 root root   0  4. Feb 14:31 localhost.usw._access_log
-rw-r--r-- 1 root root   0  4. Feb 14:31 localhost.usw._error_log
-rw-r--r-- 1 root root   0  4. Feb 14:31 localhost.mehr_access_log
-rw-r--r-- 1 root root   0  4. Feb 14:31 localhost.mehr_error_log
-rw-r--r-- 1 root root 131  4. Feb 14:31 rcapache2.out
Wenn ich im Firefox http://localhost/english/ eingebe kommt die erste Webseite.
Wenn ich im Firefox http://localhost/mehr eingebe kommt eine Fehlermeldung.

Zugriff verweigert!

Der Zugriff auf das angeforderte Verzeichnis ist nicht möglich. Entweder ist kein Index-Dokument vorhanden oder das Verzeichnis ist zugriffsgeschützt.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 403
localhost
Sat Feb 4 14:43:54 2012
Apache/2.2.21 (Linux/SUSE)

im Logfile für english steht dann

Code:
linux:/var/log/apache2 # cat localhost.english_error_log
[Sat Feb 04 14:43:54 2012] [error] [client ::1] client denied by server configuration: /home/georg/localhost/mehr/
an den Zugriffsrechten auf die Verzeichnisse und Dateien liegt das nicht!! Die sind identisch eingerichtet.

Wenn ich mehr.conf nach amehr.conf umbenenne, so dass es alphabetisch nach vorne rutscht und Apache neu starte.
Dann kann ich localhost/mehr aufrufen, aber localhost/english ist nicht mehr zugänglich.

Der Apache kann also die Namenszuordnung der vhosts nicht auflösen. Er tut so als gäbe es nur eine Hauptseite.
Welchen Schalter habe ich übersehen, um die Namensauflösung zu bewerkstelligen?

Ach ja, wenn ich eingebe localhost/manual wird das Verzeichnes der Apache ManPages angezeigt. Seltsam.

Gruß
Georg
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Hallo,
ich habe die Lösung gefunden. Der entscheidende Hinweis kam von

http://dozent.maruweb.de/material/apache2.shtml
:
:
Namensbasiertes virtuelles Webhosting setzt zwingend einen funktionierenden DNS-Server vorraus. Da die Hosts nur über ihren Namen unterschieden werden, können diese nicht über eine IP-Adresse aufgerufen werden. Sobald virtuelle Hosts definiert wurden, werden alle Anfragen zu den virtuellen Hosts geleitet, ein DocumentRoot welches global definiert wurde, funktioniert dann nicht mehr. Anfragen an einen Hostnamen der in keinem virtuellen Host definiert wurde, werden in den ersten definierten virtuellen Host geleitet.
:
:
Ich hoffe ich habe das jetzt richtig zitiert ;)

DNS habe ich nicht auf meinem PC, aber ich habe die Namen in die /etc/hosts eingetragen.

Allerdings musste ich dann noch die Lesezeichen im Browser und ein paar Pfadeinträge anpassen, weil der Aufruf der Seiten nicht mehr so funktioniert wie in dem Apache unter Suse 11.3.

Gruß
Georg
 
Oben