AwStats auf IIS 7 installieren

Written on February 23, 2009

Meine Statistiken gehören mir

Heutzutage ist es gängige Praxis, Google Analytics für die kostenlose Erzeugung aussagekräftiger Website-Statistiken zu verwenden.

Eine ebenfalls kostenlose Alternative, die bereits seit vielen Jahren verfügbar ist, ist AwStats.

Die Installation in Verbindung mit IIS6 hat Christoph Wille hier gezeigt (Glengamoi-Registrierung notwendig) -- dieser Beitrag ist daran angelehnt.

Inzwischen ist IIS7 stand der Technik und auch dort lässt sich AwStats verwenden - wie, das zeigt die folgende Anleitung.

Download first

Bevor AwStats verwendet werden kann, muss es bei SourceForge.NET heruntergeladen werden.

Da zur Ausführung von AwStats Perl benötigt wird, muss außerdem auch ein Perl-Interpreter installiert werden.

Auch hier gibt es kostenlose Varianten -- zum Einsatz kommt in diesem Fall ActivePerl von ActiveState.

Installation

Nach der Installation von ActivePerl befindet sich selbiges in

C:\perl

Die "Installation" von AwStats besteht darin, dass das entsprechende ZIP-File (in diesem Fall die awstats-6.8.zip) in einen Ordner entpackt wird, unter dem später auch das Root für die Statistik-Website liegt, in meinem Fall

D:\Websites\SharpERP.NET\stats.sharperp.net

Danach sollten folgende Ordner und Dateien existieren:

  • docs
  • tools
  • wwwroot
  • README.TXT

In docs befindet sich erwartungsgemäßg die Dokumentation von AwStats, in tools die Perl-, xml- und xslt-Dateien und in wwwroot das bereits erwähnte Root für die Statistik-Website.

IIS-Konfiguration -- der erste Streich

Die Grundlage für die Generierung von Website-Statistiken mit AwStats sind die Logfiles des IIS. Allerdings können die vom IIS per default erzeugten Logfiles nicht von AwStats gelesen werden, da diese andere Felder beinhalten als von AwStats erwartet wird.

Um die Logfiles des IIS so zu erzeugen, dass sie von AwStats geparsed werden können, sind deshalb in den Logging-Einstellungen der entsprechenden Website einige Feld-Anpassungen nötig:

IIS Logging / Feldeinstellungen

IIS-Konfiguration -- der zweite folgt sogleich

Im nächsten Schritt legen wir die Website stats.sharperp.net im IIS-Manager an:

Neue Website für die Statistik anlegen

Der physikalische Pfad zeigt auf

D:\Websites\SharpERP.NET\stats.sharperp.net\wwwroot

Dies ist der Pfad, in dem sich das wwwroot-Verzeichnis von AwStats befindet.

Verwendet man die x64-Variante von Windows Server 2008, muss der Application-Pool der Statistik-Website außerdem so konfiguriert werden, dass auch 32-Bit Applikationen ausgeführt werden (ActiveState Perl läuft nur als 32-Bit Applikation):

32-Bit Applikationen im Statistik-Applikationpool erlauben

Damit Perl nun am IIS7 ausgeführt wird, müssen zwei Script Maps erstellt werden.

Dies geschieht im Bereich Handler Mappings für die Websites, indem man auf "Add Script Map" klickt und folgende Daten eingibt:

Perl Script Map erzeugen

Die nachfolgende ISAPI-Meldung bestätigen wir mit "yes":

Script Map Ausführung erlauben

Das gleiche führen wir nun noch für die CGI Script Map durch:

Cgi Script Map erzeugen

Auch hier wird die ISAPI-Meldung bestätigt:

Script Map Ausführung erlauben

Danach muss der IIS (=World Wide Web Publishing Service) neu gestartet werden.

AwStats-Konfiguration

Nachdem der IIS nun bereit ist, AwStats auszuführen, müssen wir dieses zunächst konfigurieren.

Im Ordner

D:\Websites\SharpERP.NET\stats.sharperp.net\wwwroot\cgi-bin\

liegt die Datei

awstats.model.conf

Hierbei handelt es sich um eine Vorlage für AwStats-Website-Konfigurationen.

Um die Datei für eine eigene Website zu verwenden, muss diese kopiert werden und "model" durch den Namen der Website ersetzt werden, für die eine Statistik erstellt werden soll, also z.B.

awstats.sharperp.net.conf

Im nächsten Schritt muss die Datei editiert und mindestens folgende Anpassungen vorgenommen werden:

LogFile="/var/log/httpd/mylog.log"

muss ersetzt werden durch den Pfad zu den Logfiles:

LogFile="D:\LogFiles\W3SVC8\u_ex%YY-24%MM-24%DD-24.log"

Danach wird

LogFormat=1

geändert in

LogFormat=2

Außerdem muss

SiteDomain=""

durch

SiteDomain="sharperp.net"

