apache2: Nie można wiarygodnie określić w pełni kwalifikowanej nazwy domeny serwera, używając 127.0.1.1 dla ServerName

73

Nadal pojawia się to ostrzeżenie, gdy ponownie uruchamiam Apache.

* 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 ]

Oto treść mojego etc/hostspliku:

#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

Oto treść mojego /etc/apache2/sites-enabled/000-defaultpliku:

<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>

Kiedy idę do http://testproject.localhost, dostaję pustą stronę.

Czy ktoś może zauważyć, co robię źle?

użytkownik35402
źródło

Odpowiedzi:

52

Domyślnie Ubuntu nie określa nazwy serwera w konfiguracji Apache, ponieważ nie wie, jak nazywa się twój serwer. Próbuje wyszukać wstecz na twoim adresie IP, który nic nie zwraca, więc musi po prostu użyć adresu IP jako nazwy serwera .

Aby to naprawić, dodaj dyrektywę ServerName poza dowolnym hostem wirtualnym - np. W /etc/apache2/httpd.conf, lub skonfiguruj zwrotną odpowiedź DNS dla podstawowego adresu IP - w tym przypadku 127.0.1.1

Zignorowanie tego również jest w porządku.

crb
źródło
3
Jest to sprzeczne z intuicją. Jeśli dodam ServerName poza wirtualnymi hostami - jak mogę obsługiwać wiele wirtualnych hostów z tego samego serwera Apache? (to przecież chodzi o nazwane wirtualne serwery) - CHYBA, że mówisz, że mogę mieć więcej niż 1 wpis NazwaSerwera w (powiedzmy)
/etc/apache2/httpd.conf
7
Następnie możesz dodać ServerName / ServerAlias ​​w blokach VirtualHost, aby VirtualHost pasował tylko do żądanych nazw hostów. Przeczytaj httpd.apache.org/docs/2.2/mod/core.html#servername dla menu rozwijanego.
crb
Od ponad godziny szukam tej odpowiedzi. Tyle bzdur w internecie na ten temat, ale to naprawiło mój problem. Dzięki
Mike
@Tak jak ty i inni jesteś genialny! Odpowiedzi szukam od czterech dni. (Ok, nie w pełni dni robocze.) +1, ponieważ jest to pierwsza odpowiedź, która wyjaśnia, że ​​mogę dodać dyrektywę ServerName poza wirtualnymi hostami bez wpływu na nie. Mając to na uwadze, rozwiązanie ReinoutS zadziałało dla mnie (również +1 dla niego).
Sony Santos,
27

Oto szybka poprawka:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn
ReinoutS
źródło
Dzięki. Żadna z poprawek używających / etc / hosts ani httpd.conf nie działała dla mnie, ale tak się stało.
Ryan
1
Naprawiono to na Ubuntu 13.04 z uruchomionym apache2, dziękuję!
dmanexe
16

Innym sposobem obejścia tego ostrzeżenia jest umieszczenie w pełni kwalifikowanej nazwy domeny na 127.0.1.1linii /etc/hosts. Nie musi to nawet być fqdn, który faktycznie rozwiązałby wszystko na serwerze dns.

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

zrobi to samo, jednocześnie zachowując zachowanie programów, które nie oczekują dodatkowych .lan. Kolejność jest ważna; nazwy z większą liczbą poziomów powinny być określone jako pierwsze, tak jak w tym przykładzie, w którym .lanadres znajduje się przed drugim adresem.

Ryan Ahearn
źródło
7

To rozwiązanie działa na moje potrzeby programistyczne:

Tło:

Debian Linux Sid:
VirtualHost Development: Mam 10 nazw serwerów (10 wpisów virtualhost w witrynach dostępnych)

Każdemu z nich przypisałem unikalny adres IP hosta lokalnego /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

Jeśli zamierzasz dodać kolejny wirtualny host (mam sporo do opracowania), dodaj wpis do innego adresu IP hosta lokalnego i włącz witrynę przed ponownym uruchomieniem Apache 2.2:

127.0.0.11 *newhost*

