Errore Apache "Impossibile determinare in modo affidabile il nome di dominio completo del server"

385

Quando riavvio il mio server Apache utilizzando il comando

sudo /etc/init.d/apache2 restart

Ho ricevuto il seguente errore:

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

Il server utilizza 127.0.1.1 invece di 127.0.0.1? Cosa causa questo errore?

    
posta Deepu 14.02.2013 - 14:09

14 risposte

470

13.04 e precedenti

Questo è solo un avvertimento amichevole e non proprio un problema (dato che qualcosa non funziona)

Se inserisci un

ServerName localhost   

in httpd.conf o apache2.conf in /etc/apache2 e riavvia apache l'avviso scompare.

Se hai un nome dentro /etc/hostname puoi anche usare quel nome invece di localhost .

E usa 127.0.1.1 se è all'interno di /etc/hosts :

127.0.0.1 localhost
127.0.1.1 myhostname

Metodo preferito

  

Risoluzione dei problemi di Apache

Se ricevi questo errore:

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

quindi utilizzare un editor di testo come "sudo nano" nella riga di comando o "gksudo gedit" sul desktop per creare un nuovo file,

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

o

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

quindi aggiungi

ServerName localhost

al file e salvare. Questo può essere fatto in un singolo comando con il seguente:

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

Ma su Ubuntu 14.04:

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

Non dimenticare il ".conf" (senza non funzionerà).

    
risposta data Rinzwind 14.02.2013 - 14:18
158

13.10 o più recente

A partire da Apache 2.4 - che è disponibile per impostazione predefinita a partire da 13.10 - non è possibile utilizzare il metodo per aggiungere un file di configurazione nella directory conf.d .

Apache non utilizza più la directory conf.d . Tutti i file di configurazione sono memorizzati nella directory /etc/apache2/conf-available e ora tutti i file di configurazione devono avere un'estensione .conf .

Per risolvere questo messaggio in Apache 2.4, dobbiamo creare un file di configurazione all'interno della directory conf-available. Ad esempio servername.conf .

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

E all'interno di questo abbiamo solo bisogno di aggiungere una riga

ServerName localhost

Puoi combinare i due comandi precedenti in uno con:

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

Se vuoi usare un nome di dominio o qualsiasi altro nome a seconda del requisito, vai a sostituire localhost con tutto ciò di cui hai bisogno. Quindi devi abilitare questa configurazione. Per questo, è necessario eseguire il seguente comando:

sudo a2enconf servername

a2enconf è un comando per abilitare un file di configurazione in Apache 2.4. Si noti inoltre che servername sul comando precedente proviene dal nome del file di configurazione servername.conf . Se il tuo file di configurazione era ngenericserver.conf , dovresti scrivere sudo a2enconf ngenericserver .

Dopo questo ricaricamento il server e il messaggio precedente non ti disturberanno più.

sudo service apache2 reload

o

sudo apache2ctl graceful

Ora dopo questo vedrai che il messaggio non verrà più mostrato e il problema verrà risolto.

    
risposta data Starx 26.12.2013 - 19:45
24
  • Apri un terminale
  • Apri il file /etc/apache2/httpd.conf :

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • Per impostazione predefinita, sarebbe vuoto. Aggiungi semplicemente la seguente riga:

    ServerName localhost
    
  • Salva il file ed esci

  • Riavvia il server

    sudo service apache2 restart
    

[1] Avvia l'editor predefinito, vedi sudo update-alternatives --config editor

    
risposta data green 14.02.2013 - 14:17
22

Apache2 può anche ottenere il FQDN da un hostname di sistema correttamente configurato piuttosto che codificato nel file di configurazione di apache. Anche l'hardcoding causerà confusione se il nome host cambia. In realtà non hai bisogno di nessuna direttiva ServerName in httpd.conf o di qualsiasi file di configurazione di apache.

Aggiungi quanto segue in /etc/hosts :

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

dove hostname.domainname.com è il nome FQDN della tua macchina.

Insieme a un hostname configurato correttamente in /etc/hostname/ o con hostnamectl , questo aiuterà anche altri servizi sulla tua macchina a funzionare correttamente (cioè il prompt di login, mostrando This is hostname.domainname.com invece di This is hostname.unknown_domain .)

    
risposta data Andrew Mao 18.09.2013 - 20:05
15

Nella nuova versione di apache2 segui semplicemente questo comando:

sudo nano /etc/apache2/apache2.conf

