Awstats Multiple Site Statistics Viewer Installation

De EjnTricks

Cet article présente l'installation de Awstats Multiple Site Statistics Viewer sur une machine Ubuntu, sur laquelle Awstats est installé.

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


System-Install-icon.png Installation initiale

L'application se compose uniquement du fichier php stats.php à déployer sur un serveur web. En prenant pour hypothèse l'installation de Awstats sur un site dédié du style www.stats.jouvinio.net, la configuration Apache est modifiée afin de spécifier le paramètre DirectoryIndex:

<VirtualHost *:80>
        ServerAdmin ejouvin@free.fr
        ServerName www.stats.jouvinio.net
        DocumentRoot /var/www/stats
        DirectoryIndex index.php index.htm index.html

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/stats>
                Options Indexes FollowSymLinks Multiviews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error_stats.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access_stats.log combined

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -Multiviews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        #Alias /awstatsclasses "/usr/share/awstats/classes/"
        #Alias /awstatscss "/usr/share/awstats/css/"
        Alias /awstats-icon "/usr/share/awstats/icon/"

        ScriptAlias /awstats /usr/lib/cgi-bin/awstats.pl

</VirtualHost>

Cette configuration contient la publication de Awstats sous Apache. A noter, le paramètre DocumentRoot qui spécifie l'emplacement racine du site, soit /var/www/stats. Par conséquent, le fichier stats.php est copié dans ce répertoire, avec le nom index.php. Après rechargement de la configuration Apache, avec la commande

#sudo apache2ctl graceful

un résumé des différents sites est affiché.


Icon-Configuration-Settings.png Paramétrages

Afin d'obtenir le rapport, il est nécessaire de paramétrer le script pour indiquer:

  • Emplacement des fichiers générés par Awstats.
  • Configuration des domaines.


File-find-icon.png Emplacement des fichiers de statistiques

Le principe du script est de parser l'ensemble des fichiers générés afin d'en déduire les noms de domaines, ainsi que les différentes dates de génération. Par exemple, pour le domaine www.jouvinio.net, les statistiques du mois de janvier 2012 sont stockées dans un fichier nommé awstats012012.www.jouvinio.net.txt.

Dans le script, la boucle suivante va parcourir le répertoire configuré dans la variable $history_dir:

# Open History Directory
$dir = @opendir($history_dir);

# Check if History Directory Exists
if(!$dir) {
        echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Error Occured</title>
<link href="'.$stylesheet.'" rel="stylesheet" type="text/css">
</head>
<body>
<h1>Error</h1>
<br>Incorrect History File Path. Remember to set $history_dir to the correct path.
</body>
</html>';
        exit;
}

# Begin sorting and analyzing history files
while(($file = readdir($dir)) !== false) {
    if(substr_count($file, "awstats") == 0 && strlen($file) >= 14 || substr_count($file,".") == 0 || $file == "." || $file == "..") continue;                           # Drop all files except history files
    {
        $domname = substr($file,14,40);                                                         # Find Domain Name
                $domname = substr($domname,0,-4);                                                       # And remove trailing
                if($filter_year == false && $filter_domains == true && in_array($domname,$domain_list) == true) {
                        # CHECKED
                        $files[] = $file;
                }
                elseif($filter_year == true && $filter_domains == false && substr_count($file,date("Y")) == 1) {
                        # CHECKED
                        $files[] = $file;
                }
                elseif($filter_year == true && $filter_domains == true && substr_count($file,date("Y")) == 1 && in_array($domname,$domain_list) == true) {
                        # CHECKED
                        $files[] = $file;
                }
                elseif($filter_year == false && $filter_domains == false) {
                        # CHECKED
                        $files[] = $file;
                }
    }
}

La variable $history_dir est configurée en début de script.

# CONFIGURATION
$title			=	"Statistics for %CURRENT";		# Page Title
$history_dir		=	"/var/cache/awstats";			# Location of history files
$filter_year		=	true;					# Show only current year statistics
$filter_domains		=	true;					# Show only certain domains
$domain_list		=	array();				# List of domains to show if filter_domains is true
$build_domains		=	true;					# Show domain by domain statistics
$build_system		=	true;					# Show system statistics
$accept_query		=	true;					# Accept domain list via query string (adds to $domain_list)
									# in format ?domains=domain1.com,domain2.com,domain3.com
$format_numbers		=	true;					# Format numbers with comma's to indicate thousands

$gzip_compression	=	true;					# Enable gzip compression

$system_stats_top	=	false;					# Show system statistics above domain statistics

$stylesheet		=	$_SERVER['PHP_SELF']."?get=css";	# Default StyleSheet.

$table_width		=	"75%";					# Content table width
$table_align		=	"center";				# Content table alignment

$logo_file		=	"/icons/other/awstats_logo6.png";	# Path to the AWSTATS logo

Pour une installation par défaut sous Ubuntu de Awstats, le répertoire contenant les fichiers générés n'est pas /var/cache/awstats, mais /var/lib/awstats. Attention à ne pas confondre avec le répertoire cache de Awstats, par défaut /var/cache/awstats, où sont générées les pages HTML.

