Outils pour utilisateurs

Outils du site


linux:awstats (lu 7827 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:awstats [15-07-2013 09:05]
edmc73
linux:awstats [09-01-2020 16:55] (Version actuelle)
edmc73 [Configuration pour Postfix]
Ligne 5: Ligne 5:
  
 ===== Installation ===== ===== Installation =====
 +Ici on installe la version fourni par debian, mais au moment ou j'écris ces lignes, awstats est en version 7.2 sur debian et en 7.7 stable sur le site officiel...
 +
 +La version 7.2 est sortie en 2013 et ne prend pas du tout en charge internet explorer dans ses dernières version, je conseil de prendre une version plus récente.
 +
 +Pour avoir une version plus récente, on peut télécharger la version de la distrib unstable sur => https://packages.debian.org/search?searchon=names&keywords=awstats
 +
   aptitude install awstats   aptitude install awstats
  
Ligne 33: Ligne 39:
 Afin que le fichier soit accessible en lecture pour les **autres**. Afin que le fichier soit accessible en lecture pour les **autres**.
  
-Ajouter les lignes suivantes dans la config de votre site sous apache afin de voir les images présentes dans la page des stats +<note tip>Pour la 1ère importation des logs, il convient de regrouper tous vos logs et d'importer ce gros fichiers en premier. 
-<code> +Pour créer ce gros fichier 
-# AWStats images +  ls -tr access.log.*.gz | xargs gunzip -c >> bigaccess.log 
-Alias /awstats-icon /usr/share/awstats/icon +</note
-<Directory "/usr/share/awstats/icon"+ 
-      AllowOverride None +Pour lancer la mise à jour 
-      Order allow,deny +  /usr/lib/cgi-bin/awstats.pl -config=maconfig -update
-      Allow from all +
-</Directory> +
-</code>+
  
 +Il n'est pas possible d'intégrer de vieux log, si vous voulez intégrer d'anciens fichiers, il faudra supprimer la base actuelle qui se trouve dans :
 +  cd /var/lib/awstats
 +supprimez ensuite les fichiers correspondant à votre config.
 ===== Configuration ===== ===== Configuration =====
 Mettre awstats en francais Mettre awstats en francais
Ligne 54: Ligne 60:
  
 Le nom du fichier doit toujours commencer par awstats. + votre nom de site(comme vous voulez) + .conf Le nom du fichier doit toujours commencer par awstats. + votre nom de site(comme vous voulez) + .conf
 +
 +==== Paramètre de base ====
 +
 +A modifier 
 +
 +  LogFile="/var/log/apache2/access.log"
 +  LogFormat=1
 +  SiteDomain="monsite.fr"
 +  NotPageList="css js class gif jpg jpeg png bmp ico rss xml swf eot woff woff2"
 +  AllowFullYearView=3
 +
  
 ==== Ajouter des champs spéciaux ==== ==== Ajouter des champs spéciaux ====
  
-===== Protéger l'accès par mot de passe ===== +===== Configurez Apache ===== 
-Editez votre fichier de site par defaut sous apache  +Ici nous allons accéder à awstats via un sous-domaine avec un mot de passe. 
-  vi /etc/apache2/sites-available/default+ 
 +  mkdir /var/www/awstats.mondomaine.fr 
 + 
 +Créez une config apache 
 +  vi /etc/apache2/sites-available/awstats.conf
      
-et dans la section cgi-bin, ajouter le code htaccess qui va bien. +<code apache> 
-       <Directory "/usr/lib/cgi-bin"> +<VirtualHost *:80> 
-                AllowOverride None +    ServerName awstats.mondomaine.fr 
-                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch + 
-                AuthType Basic +    DocumentRoot /var/www/awstats.mondomaine.fr 
-                AuthName "Acces Restreint" +    <Directory /var/www/awstats.mondomaine.fr> 
-                AuthGroupFile /dev/null +      AuthType Basic 
-                AuthUserFile /etc/awstats/.htpasswd +      AuthUserFile /var/www/awstats.mondomaine.fr/.htpasswd 
-                Require valid-user +      AuthName "Access Restricted" 
-        </Directory>+      Require valid-user 
 +    </Directory> 
 +    Alias /awstats-icon "/usr/share/awstats/icon/" 
 + 
 +    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
 +    <Directory "/usr/lib/cgi-bin"> 
 +      AllowOverride None 
 +      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
 + 
 +      # Pour limiter l'accès à certaine ip 
 +      #Order deny,allow 
 +      #Deny from all 
 +      #Allow from 10.0.0.0/
 +    </Directory> 
 + 
 +    <Files "awstats.pl"> 
 +      AuthUserFile /var/www/awstats.mondomaine.fr/.htpasswd 
 +      AuthName "Restricted Area For Customers" 
 +      AuthType Basic 
 +      require valid-user 
 +    </Files> 
 +</VirtualHost> 
 + 
 +</code>
  
 Vous pouvez créer le fichier .htpasswd avec la commande  Vous pouvez créer le fichier .htpasswd avec la commande 
-  htpasswd -c /etc/awstats/.htpasswd <votreLogin>+  htpasswd -c /var/www/awstats.mondomaine.fr/.htpasswd <votreLogin>
 Il vous sera ensuite demandé de taper le mot de passe 2 fois. Il vous sera ensuite demandé de taper le mot de passe 2 fois.
  
 +
 +Pour limiter l'accès à une config, ajouter la ligne suivante dans <VirtualHost>...</VirtualHost>
 +   SetEnv AWSTATS_FORCE_CONFIG domain.com
 +
 +Ensuite, l'appel à l'url **domain.com/cgi-bin/awstats.pl** chargement automatiquement la bonne config et impossible d'en charger une autre via **?config=autredomaine.com**
 +
 +Activez le module apache **cgi**
 +  a2enmod cgi
 +
 +Activez votre nouvelle config 
 +  a2ensite awstats
 +
 +Testez votre config
 +  apachectl configtest
 +
 +Si tout est ok
 +  systemctl restart apache2.service
 +
 +Ouvrez ensuite l'url suivante dans votre navigateur
 +  http://awstats.mondomaine.fr/cgi-bin/awstats.pl?config=maconfig
 ===== Configuration pour Postfix ===== ===== Configuration pour Postfix =====
  
Ligne 119: Ligne 183:
 ou ou
   /usr/lib/cgi-bin/awstats.pl -config=postfix -update     /usr/lib/cgi-bin/awstats.pl -config=postfix -update  
 +  
 +===== Bug avec les requêtes en timeout HTTP 408 =====
 +
 +Un vieux bug jamais résolu qui fait raler awstats lorsqu'un log est issue d'un timeout avec un code http 408
 +<code>
 +Error while processing /etc/awstats/awstats.xxx.conf
 +Create/Update database for config "/etc/awstats/awstats.xxx.conf" by AWStats version 7.6 (build 20161204) From data in log file "/var/log/apache2/xxx_access.log"...
 +Phase 1 : First bypass old records, searching new record...
 +Direct access after last parsed record (after line 182) AWStats did not find any valid log lines that match your LogFormat parameter, in the 50th first non commented lines read of your log.
 +Your log file /var/log/apache2/xxx_access.log must have a bad format or LogFormat parameter setup does not match this format.
 +Your AWStats LogFormat parameter is:
 +1
 +This means each line in your web server log file need to have "combined log format" like this:
 +111.22.33.44 - - [10/Jan/2001:02:14:14 +0200] "GET / HTTP/1.1" 200 1234 "http://www.fromserver.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
 +And this is an example of records AWStats found in your log file (the record number 50 in your log):
 +192.168.37.151 - - [09/Jan/2020:16:30:42 +0100] "-" 408 3277 "-" "-"
 +Setup ('/etc/awstats/awstats.xxx.conf' file, web server or permissions) may be wrong.
 +Check config file, permissions and AWStats documentation (in 'docs' directory).
 +
 +</code>
 +
 +La seule solution que j'ai trouvé, est de modifier le code d'awstats. Malheureusement, à chaque upgrade du paquet, la modif sautera mais bon... ça m'évite de recevoir un mail toutes les 10min...
 +
 +localisez votre fichier puis modifiez le
 +
 +  # locate awstats.pl
 +  /usr/lib/cgi-bin/awstats.pl
 +  # vi /usr/lib/cgi-bin/awstats.pl
 +
 +Vers la ligne 8977, modifier le regex par 
 +  "([^ ]+) [^ ]+ ([^\\/\\[]+) \\[([^ ]+) [^ ]+\\] \\\"(?:-|([^ ]+) ([^ ]+)(?: [^\\\"]+|))\\\" ([\\d|-]+) ([\\d|-]+) \\\"(.*?)\\\" \\\"([^\\\"]*)\\\"";
 +
 +Dans le code ci-dessous, j'ai mis en commentaire le regex original juste après, on peut voir qu'un autre regex était déjà en commentaire dans le code d'origine juste avant, ce qui montre que ce point semble non maîtrisé par les développeurs
 +  
 +<code perl>
 +  if ($Debug) {
 +    debug(
 +"Call To DefinePerlParsingFormat (LogType='$LogType', LogFormat='$LogFormat')"
 +    );
 +  }
 +  if ( $LogFormat =~ /^[1-6]$/ ) {    # Pre-defined log format
 +    if ( $LogFormat eq '1' || $LogFormat eq '6' )
 +    { # Same than "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"".
 +       # %u (user) is "([^\\/\\[]+)" instead of "[^ ]+" because can contain space (Lotus Notes). referer and ua might be "".
 +
 +# $PerlParsingFormat="([^ ]+) [^ ]+ ([^\\/\\[]+) \\[([^ ]+) [^ ]+\\] \\\"([^ ]+) (.+) [^\\\"]+\\\" ([\\d|-]+) ([\\d|-]+) \\\"(.*?)\\\" \\\"([^\\\"]*)\\\"";
 +      $PerlParsingFormat =
 +"([^ ]+) [^ ]+ ([^\\/\\[]+) \\[([^ ]+) [^ ]+\\] \\\"(?:-|([^ ]+) ([^ ]+)(?: [^\\\"]+|))\\\" ([\\d|-]+) ([\\d|-]+) \\\"(.*?)\\\" \\\"([^\\\"]*)\\\"";
 +#"([^ ]+) [^ ]+ ([^\\/\\[]+) \\[([^ ]+) [^ ]+\\] \\\"([^ ]+) ([^ ]+)(?: [^\\\"]+|)\\\" ([\\d|-]+) ([\\d|-]+) \\\"(.*?)\\\" \\\"([^\\\"]*)\\\"";
 +
 +      $pos_host    = 0;
 +      $pos_logname = 1;
 +      $pos_date    = 2;
 +      $pos_method  = 3;
 +      $pos_url     = 4;
 +      $pos_code    = 5;
 +      $pos_size    = 6;
 +      $pos_referer = 7;
 +      $pos_agent   = 8;
 +      @fieldlib    = (
 +        'host', 'logname', 'date', 'method', 'url', 'code',
 +
 +
 +</code>
linux/awstats.1373871937.txt.gz · Dernière modification: 15-07-2013 09:05 de edmc73