... steht /usr/local/psa/admin/sbin/statistics >/dev/null 2>&1 als Befehl, der die Stats baut - dort das -month=all -year=2007 anzuhängen funktioniert schon mal nicht ...
Ich bin etwas überrascht, der Befehl
/usr/local/.../statistics ist mir im Zusammenhang mit AWStats neu ... Ich habe bei mir AWStats 6.5 im Einsatz.
Hier als Beispiel die AWStats Kommandozeile, mit der ich meine Mailstats für das gesamte Jahr 2006 (-months=ALL -year=2006) erstellt habe:
Code:
/usr/bin/perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=sendmail -month=all -year=2006 -output -staticlinks > /var/www/web10/html/aws/2006/awstats.sendmail.html
Wegen den Absoluten Pfadangaben sicherlich etwas lang, aber dafür unabhängig von dem Verzeichnis, wo man sich gerade aufhält.
Wäre halt gut, wenn es immer für alle Domains den kompletten Bericht 1x in der Nacht erstellt - so dass man eben auch die alten Monate anschauen kann.
Als Voraussetzung würde ich hier erstmal entscheiden, ob du jeden Monat separat haben willst, oder immer das gesamte aktuelle Jahr.
Um das Domain abhängig zu machen, musst du für jede Domain eine separate Konfiguration anlegen und dann die entsprechenden Aufrufe für die Statistiken absetzen.
-
Ich bin mal so frei, und liefere hier mal eine Art HowTo für eine Domain, was erstmal keinen Anspruch auf Vollständigkeit/Fehlerfreiheit hat. Das ganze basierend auf meinem bisherigen Vorgehen, was nicht das effizienteste sein muß.
Annahmen
- Fertig installiertes AWStats, mit folgenden Pfaden:
AWStats Pfad
AWStats Config Pfad:
- Domain, von der die Statistiken erstellt werden sollen:
- Pfad, unter dem die HTML Dateien, CGI Skripte, etc. für diese Domain abgelegt sind:
Ziele:
- Tägliche aktualisierte Monats Statistik (bezieht sich ausschließlich auf den aktuellen Monat)
- Monatlich aktualisierte Jahres Statistik (hier ist spätestens nach Jahreswechsel Handarbeit notwendig)
Schritte zu Punkt 1:
- Anlegen eine Konfigurationsdatei, basierend auf der awstats.conf, welche Standardmäßig mitgeliefert wird.
Code:
cp /etc/awstats/awstats.conf /etc/awstats/awstats.de_beispieldomain.conf
Das ich den Domain Namen umgekehrt verwende, bringt spätestens bei vielen Domains den Vorteil der Sortierung bei einem ls innerhalb dieses Verzeichnisses. Wobei "viele" aber eine individuelle Einschätzung ist.
Statt der Domain kann man natürlich auch den Kundennamen (web1, web2, webx ... o.ä.) verwenden.
- Anpassung der Konfigurationsdatei für diese Domain, wie in der Dokumentation von AWStats beschrieben. Am wichtigsten sind hier die Punkte Logdatei für diese Domain und Domain Aliase, unter denen man die Webpräsenz erreichen kann.
Domain / - Aliase:
Code:
www.beispieldomain.de, beispieldomain.de
und, was manchmal vergessen wird, die Möglichkeit des Aufrufes basierend auf der Domain des Hosters. Bei S4Y zum Beispiel:
Code:
web1.vs<Kundennummer>.vserver.de
Sollten noch andere Subdomains, außer www existieren, sollte das ganze entsprechend erweitert werden.
Beispiel:
Logdatei (Beispiel):
Code:
/var/www/web1/log/access.log
- Erstellung des Zielverzeichnisses, in welchem die Statistiken abgelegt werden sollen:
Code:
mkdir /var/www/web1/html/aws
Danach noch den Eigentümer setzen:
Code:
/bin/chown web1:<GRUPPE> /var/www/web1/html/aws
<GRUPPE> mit dem Wert ersetzen, der auch bei den anderen Verzeichnissen für diesen Kunden/Nutzer gesetzt ist.
- Erstellung eines Shell Skriptes, welches dann wiederum per cron aufgerufen wird.
Ein separates Skript macht hier durchaus Sinn, da man sich so innerhalb der crontab die Übersicht erhält, auch wenn man das ganze für 100 Domains macht.
Wo dieses Skript abgelegt wird, ist im Grunde genommen egal, da man (vorzugsweise) eh mit absoluten Pfaden arbeitet. Sinn macht es natürlich, dieses Skript in eines der bereits im Zusammenhang mit AWStats existierenden Verzeichnisse abzulegen:
Code:
touch /etc/awstats/awstats.de_beispieldomain.daily.sh
chmod +x /etc/awstats/awstats.de_beispieldomain.daily.sh
vi /etc/awstats/awstats.de_beispieldomain.daily.sh
Das Skript beinhaltet die AWStats Aufrufe für die Beispiel Domain. Für den Anfang ist es genau einer, der einfach die Start/Index Seite der Statistiken erstellt. Hinzu kommt noch ein Eintrag, der die Zugriffsrechte entsprechend setzt:
Code:
/usr/bin/perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=de_beispieldomain -output -staticlinks > /var/www/web1/html/aws/awstats.de_beispieldomain.html
chown web1:<GRUPPE> /var/www/web1/html/aws/awstats*
Man kann sich neben der Start/Index Seite der Statistiken, noch andere Reports erstellen lassen. Als Beispiel wäre zu nennen: Report über 404 HTTP Fehler, Alle IP Adressen bzw. DNS Namen, welche auf die Seite zugegriffen haben, Browser Statistiken, Betriebssysteme etc. In der Dokumentation sind alle möglichen Varianten aufgelistet: AWStats Documentation - Setup page
Hier ist auch die Möglichkeit erklärt, sich mit einem Aufruf alle möglichen Seiten auf einmal generieren zu lassen.
- Einbindung von AWStats in die crontab
Hier ist der erste Schritt, das update Skript von AWStats aufzurufen, bevor man überhaupt die Statistiken für eine Domain generiert. Ein zweiter Eintrag sorgt dann dafür, das die Statistiken für eine Domain erstellt werden.
Crontab zum Editieren öffnen:
Folgendes einfügen:
Code:
#=== AWStats - Update Database
22 00 * * * /usr/local/awstats/tools/awstats_updateall.pl now > /dev/null
Der Kommentar ist kein Pflicht, aber wie immer und überall empfehlenswert.
In dieser Konfiguration, wird das Update Skript jeden Tag 00:22 Uhr aufgerufen. Der Zeitpunkt des Aufrufes Sollte natürlich an die Gegebenheiten des eigenen Servers angepasst werden. Stichwort: Auslastung.
Dabei aber schon daran denken, das natürlich die Aufrufe für die Domain Statistiken zeitlich nach dem Update Skript zu erfolgen haben.
Jetzt noch den Eintrag für die Domain Statistik einfügen:
Code:
27 00 * * * /bin/sh /etc/awstats/awstats.de_beispieldomain.daily.sh
Damit wird das Skript, welches die Statistik Seiten für die Domain www . beispieldomain . de erstellt, jeden Tag um 00:27 Uhr aufgerufen.
Das Update Skript braucht bei vielen Domains entsprechend lange, man sollte also genug Zeit zwischen dem Aufruf dieses Skriptes und dem ersten Aufrufe für eine Domain einplanen. Die von mir hier verwendeten 5 Minuten sind schon recht knapp bemessen.
Warum 2 separate Aufrufe?
Das Update Skript liest die konfigurierten Logdateien für (in diesem Fall) alle vorhandenen /etc/awstats/awstats.*.conf Dateien und erstellt entsprechende History/Statistik Dateien. Erst der 2. Aufruf generiert aus diesen History/Statistik Dateien entspechende HTML Ausgaben.
Schritte zu Punkt 2:
- Erstellung des Zielverzeichnisses, in welchem die Jahres Statistiken abgelegt werden sollen:
Code:
mkdir /var/www/web1/html/aws/2007
Danach noch den Eigentümer setzen:
Code:
/bin/chown web1:<GRUPPE> /var/www/web1/html/aws/2007
<GRUPPE> mit dem Wert ersetzen, der auch bei den anderen Verzeichnissen für diesen Kunden/Nutzer gesetzt ist.
- Erstellung eines Shell Skriptes, welches dann wiederum per cron aufgerufen wird:
Code:
touch /etc/awstats/awstats.de_beispieldomain.monthly.sh
chmod +x /etc/awstats/awstats.de_beispieldomain.monthly.sh
vi /etc/awstats/awstats.de_beispieldomain.monthly.sh
Das Skript beinhaltet die AWStats Aufrufe für die Beispiel Domain, um die Statistik für ein Jahr zu erstellen:
Code:
/usr/bin/perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=de_beispieldomain -month=ALL -year=2007 -output -staticlinks > /var/www/web1/html/aws/2007/awstats.de_beispieldomain.html
/bin/chown web1:<GRUPPE> /var/www/web1/html/aws/awstats*
- Einbindung von AWStats in die crontab
Code:
32 00 1 * * /bin/sh /etc/awstats/awstats.de_beispieldomain.monthly.sh
Damit wird das Skript, welches die Statistik Seiten für das Jahr 2007 für die Domain www . beispieldomain . de erstellt, jeden 1. des Monats um 00:32 Uhr aufgerufen.
Hier komme ich zurück zu meinem Kommentar bei Punkt 2:
Mario said:
(hier ist spätestens nach Jahreswechsel Handarbeit notwendig)
Nach dem Jahreswechsel muss sowohl das Shell Skript angepasst als auch ein Verzeichnis für das neue Jahr erstellt werden:
Im Skript die Zeile
Code:
/usr/bin/perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=de_beispieldomain -month=ALL -year=2007 -output -staticlinks > /var/www/web1/html/aws/2007/awstats.de_beispieldomain.html
durch
Code:
/usr/bin/perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=de_beispieldomain -month=ALL [COLOR=Red]-year=2008[/COLOR] -output -staticlinks > /var/www/web1/html/aws/[COLOR=Red]2008[/COLOR]/awstats.de_beispieldomain.html
ersetzen. Und das Spiel beginnt von vorn.
Zu erreichen sind die Statistiken jetzt unter folgender URL:
Code:
Tagesaktuelle Monats Statistik: http://www.beispieldomain.de/aws/awstats.de_beispieldomain.html
Monatsaktuelle Jahres Statistik: http://www.beispieldomain.de/aws/2007/awstats.de_beispieldomain.html
Ich hoffe es haben sich jetzt kein groben Schnitzer eingeschlichen und das die Beschreibung dir bzw. anderen weiterhilft, AWStats pro Domain erfolgreich zum laufen zu bringen.
Dies und Das:
- das ganze habe ich als root User gemacht, deshalb hier und da die chown Befehle
- die Einrichtung habe ich völlig losgelöst von installierten AdminPaketen wie Plesk, Confixx etc. betrachtet
- soll das Verzeichnis .../aws nicht öffentlich zugänglich sein, dann mit dem üblichen Mechanismus htaccess absichern
- was die Jahres Statistik betrifft: ein anderer Weg wäre, das Jahr mit in den Dateinamen einzubauen, da benötigt man dann nicht mehr die Trennung durch Verzeichnisse ( ../2007, ../2008, etc.)
- wer es ganz ausührlich haben will, kann auch unterhalb des Jahresverzeichnisses noch die Monatsverzeichnisse anlegen und darin immer nur die Statistik für genau den Monat ablegen ...
Und jetzt Erschdmal: Have a nice day.