Das Apache Logfile Analyse Werkzeug AWStats stellt mit awstats_buildstaticpages.pl ein Skript bereit, dass statische HTML Webseiten generiert, die leider recht Alt-Backen daher kommen. Zudem lohnt es sich kaum diese Webseiten regelmäßig neu zu erstellen, wenn die Benutzer eher selten auf Ihre Statistiken zugreifen.
Durch die strikte Trennung von Datenanalyse und Anzeige ermöglicht AWStats die Benutzung von alternativen Benutzer Oberflächen wie JAWStats.
In der zur Zeit aktuellen Version 0.7 beta von JAWStats gibt es leider keine Möglichkeit mehrere Benutzer mit verschiedenen Webseiten zu verwalten. Dank Open Source lies sich diese Funktionalität ergänzen und wir freuen uns, den Patch an dieser Stelle zu veröffentlichen.
Die folgende Anleitung beschreibt eine Beispiel Konfiguration von AWStats und JAWStat inklusive dem Patch für die Verwaltung von mehreren Benutzern. Die eigentliche Anmeldung der Benutzer überlassen wir dabei dem Apache Webserver.
Zudem soll das Hinzufügen von weiteren Webseiten und Benutzern möglichst einfach und schnell durchzuführen sein. Hierfür gibt es eine Bash Skript was die nötigen Konfigurationen für AWStats und JAWStats erstellt.
Den compuccino JAWStats Multi-User Patch könnt ihr euch hier runterladen.
Vorbereitung
Installation von AWStats auf einem Debian basierten Linux. Pwgen brauchen wir später.
$ apt-get install awstats pwgen
Erstellen eines Document Roots für Apache und Installation von JAWStats.
$ mkdir -p /var/www/stats.example.com/htdocs/ $ cd /var/www/stats.example.com/htdocs/ $ wget http://static.jawstats.com/src/jawstats-0.7beta.tar.gz $ tar xzfv jawstats-0.7beta.tar.gz
Download und Installation vom Multi-User Patch.
$ wget http://compuccino.com/stuff/jawstats-20100901-compuccino.patch $ patch < jawstats-20100901-compuccino.patch
Download und Installation der Bash Skript-Dateien.
$ mkdir /path/to/bin/ && cd /path/to/bin/ (z.B. ~/bin/ oder /usr/local/sbin/ oder /opt/awstats/ oder...) $ wget http://compuccino.com/stuff/awstats-compuccino-scripts-20100903.tar.gz $ tar xzfv awstats-compuccino-scripts-20100903.tar.gz $ chown -v root:root awstats_add.sh awstats_update.sh $ chmod -v 700 awstats_add.sh awstats_update.sh
Konfiguration
Im nächsten Schritt überprüfen wir die Konfiguration von allen Komponenten.
AWStats
$ vim /etc/awstats/awstats.conf
awstats.conf sollte am Dateiende (taste G) folgende Zeile enthalten.
Include "/etc/awstats/awstats.conf.local"
Und awstats.conf.local sollte mindestens zwei Einträge aufweisen. SkipHosts sollte mit weiteren IP-Adressen aus dem Firmen Netzwerk ergänzt werden.
$ vim /etc/awstats/awstats.conf.local LogFormat=1 SkipHosts="127.0.0.1 localhost"
cron
Die regelmäßige Analyse der Apache Logfiles erfolgt durch das Skript awstats.pl das bei Debian unter /usr/lib/cgi-bin/awstats.pl zu finden ist.
Der typische Aufruf ist...
$ /usr/lib/cgi-bin/awstats.pl -config=example.com -update
…wobei awstats.pl in /etc/awstats/awstats.example.com.conf nach einer passenden Konfiguration für die Webseite example.com sucht. (Das erstellen dieser Konfigurations-Datei erfolgt durch awstats_add.sh, dazu später mehr.)
Mit dem awstats_update.sh Skript und cron wird das Update der Statistiken für alle aktiven Webseiten regelmäßig durchgeführt. awstats_update.sh greift dazu auf eine einfache Liste (/etc/awstats/domainlist) mit den Webseiten zurück.
$ touch /etc/awstats/domainlist
Die entsprechenden Pfade können wir in awstats_update.sh anpassen:
$ vim awstats_update.sh DOMAIN_LIST="/etc/awstats/domainlist" AWSTATS="/usr/lib/cgi-bin/awstats.pl"
Debian installiert für AWStats einen cron Eintrag den wir für unseren Bedürfnisse anpassen können.
$ vim /etc/cron.d/awstats 59 * * * * root /path/to/bin/awstats_update.sh
JAWStats Konfiguration
Der Multi-User Patch für JAWStats hat eine recht einfache Funktionsweise. Basierend auf dem aktuellen Benutzernamen, binden wir entsprechende Konfigurationsdateien ein. Dazu greifen wir innerhalb von PHP auf die Apache Variable $_SERVER['PHP_AUTH_USER'] zurück. Diese wird von PHP gesetzt, wenn sich der Benutzer Erfolgreich über HTTP-AUTH angemeldet hat.
Die Zuordnung welcher Benutzername welche Webseite sehen darf, erfolgt über die Datei users.ini, die wir außerhalb des Document Roots ablegen. Die Konfigurationen für die einzelnen Webseiten legen wir in verschiedenen PHP-Dateien im Verzeichnis sites ab, ebenfalls außerhalb des Document Roots. Die Konfigurations-Datei selbst wird von awstats_add.sh erstellt.
Nun zur Anpassung von JAWStats.
Die Standard-Konfiguration von JAWStats enthält einige Beispiel Einträge die wir raus nehmen.
$ cp config.dist.php config.php $ vim config.php <?php $sDefaultLanguage = "de-de"; $sConfigDefaultView = "thismonth.all"; $bConfigChangeSites = true; $bConfigUpdateSites = false; $sUpdateSiteFilename = "xml_update.php"; ?>
Anlegen des sites Verzeichnis. (Document Root ist /var/www/stats.example.com/htdocs/)
$ mkdir -p /var/www/stats.example.com/sites
Anlegen der users.ini
$ vim /var/www/stats.example.com/users.ini [users] user1[] = 'example.com'
httpd
Auf die Einzelheiten der Apache VirtualHost Konfiguration werden wir an dieser Stelle nicht eingehen. Nur das Anlegen des HTTP-AUTH Benutzers soll nicht unerwähnt bleiben, da dieser Identisch sein muss mit dem Eintrag in der users.ini.
$ htpasswd -c /var/www/stats.example.com/.htpasswd user1
Anlegen der Webseite durch awstats_add.sh
Zum Abschluss muss nur noch das awstats_add.sh Skript überprüft und ausgeführt werden.
$ cd /path/to/bin/ $ vim awstats_add.sh DOMAIN_LIST="/etc/awstats/domainlist" LOGS="/var/log/apache2/vhost" AWCFG="/etc/awstats" JAWCFG="/var/www/stats.example.com/sites"
DOMAIN_LIST muss zur gleichen Liste zeigen wie im awstats_update.sh Skript und JAWCFG auf das eben angelegte sites Verzeichnis.
Die Variable AWTMPL enthält die Vorlage für die /etc/awstats/awstats.example.com.conf Datei. DOMAIN wird dabei durch example.com ersetzt.
LogFile wird in vielen Fällen an die lokalen Apache Konfiguration angepasst werden müssen.
[...] AWTMPL=$(cat <<-'ENDOFLINE' Include "/etc/awstats/awstats.conf" LogFile="LOGS/DOMAIN/access_log.%YYYY-%MM-%DD" SiteDomain="DOMAIN" HostAliases="localhost 127.0.0.1" SkipFiles="" [...]
JAWTMPL enthält die Vorlage für /var/www/stats.example.com/sites/example.com.php wobei DOMAIN durch example.com ersetzt wird und PASS durch ein automatisch generiertes Passwort.
JAWTMPL=$(cat<<-'ENDOFLINE'
<?php
$aConfig["DOMAIN"] = array(
"statspath" => "/var/lib/awstats/",
"updatepath" => "/usr/lib/cgi-bin/awstats.pl",
"siteurl" => "http://DOMAIN",
"sitename" => "DOMAIN",
"theme" => "default",
"fadespeed" => 50,
"password" => "PASS",
"includes" => "",
"language" => "de-de"
);Mit dem Aufruf von...
$ /path/to/bin/awstats_add example.com
...legen wir die Konfigurationen für example.com an. Nun müssen wir nur noch die AWStats Datenbank mit den ersten Werten füllen.
$ /usr/lib/cgi-bin/awstats.pl -config=example.com -update
Nach der Anmeldung als user1 auf https://stats.example.com/ bekommen wir die Web-Statistik für example.com angezeigt.
jawsome stats Ceiling Cat DO WANT.
Kommentare
Kommentar hinzufügen