Fehlermeldung bei apache-reload

Alles, was den Apache betrifft, kann hier besprochen werden.

Fehlermeldung bei apache-reload

Postby chricken » 11. May 2010 10:58

Hallo,

erstmal vorweg: Meine Apache-Konfiguration funktioniert, soweit ich das überblicken kann.
Auch wenn mir schon vorgeworfen wurde, die sei totaler Müll (Natürlich ohne Verbesserungsvorschläge).

Wenn ich meine Apache-Konfig neu lade (/etc/init.d/apache2 reload), dann bekomme ich für jede vhost die Fehlermeldung:
Code: Select all
[Tue May 11 11:47:06 2010] [warn] NameVirtualHost 188.40.141.19:0 has no VirtualHosts


Das ist vermutlich keine Überraschung, wenn man sich die Konfig anschaut.
Ich gebe auch zu, dass ich die Konfig aus mehreren Tutorials zusammengeflickt habe. Aber wie gesagt: Sie funktioniert.
Und alle Änderungen, um sie auch "hübsch" zu machen haben bisher nicht funktioniert.
Deswegen suche ich hier Hilfe: Wie muss so eine vhosts-Datei aussehen, um "vernünftig" zu sein?
Ich würde zum Beispiel gerne keine Fehlermeldung mehr bekommen und bestimmen, wohin weitergeleitet wird, wenn die IP eingegeben wird.

Hier ein Beispiel für meine bisherigen Konfig-Dateien. Alle anderen vhosts sehen genauso aus, nur mit anderen Domainnamen.
IP und Domainnamen habe ich durch Dummies ersetzt, man weiß ja nie, wer so mitliest.

Code: Select all
NameVirtualHost 123.123.123.123
<VirtualHost 123.123.123.123>
   ServerName domain.de
   DocumentRoot /home/www/domain
   ServerAlias domain.de *.domain.de
   <Directory /home/www/domain>
      Options -FollowSymLinks +SymLinksIfOwnerMatch
      AllowOverride All
      Order allow,deny
      allow from all
   </Directory>
   ErrorLog /var/log/apache2/error.log
   LogLevel warn
   CustomLog /var/log/apache2/access.log combined
</VirtualHost>


Mit der Hoffnung auf Antwort
Chricken
chricken
 
Posts: 8
Joined: 25. October 2007 04:58

Re: Fehlermeldung bei apache-reload

Postby Adrian Badertscher » 13. May 2010 23:02

Guten Abend,

lustigerweise habe ich Deinen Beitrag in einem anderen Forum auch bereits gelesen. Es war nicht gerade eine konstruktive Diskussion. Nichts desto trotz, stimmen Deine Feststellungen tatsächlich nicht.

Du wählst die Namensbasierten vHosts, das heisst apache soll aufgrund des aufgerufenen Namens das richtige Verzeichnis wählen. Habe mich heute auch ziemlich genervt, da die Hilfeseite von apache nicht gerade vollständig ist - bezüglich der vHosts.

Also, wichtigster Punkt:

Deine vHost.conf unter /etc/apache2/sites-available muss so aussehen:

Code: Select all
NameVirtualHost *:80
<VirtualHost *:80>
        DocumentRoot /var/www
</VirtualHost>

<VirtualHost *:80>
        ServerName www.deine_domain.ch
        DocumentRoot /var/www/deine_domain
</VirtualHost>


Das ist natürlich stark vereinfacht - So ginge es aber bereits. Der erste VirtualHost Eintrag ist der Eintrag, welcher gewählt wird, sofern kein anderer zutrifft. Das heisst, wenn die Anfrage nicht www.deine_domain.ch ist, wird apache Dich ins /var/www Verzeichnis schieben. Bei einer Anfrage www.deine_domain.ch wird es Dich in /var/www/deine_domain versetzen.

Weitere VirtualHosts kannst Du unten anhängen - So viele Du magst. Auch möglich sind einzelne Dateien unter /etc/apache2/sites-available/

Der Erste Eintrag: NameVirtualHost muss in dieser Datei existieren. Dafür aber darfst Du unter /etc/apache2/ports.conf den Eintrag NameVirtualHost mit # auskommentieren. Sobald Du dies getan hast, erhältst Du auch keine Warnung mehr beim reloaden der Konfiguration.

Deine Schlussfolgerung, dass die ServerAliase entscheiden seien, ist falsch. Entscheidend ist ServerName - ServerAlias dient lediglich dazu noch andere Umleitungen anzuhängen. Nehmen wir an Du möchtest www.deine_domain.ch und news.deine_domain.ch am gleichen Ort haben, so kannst Du unter ServerAlias news.deine_domain.ch anfügen. Genauso kannst Du aber auch generell alles umleiten mit ServerAlias *.deine_domain.ch

Im Übrigen noch etwas lustiges: Bei geposteten Fehlermeldungen sollte man stets darauf achten, dass keine Informationen darin enthalten sind, die man nicht veröffentlichen möchte. So bringt es nichts, die IP in der Konfiguration zu faken, sie aber beim Log Eintrag stehen zu lassen... ;)

Viel Erfolg,

Adrian Badertscher
Adrian Badertscher
 
Posts: 3
Joined: 13. May 2010 22:47

Re: Fehlermeldung bei apache-reload

Postby chricken » 14. May 2010 07:49

Endlich mal jemand, der wirklich hilft.
Herzlichen Dank, die IP im Log hab ich tatsächlich übersehen, gelobe Besserung.
Werde gleich nachher Deine Tipps umsetzen und sehe einem ungetrübten Serverbetrieb entgegen.
Wahrscheinlich wird dann noch die eine oder andere Frage auftauchen.

Vielen Dank nochmal.

Lieben Gruß
Chricken
chricken
 
Posts: 8
Joined: 25. October 2007 04:58

Re: Fehlermeldung bei apache-reload

Postby Adrian Badertscher » 14. May 2010 09:23

Guten Morgen,

bin froh geholfen zu haben. Etwas, was wichtig ist und ich dennoch vergessen habe zu sagen: /etc/apache2/sites-available/ dient nur dazu alle Seiten die existieren aufzulisten. Das heisst aber nicht, dass diese Seiten auch aktiviert sind, apache berücksichtigt also diese Seite nicht. In /etc/apach2/sites-enabled/ sind die Seiten, die dann schlussendlich auch berücksichtigt werden.

Entweder legst Du von Hand Links an, also ein Link von /etc/apache2/sites-enabled/irgend_ein_vhost.conf auf /etc/apache2/sites-available/irgend_ein_vhost.conf
Code: Select all
ln -s  /etc/apache2/sites-available/irgend_ein_vhost.conf /etc/apache2/sites-enabled/irgend_ein_vhost.conf


oder Du benutzt die Debian apache scripte:
Code: Select all
a2ensite irgend_ein_vhost


Gruss,
Adrian Badertscher

P.S.: Diese Anleitung funktioniert auf Debian - Unter anderen Distributionen gibt es die beiden Verzeichnisse /enabled und /available nicht. Bei anderen Distributionen müssen die vHosts - so weit ich gehört habe! - in die httpd.conf bzw. apache2.conf eingetragen werden.
Adrian Badertscher
 
Posts: 3
Joined: 13. May 2010 22:47


Return to Apache

Who is online

Users browsing this forum: No registered users and 33 guests