Pimped Apache Status
Sommaire
Présentation
Cette section a pour objet de regrouper les sujets liés à l'utilisation de l'outil Pimped Apache Status.
Plus d'informations sur le site de l'éditeur : https://www.axel-hahn.de/docs/apachestatus/index.htm.
Installation
Prérequis
Serveur maître
- Serveur web
- N'importe quel serveur web avec PHP 7 - jusqu'à 7.3 (cela peut fonctionner avec PHP 5.3, mais il n'y aucun support pour les version de PHP5)
- Extension PHP
- php-curl
- php-xml (optional; for xml exports)
- Pas de base de données nécessaire
Serveurs supervisés
- Versions
- Apache 2.x
- Modules activés
- mod_status
- ExtendedStatus
- Accès
- Autoriser le serveur maître d'accéder à l'alias /server-status
S'aider de la page Apache mettre en place ces prérequis.
Déploiement
Serveur maître
Dossier applicatif
Se connecter en SSH sur le serveur maître et télécharger la dernière version de pimped-apache-status (la 2.03.03 à ce jour) :
wget -O ~/downloads/pimped-apache-status-2.03.03.zip https://github.com/axelhahn/pimped-apache-status/archive/master.zip
Se rendre dans le dossier /data/www
:
cd /data/www/PimpedApacheStatus
Définir temporairement un umask à 0002 :
umask 0002
Décompresser l'archive :
unzip ~/downloads/pimped-apache-status-2.03.03.zip -d /data/www/PimpedApacheStatus/
Renommer le dossier décompresser avec le numéro de la version téléchargée :
mv pimped-apache-status-master pimped-apache-status-2.03.03
Faire pointer le lien symbolique /data/www/PimpedApacheStatus/current
vers le dossier de la version à installer :
ln -s /data/www/PimpedApacheStatus/pimped-apache-status-2.03.03 /data/www/PimpedApacheStatus/current
Donner les droits à tous les fichiers à l'utilisateur Apache :
chown -R www:www /data/www/PimpedApacheStatus
Redéfinir le umask par défaut :
. /etc/profile
Configuration PHP
Créer le dossier de logs /data/logs/pimpedapachestatus
et donner les droits à l'utilisateur www :
mkdir /data/logs/pimpedapachestatus chown www:www /data/logs/pimpedapachestatus
Créer un fichier /local/php/php7/etc/php-fpm.d/pimpedapachestatus.conf
et y ajouter les lignes suivantes :
[pimpedapachestatus]
user = php-fpm
group = php-fpm
; Socket Unix dédié à PimpedApacheStatus
listen = /local/php/sockets/php7_$pool.sock
; Donner à Apache (www) les droits d'accès au socket
listen.owner = www
listen.group = www
; Définition du chemin d'accès des logs
access.log = /data/logs/$pool/$pool_php7.access.log
slowlog = /data/logs/$pool/$pool_php7.log.slow
php_admin_value[error_log] = /data/logs/$pool/$pool_php7.log
php_admin_flag[log_errors] = on
; https://www.php.net/manual/fr/errorfunc.constants.php
php_admin_value[error_reporting] = E_NOTICE
; Tuning du pool php-fpm
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /status
ping.path = /ping
Redémarrer PHP pour prise en compte :
systemctl restart php7-fpm.service
Configuration Apache
Dans le fichier /local/www/current/conf/sites/myserver.conf
, ajouter les lignes suivantes :
# Configuration du module mod_status
<Location /server-status>
SetHandler server-status
Require ip X.X.X.X
</Location>
<Location /server-info>
SetHandler server-info
Require ip X.X.X.X
</Location>
# Fin de configuration du module mod_status
# Configuration PimpedApacheStatus
Alias /pas /data/www/PimpedApacheStatus/current
<Directory "/data/www/PimpedApacheStatus/current">
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
Require all granted
<FilesMatch \.php$>
SetHandler "proxy:unix:/local/php/sockets/php7_pimpedapachestatus.sock|fcgi://localhost/"
</FilesMatch>
</Directory>
# Fin de configuration PimpedApacheStatus
Dans le fichier /local/www/current/conf/httpd.conf
, ajouter la directive suivante :
ExtendedStatus On
Redémarrer Apache pour prise en compte :
systemctl restart http.service
Serveurs supervisés
Configuration Apache
Pour chaque serveur à superviser, il faudra identifier la localisation des binaires d'Apache avec la commande suivante :
httpd -V|grep HTTPD_ROOT|awk -F\" '{print $2}'
Par exemple, sur un serveur, cela donnerait le résultat /local/www/2.4.12
.
Ainsi, dans le fichier /local/www/2.4.12/conf/httpd.conf
, ajouter la directive suivante :
ExtendedStatus On
Il faudra également identifier le fichier contenant la configuration du vhost ayant pour ServerName le nom du serveur à superviser.
Par exemple, un serveur nommé myserver, en lançant la commande :
httpd -S
dont le retour est le suivant :
VirtualHost configuration: *:80 is a NameVirtualHost default server un.autre.site.com (/local/www/2.4.12/conf/extra/httpd-vhosts.conf:26) port 80 namevhost un.autre.site.com (/local/www/2.4.12/conf/extra/httpd-vhosts.conf:95) port 80 namevhost un.site.fr (/local/www/2.4.12/conf/extra/httpd-vhosts.conf:134) port 80 namevhost myserver (/local/www/2.4.12/conf/extra/httpd-vhosts.conf:152) ServerRoot: "/local/www/2.4.12" Main DocumentRoot: "/data/www" Main ErrorLog: "/data/logs/default_error.log" Mutex ssl-stapling: using_defaults Mutex ssl-cache: using_defaults Mutex default: dir="/local/www/2.4.12/logs/" mechanism=default Mutex rewrite-map: using_defaults PidFile: "/local/www/2.4.12/logs/httpd.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www" id=1001 Group: name="www" id=8
On constate que, sur le port 80, le fichier de configuration du vhost ayant pour ServerName myserver est le fichier /local/www/2.4.12/conf/extra/httpd-vhosts.conf
, dont la configuration débute à la ligne 152.
Dans ce fichier, dans la section du vhost précédemment identifié, insérer les lignes suivantes :
# Configuration du module mod_status
<Location /server-status>
SetHandler server-status
Require ip X.X.X.X
</Location>
<Location /server-info>
SetHandler server-info
Require ip X.X.X.X
</Location>
# Fin de configuration du module mod_status
Attention ! Il faudra remplacer la directive Require ip X.X.X.X
par :
Order allow,deny Allow from X.X.X.X
selon la configuration du serveur Apache.
Redémarrer Apache pour prise en compte :
systemctl restart http.service
Configuration
Serveur maître
Désactivation du message d'erreur SSL
Dans les fichiers suivants :
/data/www/PimpedApacheStatus/current/views/install.php
/data/www/PimpedApacheStatus/current/views/login.php
/data/www/PimpedApacheStatus/current/views/admin/settings.php
/data/www/PimpedApacheStatus/current/views/admin/servers.php
Localiser la section suivante :
if (!isset($_SERVER['HTTPS'])){
$oMsg->add($aLangTxt['error-no-ssl'], 'error');
}
Et la commenter comme ceci :
// Désactivation du message d'erreur lié à l'absence d'utilisation du SSL
//if (!isset($_SERVER['HTTPS'])){
// $oMsg->add($aLangTxt['error-no-ssl'], 'error');
//}
Création du fichier de configuration
En ligne de commande, générer le hash d'un mot de passe avec la commande md5sum
. Par exemple, pour un mot de passe "unsupermotdepasse", passer la commande suivante :
echo -n unsupermotdepasse|md5sum|awk '{print $1}'
Cela générera le hash suivant :
f0d4908a4c4465fe1e447650132012c9
Se rendre à l'URL http://myserver/pas/admin/?&action=settings et renseigner dans la section config_user
le code suivant en incluant le hash généré précédemment :
{
"auth": {
"user": "myuser",
"password": "f0d4908a4c4465fe1e447650132012c9"
},
"selfurl": "/pas"
}
Valider la modification en cliquant sur OK.
Modifier l'hôte par défaut
Se rendre dans la section "Servers" :
Modifier le serveur nommé localhost en cliquant sur "Edit" :
Renseigner les champs comme ceci :
- Server name
- myserver
- url of status page
Cliquer en validant sur OK. Un message s'affiche pour confirmer la mise à jour :
Serveurs supervisés
Pour ajouter un serveur supervisé, s'assurer de lui avoir déployé la configuration Apache au préalable. Ensuite, se rendre dans la section "Servers" :
Cliquer sur "Add server" :
Renseigner les champs suivants, par exemple pour le serveur mysecondserver :
- Server name
- mysecondserver
- url of status page
Cliquer en validant sur OK. Un message s'affiche pour confirmer l'ajout :
Administration
Verrouiller/déverrouiller la configuration
Dans la mesure où Pimped Apache Status n'a, à ce jour, aucune moyen d'authentification auprès d'un annuaire, il n'est possible de ne configurer qu'un seul identifiant.
De ce fait, afin de partager la solution auprès de différents utilisateurs, l'identifiant et le mot de passe leur seront communiqués.
Afin de protéger les fichiers de configuration de toute modification malencontreuse, il va falloir les mettre en lecture seule. Ainsi, il ne sera plus possible d'appliquer les modifications au travers de l'interface web.
Verrouiller la configuration
Pour verrouiller la configuration, se connecter en SSH sur le serveur maître et lancer la commande suivante :
chmod ug-w /data/www/PimpedApacheStatus/current/config/config_servers.json /data/www/PimpedApacheStatus/current/config/config_user.json
Déverrouiller la configuration
Pour déverrouiller la configuration, se connecter en SSH sur le serveur maître et lancer la commande suivante :
chmod ug+w /data/www/PimpedApacheStatus/current/config/config_servers.json /data/www/PimpedApacheStatus/current/config/config_user.json
Alternative
Si l'on souhaite modifier la configuration de Pimped Apache Status sans passer les fichiers de configuration en écriture, il est possible de les éditer directement en SSH avec l'utilisateur root.