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

Redémarrage automatique d'apache web server et ceci après un crash

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

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
Translate »
 
Laisser un commentaire
Votre commentaire
Avez-vous des commentaires supplémentaires?
Suivant
Entrez votre e-mail si vous souhaitez que nous vous contactions au sujet de vos commentaires.
Retour
Envoyer
Merci d'avoir envoyé vos commentaires!
%d blogueurs aiment cette page :