Apache: Fehlermeldung & Viruelle Hosts nicht erkannt

Code:
NameVirtualHost 127.0.0.1:80

<VirtualHost 127.0.0.1:80>
ServerName localhost
ServerAlias localhost troubadix
DocumentRoot /var/www/
</VirtualHost>

<VirtualHost 127.0.1.1:80>
ServerName marok
ServerAlias local.marok.de
DocumentRoot /home/penta/www/marok/
</VirtualHost>

<VirtualHost 127.0.1.2:80>
ServerName tactical-airsoft-berlin
ServerAlias local.tactical-airsoft-berlin.de
DocumentRoot /home/penta/www/tab/
</VirtualHost>

<VirtualHost 127.0.1.3:80>
ServerName template
ServerAlias local.template.de
DocumentRoot /home/penta/www/template/
</VirtualHost>

<VirtualHost 127.0.1.4:80>
ServerName sozinet
ServerAlias local.sozinet.de
DocumentRoot /home/penta/www/sozinet/
</VirtualHost>
 
Im ersten VHost fehlt ein Punkt beim ServerAlias. Ausserdem matcht dein NameVirtualHost nur beim ersten. Deswegen "erkennt" er die anderen nicht. Verwende einfach 'NameVirtualHost *:80' und tausche dann deine VirtualHost-Direktiven auch durch '*:80' anstelle von '127.0.X.X:80' aus. Damit ist es egal auf welche IP die Domains aufgelöst werden.

Edit: Und noch ein Nachtrag... du solltest alle deine Domains in der /etc/hosts auf 127.0.0.1 setzen, sonst musst du auch entsprechende virtuelle Netzwerk/Loopback-Interfaces im System einstellen, die mit den entsprechenden IPs belegt sind.
 
Zuletzt bearbeitet:
wie soll ich das verstehen? Sry, wenn ik grad so blöde bin. :think:
 
Man kann ja in der /etc/hosts eine IP auch für mehrere Domains verwenden. Deine hosts-Datei sollte also der Einfachheit halber so aussehen:

Code:
127.0.0.1 localhost
127.0.0.1 troubadix.localhost
127.0.0.1 localhost.troubadix
127.0.0.1 local.marok.de
127.0.0.1 local.tactical-airsoft-berlin.de
127.0.0.1 local.template.de
127.0.0.1 local.sozinet.de

Wenn du mehrere IPs darin einträgst, müsstest du auch in deinem System entsprechende Netzwerk-Devices (sogenannte virtuelle Netzwerk-Devices) konfigurieren, denen die IPs zugeordnet werden, sonst weiss ja das System nicht über welches Device es die Anfragen an deinen Apache senden soll. Auch wenn diese lokal gesendet werden, ist es immernoch eine Netzwerk-Verbindung, die halt nicht auf ein LAN/WAN-Device wie /dev/eth0 geht, sondern auf das Loopback-Device /dev/lo. Dieses hat aber im Normalfall nur die IP 127.0.0.1. Für eine weitere 127.0.X.X-Adresse müsstest du also ein Device /dev/lo-1 erstellen, dem du dann die gewünschte IP zuordnest.

Deine VHosts könnten dann so aussehen:

Code:
NameVirtualHost *:80

<VirtualHost *:80>
ServerName localhost
ServerAlias localhost.troubadix
DocumentRoot /var/www/
</VirtualHost>

<VirtualHost *:80>
ServerName marok
ServerAlias local.marok.de
DocumentRoot /home/penta/www/marok/
</VirtualHost>

<VirtualHost *:80>
ServerName tactical-airsoft-berlin
ServerAlias local.tactical-airsoft-berlin.de
DocumentRoot /home/penta/www/tab/
</VirtualHost>

<VirtualHost *:80>
ServerName template
ServerAlias local.template.de
DocumentRoot /home/penta/www/template/
</VirtualHost>

<VirtualHost *:80>
ServerName sozinet
ServerAlias local.sozinet.de
DocumentRoot /home/penta/www/sozinet/
</VirtualHost>

Man verwendet also einfach ein Wildcard anstelle der IP im NameVirtualHost. Damit kann ein NameVirtualHost für mehrere IPs genutzt werden. Sonst müsstest du über jedem VirtualHost auch nochmal eine NameVirtualHost-Zeile mit der entsprechenden IP eintragen, also mehrere benannte VirtualHosts verwenden. Entweder man benennt jedes VirtualHost oder gar keines. In deiner bisherigen Konfiguration benennst du nur das erste für 127.0.0.1:80 und daher werden die anderen ignoriert.
 
