Installation
L’installation de base car, même s’il n’est pas dans sa dernière version, Awstats est disponible dans les dépôts de base de Debian. On lance donc la commande :
- sudo apt-get install awstats
Une fois installé il est nécessaire de configurer différents éléments pour que le script de mise à jour puisse accéder aux informations à comptabiliser.
Configuration de logrotate pour récupérer les données des logs d’Apache
Le script appelé en cron par awstats, dans le fichier /etc/cron.d/awstats
est utilisé avec l’utilisateur de base d’Apache à savoir www-data
. Il est donc nécessaire que cet utilisateur puisse avoir accès aux différents fichiers de logs.
Pour cela on édite le fichier qui gère la rotation des logs d’Apache :
- sudo nano /etc/logrotate.d/apache2
On remplace la ligne commençant par create
par la suivante :
- create 644 root adm
Cette ligne indique que les logs générés sont créés avec l’utilisateur root
et le groupe adm
avec les droits 644
. Normalement vous n’avez eu à modifier dans cette ligne que le dernier chiffre qui devait être 0
.
On va en profiter également pour ajouter une commande exécutée juste avant la rotation des logs d’apache, afin d’éviter de perdre des visites dans les comptes.
Pour ce faire, dans le même fichier, juste avant la ligne débutant par postrotate
, ajoutez celles-ci :
- prerotate
- if [ -x /usr/share/awstats/tools/update.sh ]; then
- /usr/share/awstats/tools/update.sh > /dev/null
- fi
- endscript
La commande /usr/share/awstats/tools/update.sh
correspond au script bash lancé pour mettre à jour les données collectées.
Après avoir sauvegarder, on donne les droits 644
à chaque fichier access.log
créés par Apache ainsi que 755
au répertoire /var/log/apache2
. Les fichiers par défaut sont dans le répertoire /var/log/apache2/
.
On lance donc la commande suivante :
- chmod 644 /var/log/apache2/access.log*
- chmod 755 /var/log/apache2/
Vous devez le faire également sur les fichiers dont vous auriez pu modifier l’emplacement dans les différents virtualhosts.
Modification de la configuration d’Apache relative à Awstats
Dans un premier temps, on va régler le format par défaut des fichiers de logs analysés.
On crée le ensuite le répertoire qui contiendra les fichiers nécessaires à créer pour la visualisation :
- sudo mkdir /var/www/awstats
On va ensuite créer un vitualhost spécifique "awstats" à la consultation des logs.
On édite donc le fichier suivant :
- sudo nano /etc/apache2/sites-available/awstats
Dans lequel on met ceci (modifiez en fonction d’un nom de domaine pointant sur votre serveur, dans notre cas stats.domaine.example
) :
- <VirtualHost *:80>
- ServerName stats.domaine.example
- ServerAdmin postmaster@domaine.example
- ScriptAliasMatch ^/awstats\.pl$ /usr/lib/cgi-bin/awstats.pl
- DocumentRoot /var/www/awstats
- <Directory "/usr/lib/cgi-bin">
- AllowOverride None
- Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
- Order allow,deny
- Allow from all
- AuthUserFile /var/www/awstats/.htpasswd
- AuthName "Restricted Access"
- AuthType Basic
- Require valid-user
- </Directory>
- Alias /awstats-icon/ /usr/share/awstats/icon/
- <Directory /usr/share/awstats/icon>
- Options None
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
- </VirtualHost>
On active ensuite le site avec la commande :
- sudo a2ensite awstats
On crée le htpass pour l’authentification, où username
est à remplacer par votre nom d’utilisateur :
- sudo htpasswd -c /var/www/awstats/.htpasswd username
Si vous souhaitez ajouter un autre utilisateur, utilisez la même commande en enlevant l’option -c
qui sert à créer le fichier et bien sûr username
qui est déjà créé.
On donne les bons droits au fichier htpasswd créé :
- chown -Rvf www-data:www-data /var/www/awstats/.htpasswd
On peut ensuite redémarrer le serveur Apache pour prendre en compte les modifications :
- sudo /etc/init.d/apache2 restart
Configuration de Awstats lui-même
Lors de la mise à jours des informations, le script de collecte parcourt l’ensemble des fichiers du répertoire /etc/awstats
finissant par .conf
et les passe en paramètre du script.
Un fichier de configuration par virtualhost Apache
Pour avoir les statistiques de chaque sous domaine, la meilleure solution est que chaque virtualhost utilise son propre fichier de log access.log
via la directive CustomLog
dans leur configuration. Leur format doit être combined
.
Ensuite, pour chaque virtualhost, on va créer un fichier de configuration pour awstats.
Prenons l’exemple du domaine domaine.example
, on souhaite par exemple récupérer les statistiques du virtualhost qui affiche www.domaine.example
.
La définition de ses logs doit ressembler à cela dans son virtualhost par exemple :
- CustomLog /var/log/apache/domaine.log combined
On crée un nouveau fichier de configuration awstats en copiant celui de référence :
- sudo cp /etc/awstats/awstats.conf /etc/awstats/www.domaine.example.conf
Puis on édite cette nouvelle configuration :
- sudo nano /etc/awstats/www.domaine.example.conf
On y met au moins ces lignes :
- LogFile="/var/log/apache2/domaine.log"
- LogFormat = 1
- LogType=W
- DNSLookup=1
- SiteDomain="domaine.example"
- HostAliases="127.0.0.1 http://www.domaine.example domaine.example"
- DirIcons="/awstats-icon"
- AllowFullYearView=3
Les statistiques sont alors visibles à l’adresse http://stats.domaine.example/awstats.pl?config=www.domaine.example
, vous devrez vous identifier grâce au htpasswd créé plus tôt. Le paramètre d’URL www.domaine.example
correspond au nom de fichier de configuration d’awstats auquel on enlève awstats.
et .conf
.
Lors de la première connexion, si la tâche CRON n’a toujours pas eu lieu, vous pouvez lancer manuellement l’analyse des logs par la commande :
- sudo -u www-data /usr/bin/perl /usr/lib/cgi-bin/awstats.pl -update -config=www.domaine.example