Comment redémarrer Apache en cas d'erreurs sous Linux ?

Réponses rédigées par Antoine
Dernière mise à jour : 2020-03-31 14:12:18
Thèmes : linux - apache
Question

Comment faire pour redémarrer automatiquement Apache en cas d'erreurs, erreur 500 par exemple, ou en cas de crash, sous Linux ?

Réponse

Si un problème survient avec Apache, cela aura généralement deux conséquences possibles : soit Apache a planté et le service ne tourne plus, soit Apache génère une erreur, généralement une erreur 500.

Dans tous les cas de figure, il faut relancer Apache. Pour cela il suffit de tester la réponse http_code sur l'un des domaines. Si la réponse n'est pas un code 200, quelque chose ne va pas, on redémarre donc Apache.

Pour ce faire il suffit de créer un fichier que l'on nomme par exemple test_apache.sh, dont voici le code :

test1=$(curl -sL -w "%{http_code}" -I https://www.collaborativejob.com -o /dev/null);
if [ "$test1" != 200 ]; 
then
	echo "Pb ! on restart apache"
	/sbin/service httpd restart
	echo "OK" | /bin/mail -s "https://www.collaborativejob.com httpd restart" no-reply@collaborativejob.com
	sleep 10
	test2=$(curl -sL -w "%{http_code}" -I https://www.collaborativejob.com -o /dev/null);
	if [ "$test2" != 200 ]; then
		echo "DOWN" | /bin/mail -s "https://www.collaborativejob.com httpd est down" no-reply@collaborativejob.com
	fi
else
	echo "Aucune erreur"
fi

Il vous faudra modifier l'URL du domaine ainsi que l'adresse mail.

Ce script vérifie une première fois le statut http_code du domaine, redémarre Apache si nécessaire, envoie un mail à l'admin ; puis test de nouveau si le service Apache a correctement redémarré et quel est le statut de la réponde http_code, si Apache a encore planté, ou que le service n'a pas correctement redémarré, le script avertit l'admin.

Pour automatiser l'exécution du script et vérifier automatiquement si Apache est en erreur, mettez en place une tâche CRON.