La modification de la configuration est donc la suivante:

# CONFIGURATION
$title			=	"Statistics for %CURRENT";		# Page Title
#$history_dir		=	"/var/cache/awstats";			# Location of history files
$history_dir		=	"/var/lib/awstats";			# Location of history files

Configuration App Web-Icon.png Configuration des domaines

Deux possibilités sont offertes pour la configuration des domaines pris en compte lors de l'exploration des fichiers de statistiques:

  • Filtrer une sélection de modèle.
  • Tous les domaines.

Afin de filtrer les domaines présentés, les paramètres à configurer sont:

  • filter_domains, mettre la valeur true.
  • domain_list, tableau contenant les domaines à présenter.

La configuration suivante permet de ne présenter que le domaine www.jouvinio.net:

$filter_domains                =       true;                                           # Show only certain domains
#$domain_list           =       array();                                        # List of domains to show if filter_domains is true
$domain_list            =       array('www.jouvinio.net');                                      # List of domains to show if filter_domains is true
#$accept_query          =       true;                                           # Accept domain list via query string (adds to $domain_list)
$accept_query           =       false;                                          # Accept domain list via query string (adds to $domain_list)

Le paramètre accept_query est positionné à false afin de ne pas prendre en compte les arguments depuis l'URL, qui permettrait de modifier la liste des domaines.


Icon-icon.png Paramétrage icône

Sans modification, l'icône de Awstats devant être présentée en fin de rapport, n'est pas affichée.


En effet, dans la configuration, la valeur /icons/other/awstats_logo6.png est spécifiée dans le paramètre logo_file.

$table_width            =       "75%";                                          # Content table width
$table_align            =       "center";                                       # Content table alignment

#$logo_file                     =       "/icons/other/awstats_logo6.png";       # Path to the AWSTATS logo

Or, lors de la configuration de Apache, l'alias a été positionné sous /awstats-icon

<VirtualHost *:80>
        ServerAdmin ejouvin@free.fr
        ServerName www.stats.jouvinio.net
        DocumentRoot /var/www/stats
        DirectoryIndex index.php index.htm index.html

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/stats>
                Options Indexes FollowSymLinks Multiviews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error_stats.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access_stats.log combined

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -Multiviews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        #Alias /awstatsclasses "/usr/share/awstats/classes/"
        #Alias /awstatscss "/usr/share/awstats/css/"
        Alias /awstats-icon "/usr/share/awstats/icon/"

        ScriptAlias /awstats /usr/lib/cgi-bin/awstats.pl

</VirtualHost>

La configuration du script est donc modifié afin de prendre en compte ce paramétrage.

$table_width            =       "75%";                                          # Content table width
$table_align            =       "center";                                       # Content table alignment

#$logo_file                     =       "/icons/other/awstats_logo6.png";       # Path to the AWSTATS logo
$logo_file                      =       "/awstats-icon/other/awstats_logo6.png";        # Path to the AWSTATS logo


Plugin-icon.png Extensions

Ajout lien sur rapport Awstats

Le rapport présenté est très simple et n'expose pas toutes les statistiques. Il parait intéressant de mettre en place un lien sous le nom du domaine afin de pointer sur le rapport de Awstats pour celui-ci. L'objectif est donc d'injecter un lien du type awstatsUrl/?config=domain. Dans le cas où Awstats est exposé sous l'URL /awstats sous le même site que Awstats Multiple Site Statistics Viewer, les modifications sont les suivantes:

  • Ajout d'un paramètre de configuration pour l'URL racine.
#$logo_file                     =       "/icons/other/awstats_logo6.png";       # Path to the AWSTATS logo
$logo_file                      =       "/awstats-icon/other/awstats_logo6.png";        # Path to the AWSTATS logo

$rootAwstats            =       "/awstats/?config=";  # Defined the root URL path for Awstats links

Puis la génération du tableau est modifié pour ajouter une balise <a href="..."></a>, où le texte du lien sera le nom du domaine.

foreach($domaininfo as $key => $ddata) {
	ksort($ddata);
	$output_table .= '<table width="'.$table_width.'" cellspacing="0" cellpadding="1" align="'.$table_align.'">
<tr class="header">
	' #<td width="40%" class="domain-bold">Domain: '.$key.'</td>
	.'<td width="40%" class="domain-bold">Domain: <a href="'.$rootAwstats.$key.'">'.$key.'</a></td>
	<td width="15%" class="pages-bold">Pages:</td>
	<td width="15%" class="hits-bold">Hits:</td>
	<td width="15%" class="visits-bold">Visits:</td>
	<td width="15%" class="bandwidth-bold">Bandwidth:</td>
</tr>';

Le nom du domaine devient alors cliquable et redirige vers le rapport Awstats.


Viewer icon.png Voir aussi

Documentation Ubuntu: http://sourceforge.net/projects/mssv/