Statistiken über die Zugriffe auf einer Web-Seite sind wichtig, um das User-Verhalten besser nachvollziehen zu können. So kann beispielsweise festgestellt werden, welche Artikel und/oder Themen am häufigsten abgerufen werden. Häufig werden die umfangreichen Analysepakete Piwik oder Google Analytics verwendet. Google Analytics fällt für viele raus, da die Daten über die Seitenzugriffe an Google übermittelt werden. In Deutschland wird Google Analytics daher von vielen Datenschützern mit großer Skepsis betrachtet (Stichwort Auftragsdatenverarbeitung). Die Alternative Piwik kann zwar auf dem eigenen Server betrieben werden und bietet auch eine Opt-Out-Möglichkeit für die User, benötigt aber eine eigene Datenbank und kann daher nicht von allen genutzt werden.
Eine Alternative, die auf die Auswertung der Apache Access-Logs aufsetzt ist AWStats. Hierbei handelt es sich um ein Perl-basiertes Tool, das auf dem Web-Server ausgeführt werden kann, sofern dieser Perl unterstützt (bei all-inkl.com sollte das für alle Tarife gelten). Ich habe AWStats bei all-inkl.com folgendermaßen installiert:
- Damit AWStats überhaupt funktionieren kann, muss die Protokollierung für die auszuwertende Domain in KAS unter dem Menüpunkt “Einstellungen -> Accesslog” aktiviert werden. Wegen des Datenschutzes sollte die Option “IP gekürzt”
- Per SSH (z.B. mit Putty) mit dem Server verbinden und ein neues Verzeichnis für die AWStats Installation erstellen:
md awstats
- Für eine saubere Trennung und den einfacheren Zugriff habe ich im KAS unter dem Menüpunkt “Subdomain” eine neue Sub-Domain angelegt, die auf das zuvor erstellte Verzeichnis zeigt. Beim anlegen der Sub-Domain unbedingt den SSL-Schutz aktivieren, damit später per SSL-Proxy auf AWStats zugegriffen werden kann.
- Auf dem Server in das Verzeichnis awstats (webroot) wechseln:
cd awstats
- Das AWStats-Archiv aus dem Internet per wget laden und anschließend entpacken:
wget http://prdownloads.sourceforge.net/awstats/awstats-7.3.tar.gz tar xvfz awstats-7.3.tar.gz
- Die relevanten Dateien in das webroot verschieben und den Rest löschen:
mv awstats-7.3/tools . mv awstats-7.3/wwwroot/* . rm -r awstats-7.3*
- Ein Datenverzeichnis anlegen und die Berechtigungen setzen:
md data chmod 777 data chmod 755 tools/*.pl
Die Berechtigungen der Perl-Dateien im cgi-bin-Verzeichnis sollten bereits korrekt gesetzt sein. Können sie jedoch nicht ausgeführt werden müssen die Berechtigungen manuell gesetzt werden:
chmod 755 cgi-bin/*.pl
- Jetzt muss eigentlich nur noch eine Konfigurationsdatei für AWStats erzeugt werden. Dazu wird die Template-Datei awstats.model.conf kopieren. Der Dateiname muss dabei so abgeändert werden, dass der mittlere Teil (model) durch den Domain-Name der neu eingerichteten Sub-Domain ersetzt werden. In meinem Beispiel also wie folgt:
cd cgi-bin cp awstats.model.conf awstats.awstats.klein-gedruckt.de.conf
Anschließend müssen folgende Parameter in der Datei abgeändert werden:
LogFile="gzip -d < ../../logs/access_log_%YYYY-24-%MM-24-%DD-24.gz |" SiteDomain="klein-gedruckt.de" HostAliases="localhost 127.0.0.1 REGEX[ssl-account\.com$] REGEX[klein-gedruckt\.de$]" DirData="../data" DirCgi="/awstats.klein-gedruckt.de/cgi-bin/" DirIcons="/awstats.klein-gedruckt.de/icon" AllowToUpdateStatsFromBrowser=1
In den oben genannten Einstellungen muss klein-gedruckt.de natürlich durch die auszuwertende Domain ersetzt werden.
- Die Einstellungen in der Konfigurationsdatei funktionieren nur wenn die Seite über den SSL-Proxy (bei all-inkl also über https://sub.domain.com) aufgerufen wird. Daher erzwinge ich per .htaccess eine entsprechende Weiterleitung mit folgenden Einträgen:
<IfModule mod_rewrite.c> RewriteEngine on #Falls kein HTTPS aufegrufen wurde... RewriteCond %{HTTPS} off #...und die Anfrage nicht von der Domain des Proxy kommt RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl-account\.com$ [NC] #leite weiter auf den Proxy RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] </IfModule>
- Anschließend habe ich in der .htaccess noch den Zugriff auf die awstats.pl und index.php beschränkt und eine Basic-Authentisierung aktiviert (die Parameter für die Basic authentisierung müssen natürlich angepasst werden).
<FilesMatch "(^$|index\.php|awstats\.pl)"> SetEnvIf X-Forwarded-Host ^$ unenc_access AuthUserFile /path/to/.htpasswd AuthGroupFile /path/to/.htgroup AuthName "Secure Area" AuthType Basic Require user user1 user2 Order deny,allow Deny from all Allow from env=unenc_access Satisfy any </FilesMatch> Order deny,allow Deny from all
- Für die korrekte Darstellung der Statistiken muss für das Verzeichnis /icon der Zugriff allerdings durch folgende .htaccess wieder erlaubt werden:
Allow from all
- Damit ich die Seite nicht immer mit /cgi-bin/awstats.pl aufrufen muss, kann eine index.php angelegt werden, die entsprechend auf die korrekte awstats.pl weiterleitet:
<?php // Permanent redirection header("HTTP/1.1 301 Moved Permanently"); header("Location: https://awstats.klein-gedruckt.de/cgi-bin/awstats.pl"); exit(); ?>
Wenn bis hier hin alles korrekt eingerichtet wurde, so kann AWStats über die unter Punkt 3 eingerichtete Sub-Domain aufgerufen werden. Anschließend sollte eine Weiterleitung auf den SSL-Proxy erfolgen und erst dann nach den Login-Daten für die Basic-Authentisierung gefragt werden. Nach erfolgreichem Login sollte man sich auf der AWStats-Seite wiederfinden.
- Existieren schon Log-Dateien, so erscheinen diese nicht automatisch in AWStats. Diese müssen zunächst importiert werden. Ein vollständiger import aller Logdateien über die Oberfläche ist zwar grundsätzlich möglich, wird aber bei einer größeren Menge an Logdateien fehlschlagen, wenn das CGI-Skript für die Verarbeitung zu lange braucht. Daher sollte der Erstimport manuell durchgeführt werden:
rm data/* cd cgi-bin ./awstats.pl -update -config="awstats.klein-gedruckt.de" -LogFile="../tools/logresolvemerge.pl path/to/logs/access_log* |"
Danach sollten die bisher angefallenen Log-Dateien in AWStats verfügbar sein.
- Danach kann im KAS ein Cronjob eingerichtet werden, so dass die neu anfallenden Log-Dateien in der Nacht automatisch importiert werden:
- Protokoll / Pfad: ssl-account.com/sub.domain.de/cgi-bin/awstats.pl?framename=mainright&update=1
- Zeitpunkt der Ausführung: Täglich (um 1:15 Uhr)
- HTTP Benutzer/Passwort: Wie eingerichtet
Danke,
kleiner Fehler bei 8.2:
cp awstats.model.conf awstats.awstats.klein-gedruckt.de.conf
soll wohl lauten
cp awstats.model.conf awstats.klein-gedruckt.de.conf