Installation MAWStats

Ich war seit meinen Internet Anfängen in 1997 begeistert vom Webstatistik Tool Wusage.  Es schien mir einfach übersichtlicher und etwas ausführlicher als andere Web Statistik Tools.

Mittlerweile wird diese Software jedoch anscheinend nicht mehr weiterentwickelt und unter neueren FreeBSD Versionen krieg ich Wusage auch nicht mehr zum laufen. Selbst mit dem Kompatibilitätsmodus krieg ich’s nicht hin.

Also ist es wohl Zeit weiter zu gehen und eine Alternative zu finden. Nachdem ich das gesamte Internet abgeklappert habe nach guten und kostenlosen Tools bin ich bei mawstats gelandet. Es basiert auf awstats und ist ausserdem eine Weiterentwicklung von jawstats.

Für awstats konnte ich mich bisher wegen der unattraktiven Benutzeroberfläche nicht erwärmen. Jawstats und MAWStats basieren zwar auf awstats, haben haber eine sehr schöne und übersichtliche Benutzeroberfläche.

Der Vorteil (und gleichzeitig grösster Unterschied) von MAWStats gegenüber Jawstats ist, dass man mehrere Webseiten Statistiken miteinander vergleichen kann. Die Macher von MAWStats hoffen, dass dieses Feature eines Tages direkt in Jawstats integriert wird. Bis dahin werde ich MAWStats benutzen 🙂

Installation

cd /usr/ports/www/mawstats
make install clean

Per default wird MAWStats und awstats in folgende Verzeichnisse installiert:

/usr/local/www/awstats
/usr/local/www/mawstats

Konfiguration

Als erstes müssen wir awstats konfigurieren:

perl /usr/local/www/awstats/tools/awstats_configure.pl

Da ich nicht Apache sondern Nginx verwende, ist dies der Weg zum Ziel:

-----> Check for web server install

Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/etc/apache(13/22)/httpd.confExample: /usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
Config file path ('none' to skip web server setup):
> none
Your web server config file(s) could not be found.
You will need to setup your web server manually to declare AWStats
script as a CGI, if you want to build reports dynamically.
See AWStats setup documentation (file docs/index.html)

-----> Update model config file '/usr/local/www/awstats/cgi-bin/awstats.model.conf'
  File awstats.model.conf updated.

-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y
-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
> www.teslina.com
-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
> /usr/local/etc/awstats

-----> Create config file '/usr/local/etc/awstats/awstats.www.teslina.com.conf'
 Config file /usr/local/etc/awstats/awstats.www.teslina.com.conf created.

-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/www/awstats/cgi-bin/awstats.pl -update -config=www.teslina.com
Or if you have several config files and prefer having only one command:
/usr/local/www/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...


A SIMPLE config file has been created: /usr/local/etc/awstats/awstats.www.teslina.com.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'www.teslina.com' with command:
> perl awstats.pl -update -config=www.teslina.com
You can also build static report pages for 'www.teslina.com' with command:
> perl awstats.pl -output=pagetype -config=www.teslina.com

Press ENTER to finish...

Nun Konfigfile editieren:

vi /usr/local/etc/awstats/awstats.www.teslina.com.conf 

Hier müssen vorallem diese Zeilen angepasst werden:

LogFile="/logs_www/teslina.com/access_log_current"
SiteDomain="www.teslina.com"
HostAliases="teslina.com www.teslina.com 127.0.0.1 localhost"
DirData="/var/lib/awstats" # <- ein ort wählen, der sinn macht und genug platz hat.

Am besten macht man gleich ein globales awstats Konfig File und nimmt nur die Site relevanten Variabeln in die Site Config rein.

Also im File

awstats.global.conf

stehen alle allgemeinen Variabeln drin bis auf die, die wir pro Host definieren. Im ConfigFile pro Host stehen dann nur noch die Hostspezifischen Infos drin – sowie der Include zum global File. In meinem Fall wäre das Config File so aussehen:

awstats.www.teslina.com.conf
LogFile="/logs_www/teslina.com/access_log_current"
SiteDomain="www.teslina.com"
HostAliases="teslina.com www.teslina.com 127.0.0.1 localhost"
Include "awstats.global.conf"

Nun ist einfach wichtig, dass die Host-spezifischen Variabeln nicht im globalen File drin sind, da sie sonst überschrieben würden.

Im globalen Config File nun auch noch alles wie gewünscht anpassen.  Damit zum Beispiel Länder spezifische Statistiken erstellt werden können, müssen die GeoIP Plugins aktiviert werden:

