Apache-Fehler "Der vollständig qualifizierte Domänenname des Servers konnte nicht zuverlässig ermittelt werden."

432

Wenn ich meinen Apache-Server mit dem Befehl neu starte

sudo /etc/init.d/apache2 restart

Ich erhalte folgenden Fehler:

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

Verwendet der Server 127.0.1.1 anstelle von 127.0.0.1? Wodurch wird dieser Fehler verursacht?

Deepu
quelle

Antworten:

509

6 # 13.04 und älter

Dies ist nur eine freundliche Warnung und kein wirkliches Problem (da etwas nicht funktioniert).

Wenn du nach ... gehst:

/etc/apache2/apache2.conf

und einfügen:

ServerName localhost   

und starten Sie Apache neu, indem Sie Folgendes in das Terminal eingeben:

sudo systemctl reload apache2

Der Hinweis verschwindet.

Wenn Sie einen Namen haben /etc/hostname, können Sie auch diesen Namen anstelle von verwenden localhost.


Und es verwendet, 127.0.1.1wenn es in Ihrem ist /etc/hosts:

127.0.0.1 localhost
127.0.1.1 myhostname

Bevorzugte Methode

Fehlerbehebung bei Apache

Wenn Sie diesen Fehler erhalten:

apache2: Could not determine the server's fully qualified domain name, 
using 127.0.0.1 for ServerName

Verwenden Sie dann einen Texteditor wie "sudo nano" in der Befehlszeile oder "gksudo gedit" auf dem Desktop, um eine neue Datei zu erstellen.

sudo nano /etc/apache2/conf.d/fqdn

oder

gksu "gedit /etc/apache2/conf.d/fqdn"

dann füge hinzu

ServerName localhost

in die Datei und speichern. Dies kann alles mit einem einzigen Befehl ausgeführt werden:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

Aber auf Ubuntu 14.04:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
 sudo a2enconf fqdn

Vergessen Sie nicht die ".conf" (ohne wird nicht funktionieren).

Rinzwind
quelle
2
Dies wird auch in der Dokumentation zur Einrichtung von Ubuntu LAMP zur Fehlerbehebung für Apache erwähnt . Dort empfehlen sie die Erstellung einer Datei /etc/apache2/conf.d/fqdn mit ServerName localhostdarin
icc97
Sehr gute Antwort - aber ich würde auch empfehlen, es in das Verzeichnis conf.d zu stellen :)
cwd
3
/etc/apache2/conf.d/existiert nicht nach meiner Installation von lamp-server^in 14.04
Redanimalwar
@redanimalwar Für 13.10 und neuer siehe @ Starx's Antwort unten.
Dan
3
Für den allerletzten Schritt (Erstellen von Sym-Link in 14.04) würde ich empfehlen, sudo a2enconf fqdnobwohl es technisch gleich sein sollte.
Nuala
176

13.10 oder neuer

Ab Apache 2.4 - der standardmäßig ab 13.10 verfügbar ist - können Sie die Methode zum Hinzufügen einer Konfigurationsdatei zum conf.dVerzeichnis nicht mehr verwenden.

Apache verwendet das conf.dVerzeichnis nicht mehr . Alle Konfigurationsdateien werden in einem /etc/apache2/conf-availableVerzeichnis gespeichert und alle Konfigurationsdateien sollten jetzt eine .confErweiterung haben.

Um diese Meldung in Apache 2.4 zu beheben, müssen wir eine Konfigurationsdatei im conf-available-Verzeichnis erstellen. Zum Beispiel servername.conf.

sudo vi /etc/apache2/conf-available/servername.conf

Und innerhalb dieses brauchen wir nur eine Zeile hinzuzufügen

ServerName localhost

Sie können die beiden vorherigen Befehle in einem kombinieren mit:

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf

Wenn Sie einen Domain-Namen oder einen anderen Namen verwenden möchten, der den Anforderungen entspricht, ersetzen localhostSie ihn einfach durch den gewünschten Namen . Als nächstes müssen Sie diese Konfiguration aktivieren. Dazu müssen Sie den folgenden Befehl ausführen:

sudo a2enconf servername

a2enconfist ein Befehl zum Aktivieren einer Konfigurationsdatei in Apaches 2.4. Beachten Sie auch, dass servernameder obige Befehl aus dem Namen der Konfigurationsdatei stammt servername.conf. Wenn Ihre Konfigurationsdatei ngenericserver.confwäre, müssten Sie schreiben sudo a2enconf ngenericserver.

Nach diesem Reload wird der Server und die obige Meldung Sie nicht mehr stören.

sudo service apache2 reload

oder

sudo apache2ctl graceful

Danach sehen Sie, dass die Nachricht nicht mehr angezeigt wird und das Problem behoben ist.

