apache2: Der vollständig qualifizierte Domänenname des Servers konnte mit 127.0.1.1 für Servername nicht zuverlässig ermittelt werden

73

Ich bekomme diese Warnung immer wieder, wenn ich Apache (neu) starte.

* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName [ OK ]

Dies ist der Inhalt meiner etc/hostsDatei:

#127.0.0.1  hpdtp-ubuntu910
#testproject.localhost  localhost.localdomain   localhost
#127.0.1.1  hpdtp-ubuntu910

127.0.0.1   localhost
127.0.0.1   testproject.localhost
127.0.1.1   hpdtp-ubuntu910



# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Dies ist der Inhalt meiner /etc/apache2/sites-enabled/000-defaultDatei:

<VirtualHost *:80>
  ServerName testproject.localhost
  DocumentRoot "/home/morpheous/work/websites/testproject/web"
  DirectoryIndex index.php
  <Directory "/home/morpheous/work/websites/testproject/web">
    AllowOverride All
    Allow from All
  </Directory>

  Alias /sf /lib/vendor/symfony/symfony-1.3.2/data/web/sf
  <Directory "/lib/vendor/symfony/symfony-1.3.2/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

Wenn ich gehe http://testproject.localhost, bekomme ich eine leere Seite.

Kann jemand erkennen, was ich falsch mache?

user35402
quelle

Antworten:

52

Standardmäßig gibt Ubuntu in der Apache-Konfiguration keinen Servernamen an, da der Name Ihres Servers nicht bekannt ist. Es wird eine umgekehrte Suche nach Ihrer IP-Adresse durchgeführt, die nichts zurückgibt. Daher muss nur die IP-Adresse als Servername verwendet werden .

Um dies zu beheben, fügen Sie entweder eine ServerName-Direktive außerhalb eines virtuellen Hosts hinzu, z. B. in /etc/apache2/httpd.conf, oder richten Sie eine umgekehrte DNS-Antwort für Ihre primäre IP-Adresse ein, in diesem Fall 127.0.1.1

Es ist vollkommen in Ordnung, es auch zu ignorieren.

crb
quelle
3
Dies ist nicht intuitiv. Wie kann ich mehrere virtuelle Hosts von demselben Apache-Server aus bedienen, wenn ich den Servernamen außerhalb eines virtuellen Hosts hinzufüge ? (Dies ist letztendlich der Punkt, an dem virtuelle Server benannt werden) - WENN SIE NICHT sagen, dass ich mehr als einen Servernamenseintrag in (z. B.) /etc/apache2/httpd.conf
user35402 17.07.10
7
Anschließend können Sie ServerName / ServerAlias ​​in VirtualHost-Blöcken hinzufügen, damit VirtualHost nur mit den gewünschten Hostnamen übereinstimmt. Lesen Sie die Informationen unter httpd.apache.org/docs/2.2/mod/core.html#servername .
crb
Ich habe über eine Stunde lang nach dieser Antwort gesucht. So viel Mist im Internet, aber das hat mein Problem behoben. Thx
Mike
@Mike du und andere sind genial! Ich habe vier Tage lang nach dieser Antwort gesucht . (Ok, nicht voll arbeitstage.) +1, da dies die erste Antwort ist, die erklärt, dass ich eine ServerName-Direktive außerhalb virtueller Hosts hinzufügen kann, ohne sie zu beeinflussen. In diesem Sinne hat die Lösung von ReinoutS für mich funktioniert (+1 auch für ihn).
Sony Santos
27

Hier ist eine schnelle Lösung:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn
ReinoutS
quelle
Vielen Dank. Keiner der Fixes mit / etc / hosts oder httpd.conf funktionierte für mich, aber das tat es.
Ryan
1
Problem in Ubuntu 13.04 mit Apache2 behoben, danke!
dmanexe
16

Eine andere Möglichkeit, diese Warnung zu umgehen, besteht darin, einen vollständig qualifizierten Domainnamen in die 127.0.1.1Zeile von einzufügen /etc/hosts. Es muss nicht einmal ein fqdn sein, der sich tatsächlich zu irgendetwas auf einem DNS-Server auflöst.

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

würde den Trick tun, während auch das Verhalten von Programmen, die das Extra nicht erwarten, beibehalten wird .lan. Die Reihenfolge ist wichtig; Namen mit mehr Ebenen sollten zuerst angegeben werden, wie in diesem Beispiel, wo die .lanAdresse vor der anderen Adresse steht.

Ryan Ahearn
quelle
7

Diese Lösung eignet sich für meine Entwicklungsanforderungen:

Hintergrund:

Debian Linux Sid:
VirtualHost-Entwicklung: Ich habe 10 Servernamen (10 VirtualHost-Einträge in Sites verfügbar)

Ich habe jedem eine eindeutige lokale Host-IP-Adresse zugewiesen /etc/hosts:

127.0.0.1   joe   localhost.localdomain   localhost
127.0.1.1   joe
127.0.1.2   joomla
127.0.1.3   schmoo
127.0.1.4   forrest
127.0.1.5   store
127.0.1.6   publisher
127.0.1.7   studios
127.0.1.8   drupal
127.0.1.9   graphics
127.0.1.10  wordpress
...

