Installer Awstat sur Debian squeeze

Traffic horaire avec Awstats

Awstats est un logiciel qui génère des statistiques web à partir des logs du serveur. Contrairement à un analyseur basé sur JavaScript (comme Google Analytics ou Xiti) Awstats ne rate aucun visiteur, il donne des informations exhaustives. Contrairement à un analyseur php (comme phpMyVisit)  il n’est pas une charge supplémentaire pour votre serveur puisque vous le faites travailler quand vous voulez et de manière très brève (moins de 30 secondes par jour pour un site raisonnable).

De plus Awstats donne des informations plus orientées serveur (hits, types de fichiers, bande passante, erreurs 404…) il est donc très utile pour un administrateur.

Bien sur il est toujours utile d’avoir simultanément un analyseur Javascript pour avoir des informations plus élaborées mais le fait d’avoir son analyseur en local est tout de même rassurant.

Nous allons donc installer Awstats sur une Debian Squeeze. Nous supposons que le domaine qui nous intéresse est domaine.tld et que notre site est situé dans le répertoire /var/www/domaine.tld/.

On suppose également que vos fichiers log sont dans le répertoire /var/log/apache2/ et qu’ils sont sous la forme domaine.access.log avec le format combined.

Installation

Avant toute chose, nous allons créer un sous-dossier par lequel nous allons accéder aux statistique Awstats :

# mkdir /var/www/domaine.tld/stats/

Puis, il faut installer le paquet Awstats :

# apt-get install awstats

Ensuite, on crée un fichier de configuration à partir d’un modèle :

# cp /etc/awstats/awstats.conf /etc/awstats/awstats.domaine.tld.conf

On édite ce fichier de conf :

# vi /etc/awstats/awstats.domaine.tld.conf

On y change les lignes suivantes (les trouver dans le fichier) :

LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/apache2/domaine.access.log.1 /var/log/apache2/domaine.access.log |"
LogFormat=1
SiteDomain="domaine.tld"
HostAliases="localhost 127.0.0.1 www.domaine.tld domaine.tld"
DNSLookup=0
DirIcons="awstats-icon"

Ici, Awstats va analyser le fichier de log courant ainsi que le précédent. Ça double le temps d’analyse, mais ça permet d’éviter de perdre des lignes de log au moment de la rotation. c’est pas très fin, mais c’est simple et infaillible.
On décommente également les lignes suivantes (vers la fin du fichier) :

LoadPlugin="decodeutfkeys"
LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat"

Le premier plugin permet de gérer l’UTF-8 et le deuxième permet de connaître le pays d’origine de vos visiteurs.
On fait un lien pour avoir les images d’Awstats :

# ln -s /usr/share/awstats/icon/ /var/www/domaine.tld/stats/awstats-icon

On installe le module perl geo-ip et aussi celui pour décoder l’utf-8 :

# apt-get install libgeo-ip-perl liburi-perl

On récupère la base de données Geo-ip :

# cd /usr/share/GeoIP
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip -f GeoIP.dat.gz

Voilà, Awstats est près à fonctionner, il ne reste plus qu’à savoir s’en servir.

Utilisation

Pour utiliser Awstats, il faut passer par deux étapes :

  1. Mettre à jour la base d’Awstats à partir des fichiers de Log.
  2. Générer les pages HTML pour visualiser les stats.

Première grosse mise à jour (à ne faire qu’une fois, ça peut prendre plusieurs minutes) :

# perl /usr/lib/cgi-bin/awstats.pl -config=domaine.tld -LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/apache2/domaine.access.log* |" -update

Pour les mises à jour quotidiennes :

# perl /usr/lib/cgi-bin/awstats.pl -config=domaine.tld -update

Pour construire les pages :

# perl /usr/share/awstats/tools/awstats_buildstaticpages.pl -config=domaine.tld -lang=fr -awstatsprog=/usr/lib/cgi-bin/awstats.pl -dir=/var/www/domaine.tld/stats/

Voilà, maintenant vous avez vos stats qui vous attendent à l’adresse suivante : http://domaine.tld/stats/awstats.domaine.tld.html

Pour finir, on automatise tout ça en créant une tâche cron qui fait ça toutes les nuits.

Automatisation

On crée un fichier update-awstats.sh pour regrouper les deux commandes de mise à jour :

# vi /root/script/update-awstats.sh

(Si vous n’avez pas de répertoire script, créez-le)
Dans ce fichier on met les deux commandes suivantes :

perl /usr/lib/cgi-bin/awstats.pl -config=domaine.tld -update
perl /usr/share/awstats/tools/awstats_buildstaticpages.pl -config=domaine.tld -lang=fr -awstatsprog=/usr/lib/cgi-bin/awstats.pl -dir=/var/www/domaine.tld/stats/

On rend le fichier exécutable :

# chmod +x /root/script/update-awstats.sh

Et enfin on crée une tâche cron pour exécuter cette commande toutes les nuits :

# crontab -e

Et dans le fichier rentrer les lignes suivantes :

# Awstats : tous les jours à 5h00
00 5 * * * /root/script/update-awstats.sh

Normalement vous aurez maintenant toujours des stats à jour.