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


432

Quando riavvio il mio server Apache usando il comando

sudo /etc/init.d/apache2 restart

Ottengo 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 anziché 127.0.0.1? Cosa causa questo errore?

Risposte:


509

6 # 13.04 e precedenti

Questo è solo un avvertimento amichevole e non un vero problema (come in quel qualcosa non funziona).

Se vai a:

/etc/apache2/apache2.conf

e inserisci:

ServerName localhost   

e quindi riavviare apache digitando nel terminale:

sudo systemctl reload apache2

l'avviso scomparirà.

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


E usa 127.0.1.1se è dentro il tuo /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 utilizza 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 aggiungere

ServerName localhost

nel file e salva. Tutto ciò 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à).


2
Questo è anche menzionato nella documentazione sull'installazione di Ubuntu LAMP per la risoluzione dei problemi di Apache . Lì raccomandano di creare un file /etc/apache2/conf.d/fqdn con ServerName localhostal suo interno
icc97

Ottima risposta - ma consiglierei anche di inserirlo nella directory
conf.d

3
/etc/apache2/conf.d/non esiste dopo la mia installazione di lamp-server^14.04
redanimalwar,

@redanimalwar Per il 13.10 e successivi vedi la risposta di @ Starx di seguito.
Dan,

3
Per l'ultimo passo (creazione di sym-link in 14.04), raccomanderei sudo a2enconf fqdnanche se tecnicamente dovrebbe essere lo stesso.
nuala,

176

13.10 o più recente

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

Apache non utilizza più la conf.ddirectory. Tutti i file di configurazione sono archiviati all'interno della /etc/apache2/conf-availabledirectory e tutti i file di configurazione ora dovrebbero avere .confun'estensione.

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

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

E all'interno di questo dobbiamo solo aggiungere una riga

ServerName localhost

È possibile combinare i due comandi precedenti in uno con:

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

Se si desidera utilizzare un nome di dominio o qualsiasi altro nome a seconda del requisito va bene, basta sostituire localhostcon tutto ciò che serve. Successivamente devi abilitare questa configurazione. Per questo, è necessario eseguire il comando seguente:

sudo a2enconf servername

a2enconfè un comando per abilitare un file di configurazione in Apaches 2.4. Si noti inoltre che servernameil comando sopra è dal nome del file di configurazione servername.conf. Se il tuo file di configurazione fosse ngenericserver.confallora dovresti scrivere sudo a2enconf ngenericserver.

Dopo questo ricaricare il server e il messaggio sopra non ti disturberanno più.

sudo service apache2 reload

o

sudo apache2ctl graceful

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


3
Qualcuno sa come far dire ad Apache con quale file di configurazione ha il problema? Non so perché gli sviluppatori non abbiano mai pensato di inserire questo nei loro messaggi di errore - difficilmente ci vuole molto codice!
John Y,

Se ho un Internet FQDM per questo server, è questo il posto dove metterlo? cioè dovrei sostituire myhost.org al posto di localhost?
CPBL,

1
@CPBL Questo sarà il nome del server predefinito per tutti i siti. Se hai solo un sito, allora è tutto ciò che devi fare. Se sul tuo server sono presenti più siti, dovrai anche aggiungere la direttiva servername per ciascun sito nella rispettiva configurazione dell'host virtuale.
Dan,

1
Funziona su 14.04 LTS.
Parto,

1
Il tuo link citato sembra morto, per favore correggi.
Fredrick Gauss,

28

Apache2 può anche ottenere l'FQDN da un nome host di sistema correttamente configurato anziché codificato nel file di configurazione di Apache. Hardcoding causerà anche confusione se il nome host cambia. In realtà non sono necessarie ServerNamedirettive httpd.confo file di configurazione di Apache.

Inserisci quanto segue /etc/hosts:

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

dove si hostname.domainname.comtrova il nome FQDN della tua macchina.

Insieme a un nome host correttamente configurato in /etc/hostname/o con hostnamectl, questo aiuterà anche altri servizi sulla tua macchina a funzionare correttamente (cioè il prompt di accesso, che mostra This is hostname.domainname.cominvece di This is hostname.unknown_domain.)