Aggiungi la seguente nuova riga di fine file:

ServerName localhost

Quindi riavvia apache2:

sudo service apache2 restart

È fatto.

    
risposta data empugandring 16.04.2014 - 08:38
4

Trovo che sia un po 'meglio creare un nuovo file in /etc/conf.d che per modificare apache2.conf o httpd.conf .

È una preferenza personale che mantiene le mie modifiche di configurazione separate dal pacchetto di distribuzione. Quindi gli aggiornamenti sono meno complicati.

Creo il file /etc/apache2/conf.d/AAserverName e contiene solo:

ServerName myhost.mycomain.tld

Anche gli altri suggerimenti funzionano sicuramente.

    
risposta data areeda 06.09.2013 - 17:31
2

In Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name
    
risposta data Eduardo Cuomo 17.04.2017 - 15:26
1

Aggiungi ServerName localhost

Per

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

Non è un errore .. È solo un promemoria per un amico

    
risposta data Serem 05.07.2014 - 11:36
0

Su Ubuntu 11.10, ho visto questo messaggio, insieme a un avvio bloccato che si verificava perché il mio disco era pieno. Uno dei file di registro era diventato canaglia . Probabilmente non c'era un problema con Apache, ma questo messaggio è stato l'ultimo indizio prima che il boot si bloccasse.

Per risolvere il problema, ho dovuto avviare la modalità di ripristino e rimuovere il file di registro ribelle.

    
risposta data nobar 07.05.2013 - 17:17
0

Specificare ServerName localhost nei file di configurazione al di fuori delle sezioni dell'host virtuale è il modo per farlo.

Alcune altre risposte suggeriscono di modificare /etc/apache2/httpd.conf . Questo file viene sovrascritto quando Apache viene aggiornato da apt. Per la configurazione di Apache che non vuoi sovrascrivere, devi creare un nuovo file. Ecco il "modo Debian" per modificare questa configurazione:

# 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

Questo è praticamente lo stesso della risposta di Stark, ma in un modulo di script facile da copiare e incollare. Inizialmente avevo postato questo messaggio in una domanda contrassegnata come duplicata: link

    
risposta data Stephen Ostermiller 24.03.2017 - 14:02
0

Se stai usando bash e vuoi delle dipendenze minime (e vuoi solo un one-liner per il tuo script di punti di accesso se stai usando Docker come me), queste due opzioni dovrebbero funzionare.

Se vuoi localhost:

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

Se vuoi il nome host esistente:

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

Questo utilizza gli operatori di reindirizzamento bash per aggiungere il stringa alla fine del file. Echo inserisce automaticamente la nuova riga, quindi è tutto pronto.

    
risposta data Andrew Odri 17.11.2017 - 20:23
0

Esegui il seguente comando:

apachectl -t -D DUMP_INCLUDES

per determinare il percorso del file di configurazione httpd.conf , quindi modificare quel file e rimuovere il commento / modificare la riga che specifica il valore per l'opzione ServerName , ad es.

ServerName localhost

Per il server web, utilizza il nome DNS registrato (ad esempio example.com ).

  

Se il tuo host non ha un nome DNS registrato, inserisci qui il suo indirizzo IP.

    
risposta data kenorb 23.10.2017 - 14:24
0

On Ubuntu 16.04 :

Aggiungi ServerName localhost al file httpd.conf usando il seguente comando.

sudo vi  /etc/apache2/httpd.conf

Quindi includi questa riga Include httpd.conf alla fine di questo file

sudo vi /etc/apache2/apache2.conf

Controlla nuovamente gli errori di sintassi

sudo apache2ctl configtest

Ora dovresti ottenere

Syntax OK

Ora puoi riavviare il server con garbo ricaricando la configurazione sudo service apache2 restart

    
risposta data daumie 08.01.2018 - 22:47
0

On Ubuntu 16.04 :

Aggiungi ServerName localhost al file httpd.conf usando il seguente comando.

sudo vi  /etc/apache2/httpd.conf

Quindi includi questa riga Include httpd.conf alla fine di questo file

sudo vi /etc/apache2/apache2.conf

Controlla nuovamente gli errori di sintassi

sudo apache2ctl configtest

Ora dovresti ottenere

Syntax OK

Ora puoi riavviare il server con garbo ricaricando la configurazione

sudo service apache2 reload

o uccidi il processo e ricomincia

sudo service apache2 restart
    
risposta data daumie 08.01.2018 - 22:48

Leggi altre domande sui tag