# MAXMIND GEO IP MODULES: Please see documentation for notes on all Maxmind modules
LoadPlugin="geoip GEOIP_STANDARD /www/server/SH_includes/_PEAR/share/pear/Net/GeoIP/db/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /www/server/SH_includes/_PEAR/share/pear/Net/GeoIP/db/GeoLiteCity.dat"

Datenbank erstellen / updaten

Mit diesem Befehl kann man nun die Statistik Datenbank erstellen – oder falls bereits vorhanden – updaten.

perl /usr/local/www/awstats/cgi-bin/awstats.pl -config=www.teslina.com -update

Das gibt nun diverse Outputs:

Create/Update database for config "/usr/local/etc/awstats/awstats.www.teslina.com.conf" by AWStats version 7.0 (build 1.971)
From data in log file "/logs_www/teslina.com/access_log_current"...
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: 7804
 Found 0 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 7804 new qualified records.
  • Dropped records – Einträge, die ignoriert wurden, weil sie keine user HTTP Requests waren, oder Requests sind, die mit Filtern übereinstimmen (siehe SkipHosts, SkipUserAgents, SkipFiles, OnlyHosts, OnlyUserAgents and OnlyFiles Parameter). Wenn man die rausgefilterten Lines sehen möchte, kann man dies mit dem zusätzlichen -showdropped Parameter tun.
  • Corrupted records – Das sind Einträge, die mit dem definierten Log Format (siehe LogFormat Parameter) nicht übereinstimmen. Auch wenn alles perfekt eingestellt ist, kann es durchschnittlich zu <5% corrupted Records kommen. Das kann diverse Ursachen haben: 1) Interne Webserver Bugs, 2) Bad Requests von fehlerhaften Browsern, 3) Unsaubere Webserver Shutdowns (z.B. bei einem Stromausfall)
    Um die Corrupted Records sehen zu können, kann man den -showcorrupted Parameter verwenden.
  • Old records – Das sind einfach Einträge, die bereits in einer vorherigen Update Session verarbeitet wurden. Zum Beispiel, wenn man die verarbeiteten Inhalte des access_log nach dem Updaten der Datenbank nicht gelöscht hat.
  • New records – Das sind alle neuen Records, die in der Datenbank hinzugefügt wurden.

Die Datenbank Files sind nun im Verzeichnis DirData zu finden. Bei mir sieht das so aus:

root@corky(/usr/local/etc/awstats)> ll /www/shoeinternational.net/statsdb
total 24
drwxr-xr-x   2 www   www   512 Jul  9 17:22 ./
drwxr-xr-x  33 www   www  1024 Mar 22 11:55 ../
-rw-r–r–   1 root  www  5961 Jul  9 17:22 awstats012012.www.teslina.com.txt
-rw-r–r–   1 root  www  6022 Jul  9 17:22 awstats122011.www.teslina.com.txt

Logfiles mit Shellscript / Batchfile auswerten

Hier ein kleiner Script, der die Logfiles automatisch Packt, auswertet und löscht.

 

MAWStats Webinterface Setup

Per Default werden die Daten in das Verzeichnis

/usr/local/www/mawstats

kopiert. Das ist das default Interface. Dazu benötigt man dann noch die Totals (mawtotals), welche die Übersicht aller Sites darstellt.  Dazu kopiere ich alles mal in einen neuen Webfolder, damit es etwas übersichtlicher ist:

