Linux : comment vérifier l’état d’un serveur Apache et son uptime ?
Sommaire
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.
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 :
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.
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
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é !
Salut Florian.
Après avoir fait un systemctl status apache2 on obtient en fin de fichier :
lines 1-13/13 (END)
Ma question est bête, mais comment fait-on pour quitter cette page ?