AWStats est responsable d'extraire des statistiques de la fréquentation du site web.
Installation des paquets Debian :
apt-get install awstats libgeo-ipfree-perl
Il faut que AWStats puisse accéder aux logs Apache. Comme le paquet Debian
prévoit que les scripts tourneront en tant que www-data
, on va changer le
groupe des logs déjà générés :
chgrp -R www-data /var/log/apache2
La configuration par défaut est dans /etc/awstats/awstats.conf
. Afin de
faciliter les mises à jour, on y touche pas.
Les modifications pour tout le système se font en ne mettant que les réglages
spécifiques dans le fichier /etc/awstats/awstats.conf.local
.
Le changement le plus important est l'utilisation de /srv/awstats/data
comme
répertoire pour les données. Pour ça, on ajouter dans
/etc/awstats/awstats.conf.local
:
DirData="/srv/awstats/data"
Et on va faire un lien symbolique pour remplacer le répertoire contenu dans le paquet Debian :
mkdir -p /srv/awstats
mv /var/lib/awstats /srv/awstats/data
ln -s /srv/awstats/data /var/lib/awstats
Les réglages spécifiques au site de Nos oignons se fait dans un nouveau fichier,
baptisé /etc/awstats/awstats.nos-oignons.net.conf
.
Une fois la configuration faite, on peut générer un premier jeu de données via :
sudo -u www-data /usr/lib/cgi-bin/awstats.pl -config=nos-oignons.net \
-LogFile="/usr/share/awstats/tools/logresolvemerge.pl -showsteps /var/log/nginx/access.log* /var/log/nginx/access.log* |" \
-update
Cela permet d'extraire les informations à partir des anciens logs encore présent sur le système.
On peut générer un premier jeu de pages statiques via :
ls /srv/awstats/data |
sed -n -e 's/^awstats\([0-9][0-9]\)\([0-9][0-9][0-9][0-9]\)\.\(.*\)\.txt$/\1 \2 \3/p' |
while read month year host; do
sudo -u www-data mkdir -p /var/cache/awstats/$host/$year/$month
sudo -u www-data /usr/share/awstats/tools/awstats_buildstaticpages.pl -config=$host -year=$year -month=$month \
-lang=fr -staticlinksext=fr.html -dir=/var/cache/awstats/$host/$year/$month/
done
Pour rendre les statistiques accessibles depuis le web, on va donc ajouter dans
/etc/nginx/sites-available/https
:
location /stats {
alias /srv/awstats/html;
auth_basic "Statistiques de fréquentation";
auth_basic_user_file /etc/nginx/passwd/wiki_ca;
}
location /awstats {
alias /srv/awstats/html;
auth_basic "ca stats";
auth_basic_user_file /etc/nginx/passwd/wiki-ca;
}
location /awstats-icon {
alias /usr/share/awstats/icon;
}
Un tout dernier réglage : il faut demander à logrotate de mettre à jour les
statistiques une dernières fois avant de faire tourner les logs Nginx.
Pour ça, on va créer le répertoire /etc/logrotate.d/httpd-prerotate
s'il
n'existe pas déjà, puis mettre dans le
fichier /etc/logrotate.d/httpd-prerotate/awstats
:
#!/bin/sh
set -e
if [ -x /usr/share/awstats/tools/update.sh ]; then
su -l -c /usr/share/awstats/tools/update.sh www-data
fi
Il faut rendre ce dernier exécutable ;
chmod +x /etc/logrotate.d/httpd-prerotate/awstats
Il faut également modifier /etc/logrotate.d/nginx
pour modifier :
create 640 root www-data