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