Erreur Apache «Impossible de déterminer de manière fiable le nom de domaine complet du serveur»

432

Lorsque je redémarre mon serveur Apache à l'aide de la commande

sudo /etc/init.d/apache2 restart

Je reçois l'erreur suivante:

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

Le serveur utilise-t-il 127.0.1.1 au lieu de 127.0.0.1? Qu'est-ce qui cause cette erreur?

Deepu
la source

Réponses:

509

6 # 13.04 et plus

Ceci est juste un avertissement amical et pas vraiment un problème (car quelque chose ne fonctionne pas).

Si vous allez à:

/etc/apache2/apache2.conf

et insérer:

ServerName localhost   

puis redémarrez apache en tapant dans le terminal:

sudo systemctl reload apache2

l'avis va disparaître.

Si vous avez un nom à l'intérieur, /etc/hostnamevous pouvez également utiliser ce nom à la place de localhost.


Et il utilise 127.0.1.1s'il est à l'intérieur de votre /etc/hosts:

127.0.0.1 localhost
127.0.1.1 myhostname

Méthode préférée

Dépannage d'Apache

Si vous obtenez cette erreur:

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

utilisez ensuite un éditeur de texte tel que "sudo nano" sur la ligne de commande ou "gksudo gedit" sur le bureau pour créer un nouveau fichier,

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

ou

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

puis ajouter

ServerName localhost

dans le fichier et enregistrez. Tout cela peut être fait en une seule commande avec ce qui suit:

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

Mais sur Ubuntu 14.04:

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

N'oubliez pas le ".conf" (sans cela ne fonctionnera pas).

Rinzwind
la source
2
Ceci est également mentionné dans la documentation d'installation d'Ubuntu LAMP pour le Dépannage d'Apache . Là , ils recommandent la création d' un /etc/apache2/conf.d/fqdn de fichier avec ServerName localhosten elle
icc97
Très bonne réponse - mais je recommanderais également de le mettre dans le répertoire conf.d :)
cwd
3
/etc/apache2/conf.d/n'existe pas après mon installation du lamp-server^14.04
redanimalwar
@redanimalwar Pour les versions 13.10 et supérieures, voir la réponse de @ Starx ci-dessous.
Dan
3
Pour la toute dernière étape (création de sym-link dans 14.04), je le recommanderais, sudo a2enconf fqdnbien que techniquement, cela devrait être la même chose.
nuala
176

13.10 ou plus récent

Depuis Apache 2.4, disponible par défaut à partir de 13.10, vous ne pouvez pas utiliser la méthode pour ajouter un fichier de configuration dans le conf.drépertoire.

Apache n'utilise plus le conf.drépertoire. Tous les fichiers de configuration sont stockés dans le /etc/apache2/conf-availablerépertoire et tous les fichiers de configuration doivent maintenant avoir une .confextension.

Pour résoudre ce message dans Apache 2.4, nous devons créer un fichier de configuration dans le répertoire conf-available. Par exemple servername.conf.

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

Et à l'intérieur de cela, nous avons juste besoin d'ajouter une ligne

ServerName localhost

Vous pouvez combiner les deux commandes précédentes en une avec:

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

Si vous souhaitez utiliser un nom de domaine ou tout autre nom en fonction de vos besoins, remplacez-le localhostpar tout ce dont vous avez besoin. Ensuite, vous devez activer cette configuration. Pour cela, vous devez exécuter la commande suivante:

sudo a2enconf servername

a2enconfest une commande pour activer un fichier de configuration dans Apaches 2.4. Notez également que servernamela commande ci-dessus provient du nom du fichier de configuration servername.conf. Si votre fichier de configuration était ngenericserver.confalors vous auriez à écrire sudo a2enconf ngenericserver.

Après cela, rechargez le serveur et le message ci-dessus ne vous posera plus aucun problème.

sudo service apache2 reload

ou

sudo apache2ctl graceful

Maintenant, après cela, vous verrez que le message ne sera plus affiché et que le problème sera résolu.

