apache2: impossibile determinare in modo affidabile il nome di dominio completo del server, usando 127.0.1.1 per ServerName


73

Continuo a ricevere questo avviso quando riavvio 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 ]

Questo è il contenuto del mio etc/hostsfile:

#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

Questo è il contenuto del mio /etc/apache2/sites-enabled/000-defaultfile:

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

Quando vado a http://testproject.localhost, ottengo una pagina vuota.

Qualcuno può individuare ciò che sto facendo di sbagliato?

Risposte:


52

Di default Ubuntu non specifica un ServerName nella configurazione di Apache, perché non sa quale sia il nome del tuo server. Prova una ricerca inversa sul tuo indirizzo IP, che non restituisce nulla, quindi deve solo usare l'indirizzo IP come ServerName .

Per risolverlo, aggiungi una direttiva ServerName al di fuori di qualsiasi host virtuale - ad esempio /etc/apache2/httpd.conf, oppure imposta una risposta DNS inversa per il tuo indirizzo IP primario - in questo caso, 127.0.1.1

Va benissimo anche ignorarlo.


3
Questo è contro-intuitivo. Se aggiungo ServerName al di fuori di qualsiasi host virtuale, come posso servire più host virtuali dallo stesso server Apache? (questo dopo tutto, è il punto dei server virtuali nominati) - A MENO CHE, stai dicendo che posso avere più di 1 voce ServerName in (diciamo) /etc/apache2/httpd.conf
user35402

7
È quindi possibile aggiungere ServerName / ServerAlias ​​all'interno dei blocchi VirtualHost per fare in modo che VirtualHost corrisponda solo ai nomi host desiderati. Leggi httpd.apache.org/docs/2.2/mod/core.html#servername per il basso.
crb,

Sto cercando questa risposta da oltre un'ora. Tanta merda su Internet riguardo a questo, ma questo ha risolto il mio problema. Grazie
Mike

@Mike tu e gli altri siete geniali! Sto cercando questa risposta per quattro giorni. (Ok, giorni non completamente lavorativi.) +1 perché questa è la prima risposta che spiega che posso aggiungere una direttiva ServerName al di fuori degli host virtuali senza influenzarli. Con questo in mente, la soluzione di ReinoutS ha funzionato per me (+1 anche per lui).
Sony Santos,

27

Ecco una soluzione rapida:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn

Grazie. Nessuna delle correzioni che utilizzano / etc / hosts né httpd.conf ha funzionato per me, ma questo ha funzionato.
Ryan,

1
Risolto il problema con Ubuntu 13.04 con apache2, grazie!
dmanexe,

16

Un altro modo per aggirare questo avviso è quello di mettere un nome di dominio completo sulla 127.0.1.1linea di /etc/hosts. Non deve nemmeno essere un fqdn che si risolve effettivamente in qualsiasi cosa su un server DNS.

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

farebbe il trucco, pur preservando il comportamento di tutti i programmi che non si aspettano un extra .lan. L'ordine è importante; i nomi con più livelli devono essere specificati per primi, come in questo esempio in cui l' .lanindirizzo viene prima dell'altro indirizzo.


7

Questa soluzione funziona per le mie esigenze di sviluppo:

Sfondo:

Debian Linux Sid:
Sviluppo VirtualHost: Ho 10 nomi di server (10 voci di virtualhost all'interno dei siti disponibili)

Ho assegnato a ciascuno un indirizzo IP localhost univoco all'interno /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

Se hai intenzione di aggiungere un altro virtualhost (ne ho alcuni per lo sviluppo) aggiungi una voce a un altro indirizzo IP localhost e abilita il sito prima di riavviare Apache 2.2:

127.0.0.11 *newhost*

Per ogni voce che si desidera abilitare come file VirtualHost:

/ etc / apache2 / sites-available /

joe joomla schoo forrest store editore studios grafica drupal wordpress

Tutti gli host virtuali sono abilitati / disabilitati tramite a2ensite / a2dissite hostname

Per sopprimere l'errore

Riavvio del server Web: apache2apache2: Impossibile determinare in modo affidabile il nome di dominio completo del server, utilizzando 127.0.0.1 per ServerName ... in attesa di apache2: Impossibile determinare in modo affidabile il nome di dominio completo del server, utilizzando 127.0.0.1 per ServerName ''

modifica httpd.conf in /etc/apache2/httpd.conf[file vuoto in Debian]:

ServerName 127.0.1.1

La ricerca viene quindi risolta per tutti i nomi aggiunti , commentati o disabilitati lungo la riga.

Nel caso in cui si dimentichi: l'unica voce VirtualHost *: 80 deve trovarsi solo all'interno del file 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>

All'interno della voce VirtualHost , escludi VirtualHost *: 80

Esempio: virtualhost joe

<VirtualHost *:80>
    **ServerAlias joe**
    **...**
</VirtualHost>


5

Manca una voce ServerName a livello di configurazione del server. È necessario disporre di una voce ServerName al di fuori di qualsiasi host, affinché Apache utilizzi come predefinito.

Inserire una voce ServerName all'interno di un VirtualHost non risolverà il problema. Vedi Direttiva ServerName .


3

Per risolverlo, dobbiamo modificare /etc/apache2/httpd.conf o /etc/apache2.conf e aggiungere la seguente riga:

ServerName nameofserver

1
Hai ragione! Ma questa risposta duplica il contenuto della risposta di crb senza fornire nuove informazioni o approfondimenti. Prenderei in considerazione l'eliminazione o l'aggiunta di ulteriori dettagli diversi dalle risposte degli altri.
Royce Williams

1

Credo che sia necessario aggiungere ServerNameper l'host virtuale predefinito. Dal momento che non è lì, sta prendendo l'indirizzo IP predefinito. Ed è una specie di avvertimento. Il tuo server web funzionerà comunque, immagino.


Non capisco il tuo commento. Ho già ServerName nel mio file: <VirtualHost 127.0.0.1:8080> ServerName mysite.localhost Potresti chiarire il tuo commento?

1
Per -default- virtualhost, non solo un virtualhost specifico.
Kzqai,

0
  1. devi aggiungere ServerName nel tuo file httpd.conf usando i seguenti passaggi

    sudo gedit /etc/apache2/httpd.conf
    

    Per impostazione predefinita, il httpd.conffile sarà vuoto. Ora, aggiungi semplicemente la seguente riga al file.

    ServerName localhost
    

    Salvare il file e uscire da gedit. Finalmente riavvia il server.

    sudo /etc/init.d/apache2 restart
    

2) Aggiungi Include httpd.confalla fine diapache2.conf


-1

Se un file httpd.conf non esiste già nella directory etc / apache2 dopo l'installazione, il file di configurazione principale di apache, apache2.conf, non avrà un riferimento ad esso, quindi l'aggiunta di qualcosa a un httpd.conf creato non lo farà nulla. Puoi semplicemente aggiungere la riga "NomeServer Nomehost" al file apache2.conf.


-1

/ Etc / hosts ha ancora queste voci. (Ho saltato alcune risposte sopra)

127.0.0.1 localhost 127.0.0.1 testproject.localhost

L'indirizzo IP 127.0.0.1 è lo stesso qui.

Fornire un indirizzo IP diverso a testproject.localhost dalla sottorete IP di loopback.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.