Starx
quelle
3
Kann jemand Apache veranlassen, zu sagen, mit welcher Konfigurationsdatei es das Problem hat? Ich weiß nicht, warum Entwickler niemals daran denken, dies in ihre Fehlermeldungen aufzunehmen - es braucht kaum Code!
John Y
Wenn ich ein Internet-FQDM für diesen Server habe, ist dies der richtige Ort, um es zu platzieren? dh sollte ich myhost.org anstelle von localhost einordnen?
CPBL
1
@CPBL Dies ist der Standardservername für alle Sites. Wenn Sie nur eine Site haben, ist das alles, was Sie tun müssen. Wenn Sie mehrere Standorte auf Ihrem Server haben, müssen Sie auch die Servername-Direktive für jeden Standort in der jeweiligen Konfiguration des virtuellen Hosts hinzufügen.
Dan
1
Funktioniert auf 14.04 LTS.
Parto
1
Ihr angegebener Link scheint nicht mehr zu funktionieren.
Fredrick Gauß
28

Apache2 kann den vollqualifizierten Domänennamen auch von einem ordnungsgemäß konfigurierten Systemhostnamen beziehen, anstatt ihn fest in der Apache-Konfigurationsdatei zu codieren. Das Hardcodieren führt auch zu Verwirrung, wenn sich der Hostname ändert. Sie benötigen tatsächlich keine ServerNameDirektiven in httpd.confoder Apache-Konfigurationsdateien.

Geben Sie Folgendes ein /etc/hosts:

# IPv4 and IPv6 localhost aliases
127.0.0.1 hostname.domainname.com  hostname  localhost
::1       hostname.domainname.com  hostname  localhost

Wo hostname.domainname.comist der vollqualifizierte Domänenname Ihres Computers?

Zusammen mit einem ordnungsgemäß konfigurierten Hostnamen in /etc/hostname/oder mit hostnamectlwird dies auch dazu beitragen, dass andere Dienste auf Ihrem Computer ordnungsgemäß ausgeführt werden (dh die Anmeldeaufforderung wird This is hostname.domainname.comanstelle von angezeigt This is hostname.unknown_domain.)

Andrew Mao
quelle
5
+1 für "einen ordnungsgemäß konfigurierten Systemhostnamen". Ich wollte den Server richtig konfigurieren. Dies hat auch meinen Fehler im log[warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!?
transistor1
Denken Sie, dass dies mit Apache 2.2.22 funktionieren sollte? Ich erhalte immer noch "Konnte nicht zuverlässig den vollqualifizierten Domain-Namen des Servers unter Verwendung von 127.0.1.1 für ServerName ermitteln"
David Winiecki
Ist hostname localhostsein soll myubuntuservername localhost? Oder das String-Literal hostname localhost? Sie waren in Ihrer Antwort nicht klar
Jonathan
2
Dies sollte die akzeptierte Antwort sein. Möglicherweise müssen Sie den vollqualifizierten Domänennamen jedoch nicht der statischen IP-Adresse 127.0.0.1zuordnen.
Skippy le Grand Gourou
1
Dies war die beste Antwort für mich unter Ubuntu 18.04. Ich wünschte, die Dokumentation wäre konsistent, obwohl ein vollständig qualifizierter Domainname hier oder anderswo nicht dieselbe Terminologie hat. Wenn mein vollqualifizierter Domainname google.com und mein Servername google wäre, würde mein Eintrag in / etc / hosts 127.0.0.1 lauten. google.com google Ich könnte die localhost-Zeile ersetzen und den lokalen Host an das Ende dieser Zeile setzen, wenn ich Wunsch. Ich habe dies verwendet: digitalocean.com/community/tutorials/…
NZ Dev
26
  • Öffnen Sie ein Terminal
  • Öffnen Sie die /etc/apache2/httpd.confDatei:

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • Standardmäßig ist es leer. Fügen Sie einfach die folgende Zeile hinzu:

    ServerName localhost
    
  • Speichern Sie die Datei und beenden Sie sie

  • Starten Sie den Server neu

    sudo service apache2 restart
    

[1] Standardeditor starten, siehe sudo update-alternatives --config editor

Grün
quelle
Nach der Ausführung des letzten Befehls tritt der folgende Fehler auf erlaubt) (13) Berechtigung verweigert: make_sock: konnte nicht an Adresse 0.0.0.0:80 gebunden werden Keine Listening-Sockets verfügbar, Herunterfahren Protokolle können nicht geöffnet werden Aktion 'Start' fehlgeschlagen. Das Apache-Fehlerprotokoll enthält möglicherweise weitere Informationen. [nicht bestanden] ** @ green7
Deepu
versuchen Sie 'Sudo Service Apache2 Neustart'
waterloo2005
20

In der neuen Version von Apache2 folgen Sie einfach dem folgenden Befehl:

sudo nano /etc/apache2/apache2.conf

Fügen Sie das folgende neue Zeilenende der Datei hinzu:

ServerName localhost

Dann starte apache2 neu:

sudo service apache2 restart

Es ist fertig.

empugandring
quelle
6

