Błąd Apache „Nie można wiarygodnie określić w pełni kwalifikowanej nazwy domeny serwera”

431

Po ponownym uruchomieniu serwera Apache za pomocą polecenia

sudo /etc/init.d/apache2 restart

Otrzymuję następujący błąd:

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

Czy serwer używa 127.0.1.1 zamiast 127.0.0.1? Co powoduje ten błąd?

Deepu
źródło

Odpowiedzi:

509

6 # 13.04 i starsze

To tylko przyjazne ostrzeżenie i tak naprawdę nie stanowi problemu (ponieważ pod tym względem coś nie działa).

Jeśli pójdziesz do:

/etc/apache2/apache2.conf

i wstaw:

ServerName localhost   

a następnie ponownie uruchom apache, wpisując w terminalu:

sudo systemctl reload apache2

zawiadomienie zniknie.

Jeśli masz w środku nazwę /etc/hostname, możesz również użyć tej nazwy zamiast localhost.


I używa, 127.0.1.1jeśli jest w twoim /etc/hosts:

127.0.0.1 localhost
127.0.1.1 myhostname

Preferowana metoda

Rozwiązywanie problemów z Apache

Jeśli pojawi się ten błąd:

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

następnie użyj edytora tekstu, takiego jak „sudo nano” w wierszu polecenia lub „gksudo gedit” na pulpicie, aby utworzyć nowy plik,

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

lub

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

następnie dodaj

ServerName localhost

do pliku i zapisz. Można to wszystko zrobić za pomocą jednego polecenia, wykonując następujące czynności:

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

Ale w Ubuntu 14.04:

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

Nie zapomnij o „.conf” (bez nie będzie działać).

Rinzwind
źródło
2
Jest to również wspomniane w dokumentacji instalacyjnej Ubuntu LAMP dotyczącej rozwiązywania problemów z Apache . Tam zalecają utworzenie pliku /etc/apache2/conf.d/fqdn z ServerName localhostnim
icc97
Bardzo dobra odpowiedź - ale polecam również umieszczenie jej w katalogu conf.d :)
cwd
3
/etc/apache2/conf.d/nie istnieje po mojej instalacji lamp-server^w 14.04
redanimalwar
@redanimalwar Dla wersji 13.10 i nowszych patrz odpowiedź @ Starx poniżej.
Dan
3
Na ostatni krok (tworzenie sym-link w 14.04) polecam, sudo a2enconf fqdnże technicznie powinien być taki sam.
nuala
176

13.10 lub nowszy

Począwszy od Apache 2.4 - która jest domyślnie dostępna od 13.10 - nie można użyć metody dodawania pliku konfiguracyjnego do conf.dkatalogu.

Apache nie korzysta już z conf.dkatalogu. Wszystkie pliki konfiguracyjne są przechowywane w /etc/apache2/conf-availablekatalogu, a wszystkie pliki konfiguracyjne powinny teraz mieć .confrozszerzenie.

Aby rozwiązać ten komunikat w Apache 2.4, musimy utworzyć plik konfiguracyjny w dostępnym katalogu conf. Na przykład servername.conf.

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

A w tym musimy tylko dodać jedną linię

ServerName localhost

Możesz połączyć dwa poprzednie polecenia w jednym z:

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

Jeśli chcesz użyć nazwy domeny lub jakiejkolwiek innej nazwy, w zależności od wymaganej grzywny, po prostu zamień na localhostwszystko, czego potrzebujesz. Następnie musisz włączyć tę konfigurację. W tym celu należy uruchomić następujące polecenie:

sudo a2enconf servername

a2enconfto komenda umożliwiająca włączenie pliku konfiguracyjnego w Apache 2.4. Zauważ też, że servernamepowyższe polecenie pochodzi od nazwy pliku konfiguracyjnego servername.conf. Jeśli twój plik konfiguracyjny był ngenericserver.conf, to musisz napisać sudo a2enconf ngenericserver.

Po ponownym załadowaniu serwera powyższa wiadomość nie będzie już powodować błędów.

sudo service apache2 reload

lub

sudo apache2ctl graceful

Teraz zobaczysz, że komunikat nie pojawi się ponownie, a problem zostanie rozwiązany.