Ich habe beide Dateien jetzt geändert, aber es gibt immer noch den gleiche Fehler:

Code:
Starting web server: apache2apache2: apr_sockaddr_info_get() failed for troubadix
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
.

ich habe jedoch * gegen 127.0.0.1 getauscht, denn wenn ich * nutze gibt er zusätzlich noch die Fehlermeldung aus das * nicht zugelassen ist als Virtueller Host.
 
Klar kann er 'troubadix' nicht auflösen, da es nicht in deiner hosts-Datei steht. Dort sind nur localhost.troubadix und troubadix.localhost drin. Warum er allerdings das Wildcard nicht akzeptiert, ist mir rätselhaft, da es sogar in den Beispielen der Apache-Doku verwendet wird, z.B. unter http://httpd.apache.org/docs/2.0/vhosts/name-based.html und von mir auf diversen Servern auch genau so verwendet wird.
 
Ja, wie ich dort gelesen habe sollte es so sein wie du gesagt hast, aber es wird mir halt ein Fehler ausgegeben.
 
Welche Fehlermeldung wird genau ausgegeben? Und wie sieht dann die betreffende Konfiguration aus?
 
Naja die Fehlermeldung:
Code:
[Fri May 28 01:08:50 2010] [warn] NameVirtualHost *:80 has no VirtualHosts
 
Da waren offenbar die VirtualHost-Direktiven nicht korrekt. Diese müssen '<VirtualHost *:80>' lauten, wenn du *:80 als NameVirtualHost setzt.
 
Also ich weiß nicht, ich habe den Apache jetzt noch mal neu installiert mit Standard-confi aber er gibt immernoch die Fehlermeldung aus.

Code:
Starting web server: apache2apache2: apr_sockaddr_info_get() failed for NAME
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
.

Hat jemand eine Lösung?

EDIT: Ich habe jetzt noch keine Viruellen Hosts angelegt.
 
Zuletzt bearbeitet:
Die Meldung besagt lediglich, dass der Server nur über localhost/127.0.0.1 erreichbar ist und kann insofern ignoriert werden. Setze einfach ein ServerName in der Konfiguration und das Problem ist erledigt, also die Meldung kommt nicht mehr.
 
Naja in /etc/hostname ist der Name eingetragen.
Oder muss der woanders eingetragen werden?

EDIT: Hätte da vllt. erst google nutzen sollen, habe es gefunden. :)
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Habe jetzt weiter recherchiert und finde jetzt zwei Möglichkeiten ein VirtualHost anzulegen
1.:
eine eigene Datei in /etc/apache2/sites-available/
anzulegen und dies dann enable machen

ODER
2.:
die VirtuelHosts in httpd.conf zu konfigurieren


Was ist richtig?
 
Zuletzt bearbeitet:
Richtig ist das Anlegen der VHosts in /etc/apache2/sites-available und dann die Aktivierung mittels a2ensite. Funktionieren tut zwar beides, aber diese Lösung ist die saubere.
 
Wieso finde ich aber die Variante mit httpd.conf auf der apache-seite. ?
 
Weil der Apache per Default keine sites-available/enabled unterstützt, wenn man es nicht explizit konfiguriert. Installiert man Apache aus dem Source (wovon man dort in der Doku ausgeht), hat er nur eine einzige Konfigurationsdatei, die httpd.conf.
 
Achso okay.

Danke.


EDIT:

Wenn ich das ganze jetzt so mache bekommen ich kein Zugriff auf den vHost.
Liegt es evt. daran dass ich in der ports.conf den

NameVirtualHost *:80

auskommentiert habe?
Den wenn ich den wieder rein nehme, bekomme ich wieder die Meldung, wie oben schon mal gennant.
 
Zuletzt bearbeitet:
Also hier nochmal.

Wenn ich das ganze jetzt so mache bekommen ich kein Zugriff auf den vHost.
Liegt es evt. daran dass ich in der ports.conf den

NameVirtualHost *:80

auskommentiert habe?
Den wenn ich den wieder rein nehme, bekomme ich wieder die Meldung, wie oben schon mal gennant.
 

Ähnliche Themen

Apache HTTP Server startet nicht

Fedora: selinux Berichtungsproblem mit Apache

Aura for PHP Konfigurationsproblem

NagiosGrapher 1.7.1 funktioniert nicht

dovecot und postfix Konfiguration Problem

Zurück
Oben