mkdir /www/shoeinternational.net/stats
mkdir /www/shoeinternational.net/stats/single
cp -R /usr/local/www/mawstats/* /www/shoeinternational.net/stats/single/
cd /www/shoeinternational.net/stats
fetch http://downloads.sourceforge.net/project/mawstats/mawtotals/0.8/mawtotals-0.8.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmawstats%2Ffiles%2Fmawtotals%2F0.8%2F&ts=1343049517&use_mirror=garr
tar xzfv mawtotals-0.8.tar.gz\?r\=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmawstats%2Ffiles%2Fmawtotals%2F0.8%2F
rm mawtotals-0.8.tar.gz\?r\=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmawstats%2Ffiles%2Fmawtotals%2F0.8%2F
mv mawtotals-0.8/* .
cp mawtotals_config.dist.php mawtotals_config.php
vi mawtotals_config.php

Im Config nun den Pfad für die Single Statistik Dateien angeben:

<?php
$sMAWStatsPath         = "single/";
$sSummarySiteName      = "All Sites Summary";
$sTheme                = "default";
?>

Nun noch das Single Interface konfigurieren. Als erstes das config.dist.php aktivieren. Danach die gewünschten Settings setzen.

cd single/
cp config.dist.php config.php
vi config.php

Die Variabeln sind dieselben wie von Jawstats. In dieser Dokumentation wird alles genauer erklärt. Die wichtigsten Settings hier:

  // individual site configuration
  $aConfig["www.teslina.com"] = array(
    "statspath"   => "/www/shoeinternational.net/statsdb/",
    "statsname"   => "awstats[MM][YYYY].www.teslina.com.txt",
    "updatepath"  => "/usr/local/www/awstats/cgi-bin/",
//    "preupdate"   => "/path/to/custom/cmd",
//    "postupdate"  => "/path/to/custom/cmd",
    "siteurl"     => "http://www.teslina.com",
    "sitename"    => "Teslina",
    "theme"       => "default",
    "fadespeed"   => 250,
    "password"    => "",
    "includes"    => "",
    "language"    => "en-gb",
    "type"        => "web",
//    "urlaliasfile"=> "urlalias.txt", // optional, read url alias file, display page titles instead of urls under 'Pages' tab
//    "parts"       => "outside,inside" // Optional (only if you want to combine/stack multiple awstats logs)
  );

Da ich diverse Websites anzeigen lasse, speichere ich die Hauptdaten alle in einem Array und generiere die Configs aus dem Array:

  $MyHosts = array(
        'www.teslina.com' => array('name'=>'Teslina','url'=>'http://www.teslina.com'),
        'www.bound.ch'    => array('name'=>'BOUND','url'=>'http://www.bound.ch'),
  );
  foreach ($MyHosts AS $site=>$arr){
          $aConfig[ $site ] = array(
            "statspath"   => "/www/shoeinternational.net/statsdb/",
            "statsname"   => "awstats[MM][YYYY].".$site.".txt",
            "updatepath"  => "/usr/local/www/awstats/cgi-bin/",
            "siteurl"     => $arr['url'],
            "sitename"    => $arr['name'],
            "theme"       => "default",
            "fadespeed"   => 250,
            "language"    => "en-gb",
            "type"        => "web",
          );
  } 

.

Probleme / Fehlermeldungen

Error: Plugin load for plugin ‚geoip‘ failed with return code: Error:

GeoIP hab ich zwar bereits installiert, hab aber trotzdem folgenden Fehler beim generieren der awstats Daten erhalten:

Error: Plugin load for plugin 'geoip' failed with return code: Error:
Can't locate Geo/IP.pm in @INC (@INC contains: /usr/local/lib/perl5/5.12.4/BSDPAN /usr/local/lib/perl5/site_perl/5.12.4/mach /usr/local/lib/perl5/site_perl/5.12.4 /usr/local/lib/perl5/5.12.4/mach /usr/local/lib/perl5/5.12.4 . /usr/local/www/awstats/cgi-bin/lib /usr/local/www/awstats/cgi-bin/plugins) at (eval 4) line 1.
Can't locate Geo/IP/PurePerl.pm in @INC (@INC contains: /usr/local/lib/perl5/5.12.4/BSDPAN /usr/local/lib/perl5/site_perl/5.12.4/mach /usr/local/lib/perl5/site_perl/5.12.4 /usr/local/lib/perl5/5.12.4/mach /usr/local/lib/perl5/5.12.4 . /usr/local/www/awstats/cgi-bin/lib /usr/local/www/awstats/cgi-bin/plugins) at (eval 5) line 1.

Lösung: Einfach folgenden Befehl eingeben und durchlaufen lassen (Lösung hier gefunden).

#> cpan Geo::IP::PurePerl Geo::IP 

Zwar hat es mit der folgenden Zeile geendet,

Note that if you build against a shareable library in a non-standard location
you may (on some platforms) also have to set your LD_LIBRARY_PATH environment
variable at run time for perl to find the library.

If you installed the GeoIP C libraries to the /usr/local/lib directory,
then you may need to add /usr/local/lib to /etc/ld.so.conf then run
/sbin/ldconfig /etc/ld.so.conf

No 'Makefile' created  BORISZ/Geo-IP-1.40.tar.gz
  /usr/local/bin/perl Makefile.PL -- NOT OK
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install

Funktionieren tut es aber trotzdem 🙂

PHP Fatal error:  Uncaught exception ‚ErrorException‘ with message ‚Function split() is deprecated‘ in /www/shoeinternational.net/stats/single/clsAWStats.php:275

Hier wird noch die veraltete PHP Funktion „split()“ verwendet. Lösung ist einfach, clsAWStats.php editieren und auf Zeile 275 split() mit explode() ersetzen.

.

Flattr this!

  • *

    Du kannst diese HTML tags verwenden: <a> <abbr> <acronym> <b> <blockquote> <cite> <code> <del> <em> <i> <q> <s> <strike> <strong>

  • Kommentar-Feed für diesen Beitrag
nach oben