Awstats est un soft qui a fait ses preuves en tant que analyseur de logs et qui va pouvoir vous sortir la fréquentation de votre site de manière extrêmement détaillée.
Installation
# apt-get install awstats
Configuration Awstats
D’abord allez dans "/etc/awstats/" et modifiez votre fichier de conf. Je mets en exemple ma conf pour le nom de domaine "moroblog.info" :
# mv /etc/awstats/awstats.conf /etc/awstats/awstats.moroblog.info.conf
On Edite ensuite le fichier de conf pour ce nom de domaine pour modifier quelques champs :
LogFile="/var/log/apache2/access.log"
LogFormat=1
SiteDomain="www.moroblog.info"
On donne le chemin des logs d’Apache 2, on spécifie le format des logs d’Awstats (le 1 est plus complet) et enfin le site à surveiller.
Attention ! N’utilisez pas le script "/usr/share/doc/awstats/examples/awstats_configure.pl" car il semblerait que sur Sarge cela pose quelques problèmes, notamment un répertoire "/usr/local/awstats/wwwroot" manquant dans la distrib. Préférez l’installation à la main, c’est rapide et ca permet de bien voir comment Awstats fonctionne.
Configuration Apache2
Maintenant que la conf d’Awstats est faite, on va dire à Apache de préparer un coin pour voir les logs. On va utiliser le fichier qui vient avec le paquet :
# cp /usr/share/doc/awstats/examples/apache.conf /etc/apache2/conf.d/awstats
Voila, cela suffit, mais on va le modifier légèrement pour nous simplifier la vie, ajoutez simplement (remplacez "moroblog.info" par votre domaine !) :
RedirectMatch ^/awstats /cgi-bin/awstats.pl?config=moroblog.info
Rechargez Apache :
# /etc/init.d/apache2 reload
Vous accéderez donc à l’interface de Awstats en tapant sur l’URL "/awstats".
Configuration du système
Vous aurez sûrement des droits à modifier pour qu’Awstats puisse aller lire les logs. Mais d’abord, comment Awstats va-t-il être appelé ?
Le paquet Awstats va installer un fichier "awstats" dans le répertoire "/etc/cron.d" qui contient :
0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null
On voit donc que awstats sera lancé toutes les 10 minutes pour qu’il aille lire les logs du serveur web et mette à jour ses statistiques. Le lecteur attentif aura remarqué que ce sont les logs d’Apache 1 qui sont décrites ici alors que je tourne avec Apache 2 ! On voit également que la config est mauvaise, pour nous, il faut prendre la config de "moroblog.info" (cf. nom du fichier de conf). Modifier le fichier "/etc/cron.d/awstats" pour :
0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache2/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=moroblog.info -update >/dev/null
Bien ! On voit aussi que awstats sera lancé avec l’utilisateur "www-data", ce qui peut poser problème pour aller lire les logs :
# ls -la /var/log/apache2/access.log
-rw-r----- 1 root adm 401633 2007-12-12 12:18 /var/log/apache2/access.log
On a un problème, awstats ne va pas pouvoir lire les logs. On va donc donner le droit en lecture pour ces logs à tout le monde :
# chmod o+r /var/log/apache2/access.log
# ls -la /var/log/apache2/access.log
-rw-r--r-- 1 root adm 402943 2007-12-12 12:19 /var/log/apache2/access.log
Enfin, nous allons paramétrer logrotate. D’abord il faut lui dire de créer les nouveaux fichiers de logs avec les bons droits : "create 644 root adm", puis lancer un update awstat avant qu’il ne rotate :
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 644 root adm
sharedscripts
prerotate
/usr/lib/cgi-bin/awstats.pl -config=moroblog.info -update
endscript
postrotate
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 restart > /dev/null
fi
endscript
}
Test
Executez l’appel qui se trouve dans le cron et vérifiez que vous n’avez pas d’erreur :
/usr/lib/cgi-bin/awstats.pl -config=awstats -update
Voila, c’est terminé :o)