Dla każdego wpisu, który chcesz włączyć jako plik VirtualHost:

/ etc / apache2 / sites-available /

joe joomla schoo forrest sklep wydawcy studia drupal grafika wordpress

Wszystkie wirtualne hosty są włączane / wyłączane przez a2ensite / a2dissite hostname

Aby ukryć błąd

Ponowne uruchamianie serwera WWW: apache2apache2: Nie można wiarygodnie określić w pełni kwalifikowaną nazwę domeny serwera, używając 127.0.0.1 dla ServerName ... czeka apache2: Nie można wiarygodnie określić w pełni kwalifikowaną nazwę domeny serwera, używając 127.0.0.1 dla ServerName ''

edytuj httpd.conf w /etc/apache2/httpd.conf[pustym pliku w Debianie]:

ServerName 127.0.1.1

Wyszukiwanie jest następnie rozstrzygane dla wszystkich nazw, które dodajesz , komentuje lub wyłącza w dół linii.

W przypadku zapomnienia: jedyny wpis VirtualHost *: 80 musi znajdować się tylko w pliku ports.conf ,

/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>

W swoim wpisie VirtualHost pomiń VirtualHost *: 80

Przykład: virtualhost joe

<VirtualHost *:80>
    **ServerAlias joe**
    **...**
</VirtualHost>
Marc Driftmeyer
źródło
5

Brakuje wpisu ServerName na poziomie konfiguracji serwera. Musisz mieć wpis ServerName poza dowolnym hostem, aby Apache mógł używać go jako domyślnego.

Umieszczenie wpisu ServerName w VirtualHost nie rozwiąże problemu. Zobacz dyrektywę ServerName .

David
źródło
3

Aby to naprawić, musimy edytować plik /etc/apache2/httpd.conf lub /etc/apache2.conf i dodać następujący wiersz:

ServerName nameofserver
niekutis
źródło
1
Masz rację! Ale ta odpowiedź powiela treść odpowiedzi CRB, nie dostarczając żadnych nowych informacji ani wglądu. Zastanowiłbym się, czy go usunąć lub dodać więcej szczegółów, które różnią się od odpowiedzi innych osób.
Royce Williams
1

Uważam, że musisz dodać ServerNamedomyślnego wirtualnego hosta. Ponieważ go nie ma, przyjmuje domyślny adres IP. To rodzaj ostrzeżenia. Twój serwer będzie nadal działał.

vpram86
źródło
Nie rozumiem twojego komentarza. Mam już ServerName w moim pliku: <VirtualHost 127.0.0.1:8080> ServerName mysite.localhost Czy możesz wyjaśnić swój komentarz?
1
Dla -default- virtualhost, nie tylko konkretnego virtualhost.
Kzqai
0
  1. musisz dodać ServerName do pliku httpd.conf , wykonując następujące kroki

    sudo gedit /etc/apache2/httpd.conf
    

    Domyślnie httpd.confplik będzie pusty. Teraz wystarczy dodać następujący wiersz do pliku.

    ServerName localhost
    

    Zapisz plik i wyjdź z gedit. Na koniec zrestartuj serwer.

    sudo /etc/init.d/apache2 restart
    

2) Dodaj Include httpd.confna końcuapache2.conf

kunjalpopat
źródło
-1

Jeśli po instalacji plik httpd.conf nie istnieje jeszcze w katalogu etc / apache2, to główny plik konfiguracyjny apache, apache2.conf, nie będzie miał do niego odniesienia, więc dodanie niczego do utworzonego httpd.conf nie zrobi tego byle co. Zamiast tego możesz po prostu dodać wiersz „Nazwa hosta serwera” do pliku apache2.conf.

As
źródło
-1

Czy / etc / hosts nadal mają te wpisy. (Pominąłem kilka odpowiedzi powyżej)

127.0.0.1 localhost 127.0.0.1 testproject.localhost

Oba adresy IP 127.0.0.1 są tutaj takie same.

Podaj inny adres IP testproject.localhost z podsieci IP pętli zwrotnej.

Sharad Chhetri
źródło