Vous devrez peut-être redémarrer Apache® lorsque vous souhaitez que les modifications que vous apportez prennent effet ou lorsque vous devez ramener l'utilisation des ressources d'Apache à une plage normale. Cependant, parfois, Apache ne parvient pas à redémarrer. Cet article vous montre comment vérifier vos paramètres de configuration et redémarrer Apache en cas d'échec.
Remarque :Avant d'utiliser les instructions suivantes et d'apporter des modifications à vos fichiers de configuration, nous vous recommandons de sauvegarder les fichiers existants.
Vérifier la syntaxe
La cause de l'erreur peut simplement être un mot mal orthographié ou un point (.) qui n'est pas à sa place.Exécutez la commande suivante pour vérifier la syntaxe :
[user@server ~]$ httpd –S
Vous devriez voir le résultat suivant :
Syntax OK
Si vous recevez un message d'erreur similaire à celui de l'exemple de sortie suivant, vous devez corriger l'erreur avant de tenter de redémarrer Apache :
Syntax error on line 51 of /etc/httpd/conf/httpd.conf:
Invalid command 'erverRoot', perhaps misspelled or defined by a module not included in the server configuration
Consulter les journaux d'erreurs Apache
Si vous résolvez ces erreurs et qu'Apache ne redémarre toujours pas, consultez les journaux d'erreurs d'Apache. L'utilisation de deux fenêtres peut être utile. Dans une fenêtre, utilisez la commande tail contre le journal des erreurs en exécutant la commande suivante :
tail –f /var/log/httpd/error_log
Dans l'autre fenêtre, essayez de redémarrer Apache en exécutant la commande suivante :
# For RHEL/CentOS 6
[user@server ~]$ sudo /etc/init.d/httpd restart
# For Ubuntu 14/Debian 8
[user@server ~]$ sudo /etc/init.d/apache2 restart
# For RHEL/CentOS 7+
[user@server ~]$ sudo systemctl restart httpd
# For Ubuntu 16+/Debian 9+
[user@server ~]$ sudo systemctl restart apache2
Regardez la première fenêtre lors du redémarrage d'Apache pour voir les erreurs qui sont générées dans les journaux.
Apache peut également ne pas redémarrer s'il existe un autre service lié au port qu'Apache essaie d'utiliser, comme indiqué dans la sortie suivante :
Stopping httpd: [FAILED]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 2001:4801:7824:103:9ed:a5a8:3301:d53a for ServerName
[Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:443 has no VirtualHosts
[Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Cette sortie montre qu'Apache ne peut pas démarrer car un autre service est déjà affecté au port 80.
Vous pouvez soit modifier le port auquel Apache est affecté, soit vérifier si l'autre service affecté à ce port est censé être sur le port 80. Exécutez le netstat
pour identifier l'autre service qui utilise ce port, comme illustré dans l'exemple suivant :
[user@server ~]$ sudo netstat –plnt
Le résultat doit ressembler à l'exemple suivant :
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5272/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1581/master
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 5835/mysqld
tcp 0 0 :::80 :::* LISTEN 5272/sshd
tcp 0 0 ::1:25 :::* LISTEN 1581/master
Dans cet exemple, la sortie montre que Secure Shell (SSH) écoute sur le port 80, ce qui ne devrait pas être le cas. Vous pouvez remédier à cette situation en modifiant le fichier de configuration pour que SSH écoute sur un autre port, puis redémarrez Apache.
Vous pouvez également voir l'erreur suivante :
httpd dead but subsys locked, but pid exists
Cette erreur signifie qu'Apache était en cours d'exécution, mais s'est écrasé. Lorsque vous démarrez Apache, il crée un fichier de verrouillage pour indiquer qu'il est en cours d'exécution. Le fichier de verrouillage permet d'empêcher l'exécution de plusieurs instances. Lorsque vous arrêtez Apache, ce fichier de verrouillage est supprimé. Lorsqu'il se bloque, cependant, le fichier de verrouillage existe toujours, mais pas le processus. Si vous voyez cette erreur, vous devez supprimer le fichier de verrouillage en exécutant les commandes suivantes :
# For RHEL/CentOS based distributions
[user@server ~]$ sudo rm /var/lock/subsys/httpd
# For Ubuntu/Debian based distributions
[user@server ~]$ sudo rm /var/lock/subsys/apache2
# For RHEL/CentOS 6
[user@server ~]$ sudo /etc/init.d/httpd restart
# For Ubuntu 14/Debian 8
[user@server ~]$ sudo /etc/init.d/apache2 restart
# For RHEL/CentOS 7+
[user@server ~]$ sudo systemctl restart httpd
# For Ubuntu 16+/Debian 9+
[user@server ~]$ sudo systemctl restart apache2
L'exécution de ces commandes supprime le fichier de verrouillage inutilisé afin qu'Apache puisse en créer un nouveau au redémarrage.
Utilisez l'onglet Commentaires pour faire des commentaires ou poser des questions. Vous pouvez également démarrer une conversation avec nous.