Starx
źródło
3
Czy ktoś wie, jak sprawić, by Apache powiedział, z którym plikiem konfiguracji ma problem? Nie wiem, dlaczego programiści nigdy nie myślą o umieszczeniu tego w swoich komunikatach o błędach - nie zajmuje to dużo kodu!
John Y
Jeśli mam internetowy fqdm dla tego serwera, czy jest to miejsce, aby go umieścić? tzn. czy powinienem zastąpić mójhost.org zamiast localhost?
CPBL
1
@CPBL Będzie to domyślna nazwa serwera dla wszystkich witryn. Jeśli masz tylko jedną witrynę, to wszystko, co musisz zrobić. Jeśli masz wiele witryn na serwerze, musisz także dodać dyrektywę nazwy serwera dla każdej witryny w odpowiedniej konfiguracji hosta wirtualnego.
Dan.
1
Działa na 14.04 LTS.
Parto
1
Podany link wydaje się martwy, proszę go naprawić.
Fredrick Gauss
28

Apache2 może również pobrać nazwę FQDN z poprawnie skonfigurowanej systemowej nazwy hosta, a nie zapisany na stałe w pliku konfiguracyjnym apache. Kodowanie spowoduje również zamieszanie, jeśli nazwa hosta ulegnie zmianie. W rzeczywistości nie potrzebujesz żadnych ServerNamedyrektyw httpd.confani plików konfiguracyjnych Apache.

Wprowadź następujące dane /etc/hosts:

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

gdzie hostname.domainname.comjest nazwa FQDN twojego komputera.

Wraz z odpowiednio skonfigurowaną nazwą hosta w /etc/hostname/lub z hostnamectl, pomoże to również poprawnie działać innym usługom na twoim komputerze (tj. Monit o zalogowanie, This is hostname.domainname.comzamiast This is hostname.unknown_domain.)