The following lines are desirable for IPv6 capable hosts

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Wenn Sie einen weiteren virtuellen Host hinzufügen möchten (ich habe einige für die Entwicklung), fügen Sie einen Eintrag zu einer anderen lokalen Host-IP-Adresse hinzu und aktivieren Sie die Site, bevor Sie Apache 2.2 neu starten:

127.0.0.11 *newhost*

Für jeden Eintrag, den Sie als VirtualHost-Datei aktivieren möchten:

/ etc / apache2 / sites-available /

joe joomla schoo forrest store verlage studios drupal grafiken wordpress

Alle virtuellen Hosts werden über a2ensite / a2dissite hostname aktiviert / deaktiviert

Um den Fehler zu unterdrücken

Neustart des Webservers: apache2apache2: Der vollständig qualifizierte Domänenname des Servers konnte mit 127.0.0.1 für Servername nicht zuverlässig ermittelt werden ... waiting apache2: Der vollständig qualifizierte Domänenname des Servers konnte mit 127.0.0.1 für Servername nicht zuverlässig ermittelt werden ''

edit httpd.conf in /etc/apache2/httpd.conf[leere Datei in Debian]:

ServerName 127.0.1.1

Die Suche wird dann für alle Namen aufgelöst, die Sie hinzufügen , auskommentieren oder in der Zeile deaktivieren .

Falls Sie vergessen: Der einzige VirtualHost *: 80-Eintrag muss sich nur in der Datei ports.conf befinden .

/etc/apache2/ports.conf

**NameVirtualHost *:80**
Listen 80

<IfModule mod_ssl.c>
   # If you add NameVirtualHost *:443 here, you will also have to change
   # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
   # to <VirtualHost *:443>
   # Server Name Indication for SSL named virtual hosts is currently not
   # supported by MSIE on Windows XP.
   Listen 443
</IfModule>

<IfModule mod_gnutls.c>
   Listen 443
</IfModule>

Lassen Sie in Ihrem VirtualHost-Eintrag VirtualHost *: 80 aus

Beispiel: virtualhost joe

<VirtualHost *:80>
    **ServerAlias joe**
    **...**
</VirtualHost>
Marc Driftmeyer
quelle
5

Es fehlt ein Servername-Eintrag auf Serverkonfigurationsebene. Sie müssen einen Servernamen-Eintrag außerhalb eines Hosts haben, damit Apache diesen als Standard verwenden kann.

Das Einfügen eines ServerName-Eintrags in einen VirtualHost behebt das Problem nicht. Siehe ServerName-Direktive .

David
quelle
3

Um dies zu beheben, müssen wir die Datei /etc/apache2/httpd.conf oder /etc/apache2.conf bearbeiten und die folgende Zeile hinzufügen:

ServerName nameofserver
Niekutis
quelle
1
Du hast recht! Diese Antwort dupliziert jedoch den Inhalt der Antwort von crb, ohne neue Informationen oder Erkenntnisse zu liefern. Ich würde in Betracht ziehen, es zu löschen oder weitere Details hinzuzufügen, die sich von den Antworten anderer unterscheiden.
Royce Williams
1

Ich glaube, Sie müssen ServerNamefür den virtuellen Standardhost hinzufügen . Da es nicht vorhanden ist, wird die Standard-IP-Adresse verwendet. Und es ist eine Art Warnung. Dein Webserver wird wohl noch funktionieren.

vpram86
quelle
Ich verstehe deinen Kommentar nicht. Ich habe bereits ServerName in meiner Datei: <VirtualHost 127.0.0.1:8080> ServerName mysite.localhost Könnten Sie bitte Ihren Kommentar präzisieren?
1
Für den -default- virtualhost nicht nur einen bestimmten virtualhost.
Kzqai
0
  1. Sie müssen Servername in Ihrer httpd.conf- Datei hinzufügen , indem Sie die folgenden Schritte ausführen

    sudo gedit /etc/apache2/httpd.conf
    

    Standardmäßig ist die httpd.confDatei leer. Fügen Sie nun einfach die folgende Zeile zur Datei hinzu.

    ServerName localhost
    

    Speichern Sie die Datei und beenden Sie gedit. Starten Sie schließlich den Server neu.

    sudo /etc/init.d/apache2 restart
    

2) Include httpd.confAm Ende von hinzufügenapache2.conf

kunjalpopat
quelle
-1

Wenn eine httpd.conf-Datei nach der Installation noch nicht in Ihrem Verzeichnis etc / apache2 vorhanden ist, enthält die Apache-Hauptkonfigurationsdatei apache2.conf keinen Verweis darauf, sodass das Hinzufügen von Elementen zu einer erstellten httpd.conf nicht funktioniert etwas. Sie können stattdessen einfach die Zeile "ServerName Hostname" in die Datei apache2.conf einfügen.

As
quelle
-1

Ist / etc / hosts noch diese Einträge. (Ich habe oben einige Antworten übersprungen)

127.0.0.1 localhost 127.0.0.1 testproject.localhost

Die IP-Adresse 127.0.0.1 ist hier identisch.

Geben Sie testproject.localhost eine andere IP-Adresse als das Loopback-IP-Subnetz.

Sharad Chhetri
quelle