5
+1 per "un nome host di sistema correttamente configurato". Volevo configurare correttamente il server. Ciò ha anche corretto il mio errore nel log[warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!?
transistor1

Pensi che dovrebbe funzionare con Apache 2.2.22? Ricevo ancora "Impossibile determinare in modo affidabile il nome di dominio completo del server, usando 127.0.1.1 per ServerName"
David Winiecki,

È hostname localhostdovrebbe essere myubuntuservername localhost? O la stringa letterale hostname localhost? Non eri chiaro nella tua risposta
Jonathan

2
Questa dovrebbe essere la risposta accettata. Tuttavia, potrebbe essere necessario associare l'FQDN all'indirizzo IP statico anziché 127.0.0.1.
Skippy le Grand Gourou,

1
Questa è stata la migliore risposta per me su Ubuntu 18.04. Vorrei che la documentazione fosse coerente anche se il nome di dominio completo non è la stessa terminologia qui o ovunque. se il mio nome di dominio completo fosse google.com e il mio nome server fosse google, la mia voce in / etc / hosts sarebbe 127.0.0.1 google.com google potrei sostituire la riga localhost e aggiungere l'host locale alla fine di questa riga se io desiderio. Ho usato questo: digitalocean.com/community/tutorials/…
NZ Dev

26
  • Apri un terminale
  • Apri il /etc/apache2/httpd.conffile:

    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


dopo aver eseguito l'ultimo comando si verifica il seguente errore ** Riavvio del server Web apache2 / usr / sbin / apache2ctl: 87: ulimit: limite impostazione errore (operazione non consentita) / usr / sbin / apache2ctl: 87: ulimit: limite impostazione errore (operazione non permesso) (13) Autorizzazione negata: make_sock: impossibile associare l'indirizzo 0.0.0.0:80 nessun socket di ascolto disponibile, chiusura Impossibile aprire i registri Azione "start" non riuscita. Il registro degli errori di Apache potrebbe contenere ulteriori informazioni. [fallito] ** @ green7
Deepu

prova 'sudo service apache2 restart'
waterloo2005,

20

Nella nuova versione di apache2 basta seguire il comando in questo modo:

sudo nano /etc/apache2/apache2.conf

Aggiungi la seguente nuova riga di fine del file:

ServerName localhost

Quindi riavviare apache2:

sudo service apache2 restart

E 'fatto.


6

Trovo che sia un po 'meglio creare un nuovo file in /etc/conf.dquello da modificare apache2.confo httpd.conf.

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

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

ServerName myhost.mycomain.tld

Anche gli altri suggerimenti funzionano sicuramente.


2

In Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name

1

Inserisci ServerName localhost

Per

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

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


1

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

Alcune altre risposte suggeriscono che è necessario modificare /etc/apache2/httpd.conf. Questo file viene sovrascritto quando apache viene aggiornato da apt. Per la configurazione di Apache che non si desidera sovrascrivere, è necessario 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 è fondamentalmente lo stesso della risposta di Stark, ma in una forma di script facile da copiare e incollare. Inizialmente l'avevo pubblicato in una domanda contrassegnata come duplicata: https://askubuntu.com/a/432408


1

Su Ubuntu 16.04 :

Aggiungi ServerName localhostal file httpd.confusando il seguente comando.

sudo vi  /etc/apache2/httpd.conf

Quindi includere questa riga Include httpd.confalla 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

0

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

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


0

Se stai usando bash e vuoi dipendenze minime (e vuoi solo una riga per il tuo script entrypoint se stai usando Docker come me), queste due opzioni dovrebbero funzionare.

Se vuoi localhost:

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

Se si desidera il nome host esistente:

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

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


0

Esegui il seguente comando:

apachectl -t -D DUMP_INCLUDES

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

ServerName localhost

Per il server Web, utilizzare il nome DNS registrato (ad es example.com.).

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


0

Su Ubuntu 16.04 :

Aggiungi ServerName localhostal file httpd.confusando il seguente comando.

sudo vi  /etc/apache2/httpd.conf

Quindi includere questa riga Include httpd.confalla 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 il riavvio apache2 del servizio sudo di configurazione

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.