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?
Ceci est juste un avertissement amical et pas vraiment un problème (car quelque chose ne fonctionne pas).
Si vous insérez un
ServerName localhost
dans httpd.conf
ou Apache2.conf
dans /etc/Apache2
et redémarrez Apache, la notification disparaîtra.
Si vous avez un nom dans /etc/hostname
, vous pouvez également utiliser ce nom au lieu de localhost
.
Et il utilise 127.0.1.1
s'il se trouve dans votre /etc/hosts
:
127.0.0.1 localhost
127.0.1.1 myhostname
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).
À partir d'Apache 2.4, disponible par défaut à partir de 13.10, vous ne pouvez pas utiliser la méthode permettant d'ajouter un fichier de configuration dans le répertoire conf.d
.
Apache n'utilise plus le répertoire conf.d
. Tous les fichiers de configuration sont stockés dans le répertoire /etc/Apache2/conf-available
et tous les fichiers de configuration doivent maintenant porter l’extension .conf
.
Afin de 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 simplement localhost
par tout ce dont vous avez besoin. Ensuite, vous devez activer cette configuration. Pour cela, vous devez exécuter la commande suivante:
Sudo a2enconf servername
a2enconf
est une commande permettant d'activer un fichier de configuration dans Apaches 2.4. Notez également que servername
de la commande ci-dessus provient du nom du fichier de configuration servername.conf
. Si votre fichier de configuration était ngenericserver.conf
, vous devrez écrire Sudo a2enconf ngenericserver
.
Après cela, rechargez le serveur et le message ci-dessus ne vous posera plus de problèmes.
Sudo service Apache2 reload
ou
Sudo Apache2ctl graceful
Maintenant, vous verrez que le message ne sera plus affiché et que le problème sera résolu.
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 réalité, vous n'avez besoin d'aucune directive ServerName
dans httpd.conf
ni de fichiers 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
où hostname.domainname.com
est le nom de domaine complet de votre ordinateur.
Avec un nom d’hôte correctement configuré dans /etc/hostname/
ou avec hostnamectl
, cela aidera également les autres services de votre ordinateur à fonctionner correctement (c.-à-d. L’invite de connexion, affichant This is hostname.domainname.com
au lieu de This is hostname.unknown_domain
.)
Ouvrez le fichier /etc/Apache2/httpd.conf
:
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émarrez le serveur
Sudo service Apache2 restart
[1] Lancer l'éditeur par défaut, voir Sudo update-alternatives --config editor
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.
Je trouve qu'il est un peu mieux de créer un nouveau fichier dans /etc/conf.d
que de modifier soit Apache2.conf
ou 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/AAserverName
et il ne contient que:
ServerName myhost.mycomain.tld
Les autres suggestions fonctionnent certainement aussi.
Dans Ubuntu 16.04:
Sudo -i
echo 'ServerName localhost' > /etc/Apache2/conf-available/server-name.conf
a2enconf server-name
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
Pour ce faire, spécifiez ServerName localhost
dans 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
C'est en gros la même chose que la réponse de Stark, mais dans un format facile à copier et coller. Je l'avais initialement posté dans une question qui a été marquée comme un doublon: https://askubuntu.com/a/432408
Sur buntu 16.04:
Ajoutez ServerName localhost
au fichier httpd.conf
en utilisant 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
Sur Ubuntu 11.10, j'ai vu ce message, ainsi qu'un démarrage bloqué survenant parce que mon disque était plein. n des fichiers de log est 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.
Exécutez la commande suivante:
apachectl -t -D DUMP_INCLUDES
pour déterminer le chemin d'accès à votre fichier de configuration httpd.conf
, puis éditez ce fichier et décommentez/modifiez la ligne spécifiant la valeur de l'option ServerName
, 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.
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 le 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.
Sur buntu 16.04:
Ajoutez ServerName localhost
au fichier httpd.conf
en utilisant 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 du service Sudo Apache2 restart