Ich finde es etwas besser, eine neue Datei darin zu erstellen /etc/conf.d, um entweder apache2.confoder zu ändern httpd.conf.

Es ist eine persönliche Präferenz, die meine Konfigurationsänderungen vom Distributionspaket trennt. Updates sind also weniger kompliziert.

Ich erstelle die Datei /etc/apache2/conf.d/AAserverNameund sie enthält nur:

ServerName myhost.mycomain.tld

Die anderen Vorschläge funktionieren sicherlich auch.

areeda
quelle
2

In Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name
Eduardo Cuomo
quelle
1

Hinzufügen ServerName localhost

Zu

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

Es ist kein Fehler. Es ist nur eine Erinnerung an einen Freund

Serem
quelle
1

Dies können ServerName localhostSie tun, indem Sie in Ihren Konfigurationsdateien außerhalb der virtuellen Hostabschnitte angeben .

Einige andere Antworten schlagen vor, dass Sie ändern sollten /etc/apache2/httpd.conf. Diese Datei wird überschrieben, wenn Apache von Apt aktualisiert wird. Für die Apache-Konfiguration, die Sie nicht überschreiben möchten, sollten Sie eine neue Datei erstellen. Hier ist der "Debian-Weg", um diese Konfiguration zu ändern:

# create the configuration file in the "available" section
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
# enable it by creating a symlink to it from the "enabled" section
sudo a2enconf servername
# restart the server
sudo service apache2 restart

Dies ist im Grunde die gleiche Antwort wie bei Starks, jedoch in einer einfach zu kopierenden und einzufügenden Skriptform. Ich hatte dies ursprünglich in einer Frage gepostet, die als doppelt markiert war: https://askubuntu.com/a/432408

Stephen Ostermiller
quelle
1

Unter Ubuntu 16.04 :

Fügen Sie ServerName localhostder Datei httpd.confden folgenden Befehl hinzu.

sudo vi  /etc/apache2/httpd.conf

Fügen Sie dann diese Zeile Include httpd.confam Ende dieser Datei ein

sudo vi /etc/apache2/apache2.conf

Suchen Sie erneut nach Syntaxfehlern

sudo apache2ctl configtest

Sie sollten jetzt bekommen

Syntax OK

Sie können den Server jetzt ordnungsgemäß neu starten, indem Sie die Konfiguration neu laden

sudo service apache2 reload

oder beenden Sie den Vorgang und beginnen Sie erneut

sudo service apache2 restart
daumie
quelle
0

Unter Ubuntu 11.10 habe ich diese Meldung zusammen mit einem hängengebliebenen Systemstart gesehen, weil meine Festplatte voll war. Eine der Protokolldateien war nicht mehr aktuell . Wahrscheinlich gab es eigentlich kein Problem mit Apache, aber diese Nachricht war der letzte Hinweis, der gegeben wurde, bevor der Boot hing.

Um das Problem zu beheben, musste ich in den Wiederherstellungsmodus booten und die unberechenbare Protokolldatei entfernen.

kein Balken
quelle
0

Wenn Sie bash verwenden und minimale Abhängigkeiten benötigen (und nur einen Einzeiler für Ihr Entrypoint-Skript benötigen, wenn Sie Docker wie mich verwenden), sollten diese beiden Optionen funktionieren.

Wenn Sie localhost wollen:

echo "ServerName localhost" >> /etc/apache2/apache2.conf

Wenn Sie den vorhandenen Hostnamen möchten:

echo "ServerName $(cat /etc/hostname)" >> /etc/apache2/apache2.conf

Hierbei werden die Bash-Umleitungsoperatoren verwendet , um die Zeichenfolge an das Ende der Datei anzuhängen. Echo fügt automatisch die neue Zeile ein, so dass Sie fertig sind.

Andrew Odri
quelle
0

Führen Sie den folgenden Befehl aus:

apachectl -t -D DUMP_INCLUDES

Um den Pfad zu Ihrer httpd.confKonfigurationsdatei zu bestimmen , bearbeiten Sie diese Datei und kommentieren / ändern Sie die Zeile, die den Wert für die ServerNameOption angibt , z

ServerName localhost

Verwenden Sie für den Webserver den registrierten DNS-Namen (z example.com. B. ).

Wenn Ihr Host keinen registrierten DNS-Namen hat, geben Sie hier seine IP-Adresse ein.

Kenorb
quelle
0

Unter Ubuntu 16.04 :

Fügen Sie ServerName localhostder Datei httpd.confden folgenden Befehl hinzu.

sudo vi  /etc/apache2/httpd.conf

Fügen Sie dann diese Zeile Include httpd.confam Ende dieser Datei ein

sudo vi /etc/apache2/apache2.conf

Suchen Sie erneut nach Syntaxfehlern

sudo apache2ctl configtest

Sie sollten jetzt bekommen

Syntax OK

Sie können den Server jetzt ordnungsgemäß neu starten, indem Sie den Konfigurations-Sudo-Dienst apache2 restart neu laden

daumie
quelle