ersetzt werden.

Die nächste Änderung ist besonders wichtig, da sie auch sicherheitsrelevant ist.

DirData="."

muss ersetzt werden durch

DirData="D:\Websites\SharpERP.NET\stats.sharperp.net\DataDir"

Die Sicherheitsrelevanz liegt darin, dass "." das Verzeichnis darstellt, in dem die .conf-Datei liegt, also cgi-bin.

Dieses ist von außen logischerweise erreichbar, d.h. jemand, der den Aufbau von AwStats kennt, kann die von AwStats aufbereiteten Statistiken herunterladen.

Die o.g. Änderung verhindert dies, da das DataDir nun außerhalb der Reichweite von Web Usern liegt.

Damit sind die notwendigen Anpassungen an der Konfiguration erledigt und die awstats.sharperp.net.conf kann gespeichert werden.

Ruf. Mich. Auf.

Damit nun die Statistiken aus den Logfiles des IIS 7 generiert werden, müssen wir die Datei

awstats_updateall.pl

im Verzeichnis

D:\Websites\SharpERP.NET\stats.sharperp.net\tools\

mit den entsprechenden Parametern ausführen.

Da dies immer geschehen muss, wenn wir die Statistiken aktualisieren wollen, erstellen wir uns hierfür ein Batchfile, das wir einfach aufrufen können -- ebenfalls im soeben genannten Ordner, z.B.

buildall.bat

Der Inhalt der Datei ist folgender:

D:\Websites\SharpERP.NET\stats.sharperp.net\tools\awstats_updateall.pl now -awstatsprog="D:\Websites\SharpERP.NET\stats.sharperp.net\wwwroot\cgi-bin\awstats.pl" -configdir="D:\Websites\SharpERP.NET\stats.sharperp.net\wwwroot\cgi-bin" update

Somit wird also die awstats_updateall.pl sofort (now) ausgeführt und das enstprechende awstats + config verwendet und die Statistiken aktualisiert.

Wenn wir unser Batchfile nun speichern und ausführen, sollten wir ein Resultat ähnlich dem hier gezeigten erhalten:

D:\Websites\SharpERP.NET\stats.sharperp.net\tools>D:\Websites\SharpERP.NET\stats.sha

rperp.net\tools\awstats_updateall.pl now -awstatsprog="D:\Websites\SharpERP.NET\stat

s.sharperp.net\wwwroot\cgi-bin\awstats.pl" -configdir="D:\Websites\SharpERP.NET\stat

s.sharperp.net\wwwroot\cgi-bin" update

Running '"D:\Websites\SharpERP.NET\stats.sharperp.net\wwwroot\cgi-bin/awstats.pl" -u

pdate -config=sharperp.net -configdir="D:\Websites\SharpERP.NET\stats.sharperp.net\w

wwroot\cgi-bin"' to update config sharperp.net

Create/Update database for config "D:\Websites\SharpERP.NET\stats.sharperp.net\wwwro

ot\cgi-bin/awstats.sharperp.net.conf" by AWStats version 6.8 (build 1.910)

From data in log file "D:\LogFiles\W3SVC8\u_ex090222.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: 34

Found 2 dropped records,

Found 6 corrupted records,

Found 0 old records,

Found 26 new qualified records.

Wenn wir nun die Statistikseite im Browser mit der Url

http://stats.sharperp.net/cgi-bin/awstats.pl?config=sharperp.net

aufrufen, erhalten wir das folgende Resultat:

Eine neue Statistik Website ist geboren

Somit haben wir für das Logfile des vorangegangenen Tages eine Statistik erzeugt.

Und täglich grüsst das Murmeltier

Damit die Statistiken nun täglich automatisch aktualisiert werden, muss der Aufruf von

D:\Websites\SharpERP.NET\stats.sharperp.net\tools\buildall.bat

über einen Scheduled Task einmal täglich ausgeführt werden (es empfiehlt sich, dies Nachts z.B. um 3:30 zu tun).

Altlasten aufarbeiten

Will man alte Logfiles nachträglich in die Statistik aufnehmen, so kann man dies mit folgendem Kommando:

D:\Websites\SharpERP.NET\stats.sharperp.net\wwwroot\cgi-bin\awstats.pl -config="sharperp.net" -update -LogFile="D:\LogFiles\W3SVC8\u_ex080917.log"

Dieses Kommando parst ein altes LogFile vom 17.09.2008 nach und fügt es in die Statistik mit ein.

Voraussetzung ist natürlich, dass das Format des Logfiles passt.

Das wars -- sicher?

Zum Schluss noch ein Hinweis bezgl. Sicherheit: Will man vermeiden, dass die Statistiken von Dritten eingesehen werden, sollte man die Seite z.B. per Windows Authentication absichern.

Denn ein kurzer Klick auf einen der Referrer in den Statistiken liefert diesem einen gezielten Hinweis die Adresse der Statistik-Website.