Vous êtes ici : » Accueil» Apache » Bash : script de redémarrage automatique après un crash apache.

Bash : script de redémarrage automatique après un crash apache.

(Dernière mise à jour le: 23 septembre 2021)

J’ai un serveur apache tournant sous Debian hébergé chez OVH avec plusieurs sites internet.

Depuis plusieurs mois, entre 5 et 20 fois par jours, apache devient inaccessible pendant 30 à 60 secondes puis fonctionne de nouveau. Et donc pour nos clients, le site rame jusqu’à la fin de la coupure…

J’ai d’abord testé les autres services qui sont tous accessibles sans problème: SSH, FTP, mails. Concernant les logs apache, ils s’arrêtent littéralement pendant la coupure et rien n’y apparait.

Remarque : Avant d’exécuter le script pensez à changer les valeurs par défaut : exemple.com par votre nom de domaine et renseigner une adresse e-mail valide pour l’administrateur. 

#!/bin/sh
# Script qui vérifie si Apache est toujours actif, si non
# ce script effectue les taches suivante:
#   - il envoi par e-mail les dernières lignes des fichiers journaux
#   - il redémarre apache
# -- Thomas, 2005/06/06
# -- SeeSoon, 2021/05/11
#-------------------------------------------------------------------
# Définition des varialbles par défaut
#-------------------------------------------------------------------
  PATH=/bin:/usr/bin
  THEDIR=/tmp/apache-watchdog
  EMAIL=webmaster@example.com
  mkdir -p $THEDIR
# ------------------------------------------------------------------
# Voir si apache est encore actif ou pas et cela pendant 10 secondes
# ------------------------------------------------------------------
if ( wget --timeout=10 -q -P $THEDIR https://www.example.com/robots.txt )
then
   # Si apache est actif
   touch ~/.apache-was-up
else
   # apache non actif, 
   if [ -f ~/.apache-was-up ]
   then
       # rédiger un joli e-mail
       echo -n "Apache s'est écrasé " > $THEDIR/mail
       date >> $THEDIR/mail
       echo >> $THEDIR/mail
       echo "Access log:" >> $THEDIR/mail
       tail -n 30 /var/log/apache2/access.log >> $THEDIR/mail
       echo >> $THEDIR/mail
       echo "Error log:" >> $THEDIR/mail
       tail -n 30 /var/log/apache2/error.log >> $THEDIR/mail
       echo >> $THEDIR/mail
       # Redémarrer apache
       echo "Maintenant donner un coup de pied à Apache..." >> $THEDIR/mail
       /usr/sbin/apache2 -k stop >> $THEDIR/mail 2>&1
       killall -9 apache2 >> $THEDIR/mail 2>&1
       /usr/sbin/apache2 -k start >> $THEDIR/mail 2>&1
       # Envoyer l'e-mail de notification pour avertir l'administrateur
       echo >> $THEDIR/mail
       echo "Bonne chance au dépannage!" >> $THEDIR/mail
       mail -s "apache-watchdog: apache crashed" $EMAIL < $THEDIR/mail
       rm /root/.apache-was-up
   fi
fi 
rm -rf $THEDIR

Laisser un commentaire

Translate »