Starx
la source
3
Est-ce que quelqu'un sait comment faire dire à Apache avec quel fichier de configuration il a un problème? Je ne sais pas pourquoi les développeurs ne pensent jamais à mettre cela dans leurs messages d'erreur - cela prend à peine beaucoup de code!
John Y
Si j'ai un fqdm Internet pour ce serveur, est-ce l'endroit pour le mettre? Par exemple, dois-je remplacer myhost.org à la place de localhost?
CPBL
1
@CPBL Ce sera le nom du serveur par défaut pour tous les sites. Si vous n'avez qu'un seul site, c'est tout ce que vous devez faire. Si vous avez plusieurs sites sur votre serveur, vous devrez également ajouter la directive nom_serveur pour chaque site dans leur configuration d'hôte virtuel respective.
Dan
1
Fonctionne sur 14.04 LTS.
Parto
1
Votre lien cité semble mort, corrigez s'il vous plaît.
Fredrick Gauss
28

Apache2 peut également obtenir le nom de domaine complet d'un nom d'hôte système correctement configuré plutôt que codé en dur dans le fichier de configuration apache. Le codage en dur causera également de la confusion si le nom d’hôte change. En fait, vous n'avez besoin d'aucune ServerNamedirective httpd.confni d'aucun fichier de configuration Apache.

Mettez ce qui suit dans /etc/hosts:

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

hostname.domainname.comest le nom de domaine complet de votre machine.

Avec un nom d'hôte correctement configuré dans /etc/hostname/ou avec hostnamectl, cela aidera également les autres services de votre machine à fonctionner correctement (c'est-à-dire l'invite de connexion qui s'affiche à la This is hostname.domainname.complace de This is hostname.unknown_domain.)

Andrew Mao
la source
5
+1 pour "un nom d'hôte système correctement configuré". Je voulais configurer le serveur correctement. Cela a également corrigé mon erreur dans le log[warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!?
transistor1
Pensez-vous que cela devrait fonctionner avec Apache 2.2.22? Je reçois toujours le message "Impossible de déterminer de manière fiable le nom de domaine complet du serveur, à l'aide de 127.0.1.1 pour ServerName"
David Winiecki
Est hostname localhostcensé être myubuntuservername localhost? Ou la chaîne littérale hostname localhost? Vous n'avez pas été clair dans votre réponse
Jonathan
2
Cela devrait être la réponse acceptée. Il semble que vous deviez peut-être associer le nom de domaine complet à l'adresse IP statique au lieu de 127.0.0.1.
Skippy le Grand Gourou
1
C'était la meilleure réponse pour moi sur Ubuntu 18.04. J'aimerais que la documentation soit cohérente, bien que nom de domaine pleinement qualifié ne soit pas la même terminologie ici ou ailleurs. si mon nom de domaine complet était google.com et mon nom de serveur était google, mon entrée dans / etc / hosts serait 127.0.0.1 google.com google je pourrais remplacer la ligne localhost et l'hôte local à la fin de cette ligne si je souhait. J'ai utilisé ceci: digitalocean.com/community/tutorials/…
NZ Dev
26
  • Ouvrir un terminal
  • Ouvrez le /etc/apache2/httpd.conffichier:

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • Par défaut, ce serait vide. Ajoutez simplement la ligne suivante:

    ServerName localhost
    
  • Enregistrez le fichier et quittez

  • Redémarrer le serveur

    sudo service apache2 restart
    

[1] Lancer l'éditeur par défaut, voir sudo update-alternatives --config editor

vert
la source
après l’exécution de la dernière commande, l’erreur suivante se produit ** Redémarrage du serveur Web apache2 / usr / sbin / apache2ctl: 87: ulimit: limite de paramétrage d’erreur (opération non autorisée) / usr / sbin / apache2ctl: 87: ulimit: limite de paramétrage d’erreur (opération non autorisée) autorisée) (13) Autorisation refusée: make_sock: impossible de se lier à l'adresse 0.0.0.0:80 pas de sockets d'écoute disponibles, fermeture Impossible d'ouvrir les journaux L'action 'start' a échoué. Le journal des erreurs Apache peut contenir plus d'informations. [échec] ** @ green7
Deepu
essayez 'sudo service apache2 restart'
waterloo2005
20

Dans la nouvelle version d'apache2, il suffit de suivre la commande comme ceci:

sudo nano /etc/apache2/apache2.conf

Ajoutez la nouvelle ligne suivante à la fin du fichier:

