0
INDEX
Trucs utiles
Pré-requis
- Dans notre exemple, AWStats est installé dans /Homes/stats
- L’éxécutable est /Homes/stats/wwwroot/cgi-bin/awstats.pl
- Les stats sont accessibles depuis https://stats.italic.fr/cgi-bin/awstats.pl?config=domaine.com
- Chaque domaine a son fichier de config dans /Homes/stats/wwwroot/cgi-bin/awstats.domaine.com.conf
Basique
- Une commande qui devrait fonctionner du premier coup avant de commencer :
host2:cgi-bin user$ /Homes/stats/wwwroot/cgi-bin/awstats.pl -config=domaine.com Create/Update database for config "/Homes/stats/wwwroot/cgi-bin/awstats.domaine.com.conf" by AWStats version 6.9 (build 1.925) From data in log file "/Homes/stats/tools/logresolvemerge.pl /Homes/logs/domaine.com/access_log.* | "... Phase 1 : First bypass old records, searching new record... Searching new records from beginning of log file... Phase 2 : Now process new records (Flush history on disk after 20000 hosts)... Jumped lines in file: 0 Parsed lines in file: 308054 Found 0 dropped records, Found 2675 corrupted records, Found 305130 old records, Found 249 new qualified records.
Comment automatiser ?
Une boucle pour chercher tous les fichiers de conf :
host2:cgi-bin user$ for i in /Homes/stats/wwwroot/cgi-bin/*.conf; do echo `basename $i`; done awstats.xxxxxxxx1.net.conf awstats.xxxxxxxx2.fr.conf awstats.xxxxxxxx3.fr.conf awstats.xxxxxxxx4.com.conf awstats.bajadaporelladoizquierdo.com.conf (...)
Modification de awstats.pl pour formats de fichiers de config
Le but est d’autoriser 2 appels :
- Soit en HTTP avec l’url config=domaine.com
- Soit en SH avec passage de parametre config=awstats.domaine.com.conf
# Open config file $FileConfig = $FileSuffix = ''; foreach (@PossibleConfigDir) { my $searchdir = $_; if ( $searchdir && $searchdir !~ /[\\\/]$/ ) { $searchdir .= "/"; } if ( open( CONFIG, "$searchdir$SiteConfig" ) ) { $FileConfig = "$searchdir$SiteConfig"; $FileSuffix = ".$SiteConfig"; last; } if ( open( CONFIG, "$searchdir$PROG.$SiteConfig.conf" ) ) { $FileConfig = "$searchdir$PROG.$SiteConfig.conf"; $FileSuffix = ".$SiteConfig"; last; } if ( open( CONFIG, "$searchdir$PROG.conf" ) ) { $FileConfig = "$searchdir$PROG.conf"; $FileSuffix = ''; last; } } if ( !$FileConfig ) { error( "Couldn't open config file \"$PROG.$SiteConfig.conf\" nor \"$PROG.conf\" after searching in path \"" . join( ',', @PossibleConfigDir ) . "\": $!" ); }
Dynamisation de la boucle
On fait en sorte que la boucle fasse les analyses une par une en acceptant le nom standard des fichiers de config de AWStats (donc awstats.*.conf), et qu’on n’ait pas besoin de saisir une liste des fichiers de conf nécessaire :
for i in /Homes/stats/wwwroot/cgi-bin/*.conf; do /Homes/stats/wwwroot/cgi-bin/awstats.pl -config=`basename $i` -update; done
Plannification en cron
Pour simplifier les choses sous OS X j’utilise Cronnix qui est pratique mais vous constatez comme moi que leur URL est vraiment à chier.
Dire que certains se plaignent avec « italic » !
DATE 29 Oct 2009