Andrew Mao
źródło
5
+1 za „poprawnie skonfigurowaną nazwę hosta systemu”. Chciałem poprawnie skonfigurować serwer. To również naprawiło mój błąd w logu[warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!?
tranzystor1
Czy uważasz, że powinno to działać z Apache 2.2.22? Nadal pojawia się komunikat „Nie można wiarygodnie określić w pełni kwalifikowanej nazwy domeny serwera, używając 127.0.1.1 dla ServerName”
David Winiecki,
Ma hostname localhostbyć myubuntuservername localhost? Czy dosłowny ciąg znaków hostname localhost? Twoja odpowiedź nie była jasna
Jonathan
2
To powinna być zaakceptowana odpowiedź. Wydaje się, że może być konieczne skojarzenie nazwy FQDN ze statycznym adresem IP zamiast 127.0.0.1.
Skippy le Grand Gourou
1
To była najlepsza odpowiedź dla mnie w systemie Ubuntu 18.04. Chciałbym, aby dokumentacja była spójna, chociaż w pełni kwalifikowana nazwa domeny nie ma tej samej terminologii tutaj ani nigdzie. jeśli moja w pełni kwalifikowana nazwa domeny to google.com, a moja nazwa serwera to google, mój wpis w / etc / hosts to 127.0.0.1 google.com google. Mogłbym zastąpić linię localhost i reklamę lokalnego hosta do końca tej linii, jeśli życzenie. Użyłem tego: digitalocean.com/community/tutorials/…
NZ Dev
26
  • Otwórz terminal
  • Otwórz /etc/apache2/httpd.confplik:

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • Domyślnie byłby pusty. Po prostu dodaj następujący wiersz:

    ServerName localhost
    
  • Zapisz plik i wyjdź

  • Uruchom ponownie serwer

    sudo service apache2 restart
    

[1] Uruchom domyślny edytor, patrz sudo update-alternatives --config editor

Zielony
źródło
po wykonaniu ostatniego polecenia pojawia się następujący błąd ** Ponowne uruchomienie serwera WWW apache2 / usr / sbin / apache2ctl: 87: ulimit: limit ustawień błędów (Operacja niedozwolona) / usr / sbin / apache2ctl: 87: ulimit: limit ustawień błędów (Operacja nie dozwolone) (13) Odmowa dostępu: make_sock: nie można powiązać z adresem 0.0.0.0:80 brak dostępnych gniazd nasłuchiwania, zamykanie Nie można otworzyć dzienników Działanie „start” nie powiodło się. Dziennik błędów Apache może zawierać więcej informacji. [fail] ** @ green7
Deepu
spróbuj „sudo service apache2 restart”
waterloo2005
20

W nowej wersji apache2 wystarczy wykonać następujące polecenie:

sudo nano /etc/apache2/apache2.conf

Dodaj następujący nowy wiersz końca pliku:

ServerName localhost

Następnie uruchom ponownie Apache2:

sudo service apache2 restart

Zrobione.

empugandring
źródło
6

Uważam, że jest nieco lepiej, aby utworzyć nowy plik /etc/conf.d, który do modyfikowania albo apache2.confalbo httpd.conf.

To osobiste preferencje, które oddzielają moje zmiany konfiguracji od pakietu dystrybucyjnego. Tak więc aktualizacje są mniej skomplikowane.

Tworzę plik, /etc/apache2/conf.d/AAserverNamektóry zawiera tylko:

ServerName myhost.mycomain.tld

Inne sugestie z pewnością również działają.

areeda
źródło
2

W Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name
Eduardo Cuomo
źródło
1

Dodaj ServerName localhost

Do

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

To nie jest błąd ... To tylko przypomnienie od przyjaciela

Serem
źródło
1

ServerName localhostSposobem na to jest podanie plików konfiguracyjnych poza sekcjami hosta wirtualnego.

Niektóre inne odpowiedzi sugerują, że należy zmodyfikować /etc/apache2/httpd.conf. Ten plik zostanie zastąpiony, gdy apache zostanie zaktualizowany z apt. W przypadku konfiguracji Apache, której nie chcesz nadpisywać, powinieneś utworzyć nowy plik. Oto „sposób debiana” na wprowadzenie tej zmiany konfiguracji:

# 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

Jest to w zasadzie to samo co odpowiedź Starka, ale w łatwej do skopiowania i wklejenia formie skryptu. Pierwotnie opublikowałem to w pytaniu oznaczonym jako duplikat: https://askubuntu.com/a/432408

Stephen Ostermiller
źródło
1

W systemie Ubuntu 16.04 :

Dodaj ServerName localhostdo pliku za pomocą httpd.confnastępującego polecenia.

sudo vi  /etc/apache2/httpd.conf

Następnie dołącz ten wiersz Include httpd.confna końcu tego pliku

sudo vi /etc/apache2/apache2.conf

Ponownie sprawdź błędy składniowe

sudo apache2ctl configtest

Powinieneś teraz dostać

Syntax OK

Teraz możesz ponownie uruchomić serwer z wdziękiem, ponownie ładując konfigurację

sudo service apache2 reload

lub zabij proces i zacznij od nowa

sudo service apache2 restart
daumie
źródło
0

Na Ubuntu 11.10 widziałem ten komunikat oraz zawieszenie się systemu, ponieważ mój dysk był pełny. Jeden z plików dziennika stał się nieuczciwy . Prawdopodobnie nie było problemu z Apache, ale ta wiadomość była ostatnią wskazówką, zanim zawiesił się boot.

Aby rozwiązać problem, musiałem uruchomić komputer w trybie odzyskiwania i usunąć niepoprawny plik dziennika.

nobar
źródło
0

Jeśli używasz bash i chcesz minimalnych zależności (i po prostu chcesz mieć jeden wiersz dla skryptu punktu wejścia, jeśli używasz Docker jak ja), te dwie opcje powinny działać.

Jeśli chcesz localhost:

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

Jeśli chcesz istniejącą nazwę hosta:

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

Wykorzystuje to operatory przekierowania bash, aby dołączyć ciąg na końcu pliku. Echo automatycznie wstawia nową linię, więc wszystko gotowe.

Andrew Odri
źródło
0

Uruchom następujące polecenie:

apachectl -t -D DUMP_INCLUDES

aby określić ścieżkę do httpd.confpliku konfiguracyjnego, edytuj ten plik i odkomentuj / zmodyfikuj wiersz określający wartość ServerNameopcji, np.

ServerName localhost

W przypadku serwera WWW użyj zarejestrowanej nazwy DNS (np example.com.).

Jeśli twój host nie ma zarejestrowanej nazwy DNS, wpisz tutaj jej adres IP.

kenorb
źródło
0

W systemie Ubuntu 16.04 :

Dodaj ServerName localhostdo pliku za pomocą httpd.confnastępującego polecenia.

sudo vi  /etc/apache2/httpd.conf

Następnie dołącz ten wiersz Include httpd.confna końcu tego pliku

sudo vi /etc/apache2/apache2.conf

Ponownie sprawdź błędy składniowe

sudo apache2ctl configtest

Powinieneś teraz dostać

Syntax OK

Możesz teraz z powrotem zrestartować serwer, ładując ponownie konfigurację sudo apache2 usługi konfiguracji

daumie
źródło