Linux : comment vérifier l’état d’un serveur Apache et son uptime ?

I. Présentation

Dans ce tutoriel, nous allons apprendre à vérifier l'état d'un serveur web Apache sous Linux. Nous verrons aussi comment obtenir son uptime pour savoir depuis combien de temps il est actif.

Plusieurs commandes seront utilisées dans cet article :

  • systemctl
  • apachectl
  • netstat
  • ps

II. Vérifier l'état d'Apache2 avec systemctl

La commande systemctl est indispensable pour gérer les services sous Linux, en l'occurrence sous Debian qui est utilisé pour cette démonstration. Au-delà de permettre de démarrer, redémarrer ou arrêter un service, elle permet aussi d'obtenir son statut !

Ainsi, il suffira d'exécuter cette commande pour afficher l'état du service Apache2 :

systemctl status apache2

Sur RHEL, Fedora ou Rocky Linux, le service se nomme "httpd" donc la commande sera légèrement différente :

systemctl status httpd

Dans l'exemple ci-dessous, on peut constater que le service Apache2 est actif avec l'état "running", et que l'uptime est de 3 mois et 22 jours. Cela signifie que le service Apache2 tourne depuis cette durée. S'il y a une erreur ou que le service Apache2 est arrêté, le statut sera différent. Dans ce cas, il conviendra de s'intéresser aux journaux pour identifier la cause du plantage.

Etat du service Apache2

III. Vérifier l'état d'Apache2 avec apachectl

Apache2 est livré avec une commande très utile que l'on utilise souvent pour vérifier la syntaxe des fichiers de configuration, après modification, avant d'entamer un redémarrage du service : apachectl. Cette commande peut aussi être utilisée pour obtenir le statut du serveur web Apache2. Il suffit d'exécuter la commande suivant :

sudo apachectl status

Lors de l'exécution de cette commande, il est fréquent d'obtenir l'erreur ci-dessous, notamment sur une machine sans interface graphique.

/usr/sbin/apachectl: 113: www-browser: not found
'www-browser -dump http://localhost:80/server-status' failed.
Maybe you need to install a package providing www-browser or you
need to adjust the APACHE_LYNX variable in /etc/apache2/envvars

La raison est simple : la machine ne dispose pas de navigateur Web ! Pour accéder malgré tout à ces informations en local, il convient d'installer le paquet "w3m" correspondant à un navigateur en ligne de commande.

sudo apt-get install w3m

Ensuite, il suffit de relancer la même commande et cette fois-ci, le résultat s'affiche. Ici, on obtient un ensemble d'informations au sujet du serveur : sa version, la date et l'heure du dernier redémarrage, l'uptime du serveur, le total de trafic, la charge CPU, etc... C'est plus détaillé que la commande évoquée précédemment.

sudo apachectl status

Voici un exemple :

Statut Apache2 avec apachectl

Il est possible d'accéder à cette page à distance, à partir d'un navigateur web installé sur une autre machine. Toutefois, par défaut l'accès à cette page est autorisé uniquement en local (ce qui est compréhensible). Pour ajuster ce comportement, le fichier de configuration suivant doit être édité :

nano /etc/apache2/mods-enabled/status.conf

Dans ce fichier, il faut décommenter la directive "Require ip" de façon à préciser votre adresse IP ou votre sous-réseau. L'exemple ci-dessous autorise les machines du sous-réseau "192.168.200.0/24" à accéder à cette page. Il convient de limiter autant que possible l'accès à cette page.

 <Location /server-status>
   SetHandler server-status
   Require local
   Require ip 192.168.200.0/24
</Location>

Une fois que c'est fait, on enregistre les modifications et on redémarrage Apache2 :

sudo systemctl restart apache2

À partir d'une machine distante, on peut accéder à cette page via l'URL suivante :

http://<ip-serveur-apache>/server-status

On retrouve les mêmes informations qu'en local, mais cette fois-ci en mode Web.

Apache Server Status en mode web

IV. Utiliser netstat et ps

Terminons par deux commandes qui peuvent s'avérer utile pour vérifier l'état d'un serveur Apache2 : netstat et ps.

Tout d'abord, netstat va permettre de s'assurer qu'Apache2 est bien en écoute sur le port 80 et/ou le port 443 (ou un autre port...) sur la machine locale.

# Filtre sur le port 80
sudo netstat -petula | grep 80
# Filtre sur apache2
sudo netstat -petula | grep apache2

Ainsi, on pourra visualiser ce type de résultat :

tcp6   0   0   [::]:http   [::]:*   LISTEN   root   51098055   3240989/apache2

Le résultat ci-dessus montre clairement que Apache2 est en écoute sur toutes ses interfaces et le port 80.

Enfin, la commande ps sert à obtenir des informations sur les processus en cours. En théorie, si le serveur Apache2 est actif, il doit y avoir au moins un processus à son nom.

La commande ci-dessous va permettre d'obtenir la liste des processus Apache2, avec la durée d'exécution du processus (etime) et l'utilisateur propriétaire du processus (user). L'option "-e" permet de prendre la liste de tous les processus.

ps -e -o comm,etime,user | grep apache2

Apache2 - ps exemple

V. Conclusion

Grâce aux différentes commandes utilisées, nous avons pu vérifier l'état du service Apache2, afficher son statut complet, mais aussi vérifier les processus en cours et afficher sur quel port il était en écoute.

Si vous connaissez d'autres astuces ou méthodes, n'hésitez pas à commenter cet article pour en faire profiter la communauté !

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5579.Voir tous les posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.