ServerName localhost

Puis redémarrez apache2:

sudo service apache2 restart

C'est fait.

empugandring
la source
6

Je trouve qu'il est un peu mieux de créer un nouveau fichier dans /etc/conf.dlequel modifier apache2.confou httpd.conf.

C'est une préférence personnelle qui garde mes modifications de configuration séparées du package de distribution. Les mises à jour sont donc moins compliquées.

Je crée le fichier /etc/apache2/conf.d/AAserverNameet il ne contient que:

ServerName myhost.mycomain.tld

Les autres suggestions fonctionnent certainement aussi.

areeda
la source
2

Dans Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name
Eduardo Cuomo
la source
1

Ajouter ServerName localhost

À

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

Ce n'est pas une erreur .. C'est juste un rappel à un ami

Serem
la source
1

Pour ce faire, spécifiez ServerName localhostdans vos fichiers de configuration en dehors des sections de l'hôte virtuel.

Certaines autres réponses suggèrent que vous devriez modifier /etc/apache2/httpd.conf. Ce fichier est écrasé quand apache est mis à jour depuis apt. Pour la configuration Apache que vous ne souhaitez pas écraser, vous devez créer un nouveau fichier. Voici la "méthode Debian" pour modifier cette configuration:

# 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

Ceci est fondamentalement la même chose que la réponse de Stark, mais dans un format facile à copier et coller. J'avais initialement posté cette question dans une question marquée comme étant en double: https://askubuntu.com/a/432408

Stephen Ostermiller
la source
1

Sur Ubuntu 16.04 :

Ajoutez ServerName localhostau fichier en httpd.confutilisant la commande suivante.

sudo vi  /etc/apache2/httpd.conf

Ensuite, incluez cette ligne Include httpd.confà la fin de ce fichier

sudo vi /etc/apache2/apache2.conf

Vérifier à nouveau les erreurs de syntaxe

sudo apache2ctl configtest

Vous devriez maintenant obtenir

Syntax OK

Vous pouvez maintenant redémarrer le serveur en rechargeant la configuration.

sudo service apache2 reload

ou tuer le processus et recommencer

sudo service apache2 restart
Dominic Motuka
la source
0

Sur Ubuntu 11.10, j'ai vu ce message, ainsi qu'un démarrage bloqué survenant parce que mon disque était plein. L'un des fichiers journaux était devenu indésirable . Il n’ya probablement pas eu de problème avec Apache, mais ce message était le dernier indice donné avant le blocage du démarrage.

Pour résoudre le problème, je devais démarrer en mode de récupération et supprimer le fichier journal capricieux.

nobar
la source
0

Si vous utilisez bash et que vous voulez des dépendances minimales (et que vous souhaitiez juste une ligne pour votre script de point d’entrée si vous utilisez Docker comme moi), ces deux options devraient fonctionner.

Si vous voulez localhost:

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

Si vous voulez le nom d'hôte existant:

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

Ceci utilise les opérateurs de redirection bash pour ajouter la chaîne à la fin du fichier. Echo insère automatiquement la nouvelle ligne, vous êtes donc prêt.

Andrew Odri
la source
0

Exécutez la commande suivante:

apachectl -t -D DUMP_INCLUDES

pour déterminer le chemin d'accès à votre httpd.conffichier de configuration, puis éditez ce fichier et décommentez / modifiez la ligne spécifiant la valeur de l' ServerNameoption, par exemple

ServerName localhost

Pour le serveur Web, utilisez le nom DNS enregistré (par exemple example.com).

Si votre hôte ne possède pas de nom DNS enregistré, entrez son adresse IP ici.

Kenorb
la source
0

Sur Ubuntu 16.04 :

Ajoutez ServerName localhostau fichier en httpd.confutilisant la commande suivante.

sudo vi  /etc/apache2/httpd.conf

Ensuite, incluez cette ligne Include httpd.confà la fin de ce fichier

sudo vi /etc/apache2/apache2.conf

Vérifier à nouveau les erreurs de syntaxe

sudo apache2ctl configtest

Vous devriez maintenant obtenir

Syntax OK

Vous pouvez maintenant redémarrer le serveur en rechargeant la configuration sudo service apache2 restart

Dominic Motuka
la source