Schaut zum Thema awstats auch mal in den Howto's howto -> awstats

 

Hier ein Beitrag von bi3r aus dem VHCS Forum

forum.vhcs.net/viewtopic.php

hallo forum,

 

ich habe mich mal hingesetzt und meinen server um awstats erweitert. da ich denke, dass dieses thema auch andere vhcsler interessiert, habe ich alles dokumentiert und ein kleines howto daraus gebastelt.

 

auf meinem server laeuft debian sarge (testing), es sollte aber ohne groessere probleme auf anderen systemen funktionieren (eventuell ein paar pfadangaben aendern).

 

 

 

 

Code:

voyager:~# wget awstats.sourceforge.net/files/awstats-6.3.tgz

 

 

 

diese datei entpacken wir jetzt mit tar und machen root zum besitzer des ganzen:

 

 

 

Code:

voyager:~# tar xfz awstats-6.2.tgz

voyager:~# chown -R root.root awstats-6.2

 

 

 

nun kopieren wir awstats nach /usr/share/awstats:

 

 

 

Code:

voyager:~# mkdir /usr/share/awstats

voyager:~# cp -r awstats-6.2/wwwroot/cgi-bin/* awstats-6.2/tools /usr/share/awstats/

 

 

 

da wir awstats.pl sowie die ganzen icons fuer awstats spaeter per www erreichbar machen muessen, kopieren wir diese natuerlich woanders hin:

 

 

 

Code:

voyager:~# mkdir /usr/lib/cgi-bin/awstats

voyager:~# mv /usr/share/awstats/awstats.pl /usr/lib/cgi-bin/awstats/

voyager:~# mkdir /var/www/awstatsicons

voyager:~# cp -r awstats-6.2/wwwroot/icon /var/www/awstatsicons/

 

 

 

so. nun, wo wir alles kopiert haben, geht es an die konfiguration. awstats braucht pro domain eine konfigurationsdatei. um den ueberblick nicht zu verlieren, erstellen wir uns jetzt ein verzeichnis, in welches wir die ganzen konfigurationsdateien hineinpacken, und kopieren schonmal ein grundgeruest hinein:

 

 

 

Code:

voyager:~# mkdir /etc/awstats

voyager:~# cp /usr/share/awstats/awstats.model.conf /etc/awstats

 

 

 

awstats muss die domainstatistiken irgendwo speichern. dazu erstellen wir ein weiteres verzeichnis, /var/cache/awstats:

 

 

 

Code:

voyager:~# mkdir /var/cache/awstats

 

 

 

als naechstes geht es an das anpassen der apache2 konfigurationsdatei. wir koennen einen allgemeinen alias "/stats" definieren, dann brauchen wir das nicht pro domain zu tun und sparen am ende einen haufen arbeit

ausserdem koennen wir die icons nicht in das cgi-bin verzeichnis legen. bei meinen versuchen gab es einen 500 fehler (internal server error), weshalb ich diese icons einfach ausgelagert habe, und auch dafuer einen eigenen alias definiert habe.

 

 

 

Code:

voyager~:# vi /etc/apache2/sites-available/vhcs2.conf

 

 

 

direkt am anfang der datei steht folgendes:

 

 

 

Code:

# httpd Data BEGIN.

 

#

# Web traffic accounting.

#

 

LogFormat "%B" traff

 

#

# GUI Location.

#

 

Alias /vhcs2 /var/www/vhcs2/gui

 

AllowOverride none

Options MultiViews IncludesNoExec FollowSymLinks

ErrorDocument 404 /vhcs2/errordocs/index.php

DirectoryIndex index.html index.php

 

 

 

php_flag register_globals On

php_admin_value open_basedir "/var/www/vhcs2/gui/tools/filemanager/:/tmp/:/usr/share/pear/"

 

 

Alias /vhcs_images /var/www/vhcs2/gui/images

 

AllowOverride none

Options MultiViews IncludesNoExec FollowSymLinks

 

 

 

 

hinter diesen letzten alias fuegen wir nun wie besprochen die 2 neuen aliase hinzu, einen fuer /stats und einen fuer /awstatsicons:

 

 

 

Code:

Alias /awstatsicons /var/www/awstatsicons

 

AllowOverride none

Options MultiViews IncludesNoExec FollowSymLinks

 

 

ScriptAlias /stats /usr/lib/cgi-bin/awstats

 

AllowOverride None

Options Indexes Includes FollowSymLinks MultiViews

Order allow,deny

Allow from all

 

 

 

 

wieso ich /usr/lib/cgi-bin/awstats als scriptalias definiere? nunja, das cgi-bin verzeichnis ist praktisch tot, da vhcs es nicht braucht und es nicht in die apache2 konfiguration aufgenommen hat. wir brauchen aber trotzdem ein "allgemein nutzbares" cgi-bin, damit wir nicht fuer jede einzelne domain die datei "awstats.pl" kopieren muessen. so ist es einfacher

 

jetzt starten wir kurz apache neu, um unsere aenderungen an der konfiguration zu uebernehmen:

 

 

 

Code:

voyager:~# /etc/init.d/apache2 restart

 

 

 

fein, wir haben es schon fast geschafft im naechsten schritt passen wir die anfangs bereits angesprochene "modell konfiguration" fuer awstats an:

 

 

 

Code:

voyager:~# vi /etc/awstats/awstats.model.conf

 

 

 

hier gibt es nun einige dinge, die wir unbedingt anpassen muessen, da awstats sonst nicht lauffaehig ist. im grossen und ganzen sind das folgende zeilen:

 

 

 

Code:

DirData="/var/cache/awstats"

DirCgi="/cgi-bin/awstats"

DirIcons="/awstatsicons"

 

 

 

speichern und die datei schliessen.

jetzt geht es an das anlegen der konfigurationen pro domain. theoretisch braucht man das nur ein mal zu machen, und kann hinterher mit sed einfach den domainnamen zu ersetzen

fangen wir mal mit der 1. domain an, sagen wir es sei "einbeispiel.de":

 

 

 

Code:

voyager:~# cp /etc/awstats/awstats.model.conf /etc/awstats/awstats.einbeispiel.de.conf

 

 

 

wichtig ist, dass dieser dateiname beibehalten wird! IMMER in der form awstats.domain.tld.conf, sonst findet awstats.pl spaeter die konfiguration nicht...

jetzt editieren wir diese datei, und passen wieder ein wenig mehr an...

 

 

 

Code:

voyager:~# vi /etc/awstats/awstats.einbeispiel.de.conf

 

 

 

hier gibe es generell 3 dinge anzupassen:

 

 

 

Code:

LogFile="/var/log/apache2/einbeispiel.de-combined.log"

 

 

 

hier definieren wir, wo das logfile liegt, das awstats auswerten soll. fuer uns als vhcs user ist das in der regel immer unter /var/log/apache2/domain.tld-combined.log

 

als naechstes den domainnamen:

 

 

 

Code:

SiteDomain="einbeispiel.de"

 

 

 

da wir unsere stats auch mit www.domain.tld erreichbar haben wollen, gibt es bei awstats die moeglichkeit, aliase zu vergeben. hier tragen wir einfach www.domain.tld ein

 

 

 

Code:

HostAliases="www.einbeispiel.de"

 

 

 

fertig. das muessen wir jetzt fuer jede domain machen, fuer die wir awstats haben wollen.

es gibt allerdings einen kleinen trick, mit dem man sich etwas tipparbeit sparen kann, namentlich genannt "sed"

 

angenommen unsere 2. domain lautet "einzweitesbeispiel.com", geben wir jetzt einfach folgendes als root ein:

 

 

 

Code:

voyager:~# cat /etc/awstats/awstats.einbeispiel.de.conf |sed -e 's/einbeispiel.de/einzweitesbeispiel.com/g' >/etc/awstats/awstats.einzweitesbeispiel.com.conf

 

 

 

alles in eine zeile!

 

was tut der befehl? ganz einfach... "cat" gibt uns den inhalt der datei aus. diesen leiten wir per pipe (das ist das | zeichen) weiter an sed. sed ersetzt nun im ganzen text das wort "einbeispiel.de" durch ein anderes "wort", naemlich "einzweitesbeispiel.com". mit dem ">" zeichen leiten wir die ausgabe um. STDOUT ist normalerweise der bildschrirm, aber dank des "> /etc/awstats/awstats.einzweitesbeispiel.com.conf" koennen wir die ausgabe in eine datei umleiten

 

wenn wir alle konfigurationen fuer alle domains erledigt haben, koennen wir awstats noch automatisieren, mittels cron.

 

dazu als root eingeben:

 

 

 

Code:

voyager:~# crontab -e

 

 

 

wir fuegen folgende zeilen ein:

 

 

 

Code:

 

# awstats

30 */2 * * * /usr/share/awstats/tools/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats/awstats.pl

 

 

 

jetzt wird das awstats script alle 2,5 stunden bzw alle 150 minuten ausgefuehrt um unsere statistiken aktuell zu halten.

 

abschliessend fuehren wir den befehl ein mal manuell aus, um zu sehen, ob alles funktioniert, und um die ersten statisiken zu erzugen:

 

 

 

Code:

voyager:~# /usr/share/awstats/tools/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats/awstats.pl

 

 

 

 

 

das war's. wir sind am ende

 

jetzt kann man sich im browser die huebschen awstats ansehen, erreichbar per einbeispiel.de/stats/awstats.pl

 

 

 

 

 

#######################################

NACHTRAEGLICHES / AENDERUNGEN / VERBESSERUNGEN

#######################################

hier werde ich alle aenderungen, die ich vornehme, festhalten.

 

09.11.2004:

 

 

Zitat:

Wenn man die IP's noch aufloesen moechte, die in den logfiles stehen, um zu sehen, aus welchen laendern die besucher kommen, sollte man zusaetzlich noch in der Konfiguration folgendes aendern:

 

 

 

Code:

voyager:~# vi /etc/awstats/awstats.einbeispiel.de.conf

 

 

 

diese zeile:

 

 

 

Code:

DNSLookup=2

 

 

 

aendern in:

 

 

 

Code:

DNSLookup=1

 

 

 

WICHTIG

man sollte aber unbedingt bedenken, dass das unter umstaenden den nameserver arg belasten kann. awstats wertet die logs in dieser konfiguration "nur" alle 150 minuten aus, wenn man nun in 150 minuten 10000 besucher mit 10000 ips hat, dann hat der arme bind nen haufen zu tun...

 

 

 

 

11.11.2004:

 

 

Zitat:

WICHTIG

 

ich habe vorhin festgestellt, dass vhcs auch cron dateien ueberschreibt!

also bitte, wenn ihr den job per crontab -e eingetragen habt, das selbe nochmal in die datei:

 

 

 

Code:

/etc/vhcs2/crontab/working/crontab.conf

 

 

 

eintragen.

 

das selbe gilt fuer alle gemachten aenderungen an der apache konfiguration (die beiden aliase). diese sollte man nach dem eintragen in /etc/apache2/sites-available/vhcs2.conf, wie es in diesem howto beschrieben ist, auch nochmal ganz genau so in die datei:

 

 

 

Code:

/etc/vhcs2/apache/working/vhcs2.conf

 

 

 

eintragen.

 

dadurch wird vermieden, dass die haendisch gemachten aenderungen an diesen konfigurationsdateien versehentlich von vhcs ueberschrieben werden. denn dann funktioniert awstats auf einmal irgend wann nicht mehr ("not found"), da die aliase weg sind, und man geht auf wilde fehlersuche.

 

Des weiteren sollte man awstats.pl nicht unbedingt root als besitzer zuweisen, www-data reicht aus. also einfach ein:

 

 

 

Code:

chown www-data.www-data /usr/lib/cgi-bin/awstats/awstats.pl

 

 

 

ausfuehren.

 

VHCS2 GUI Button

(natürlich geht das auch über die "Custom Menüs" im Admin Bereich)

Step 1: Templates anpassen

/gui/themes/tpl/client/domain_statistics.tpl

Da ist der Button auskomentier und Sie sollten ihn nur aktivieren und einwenig anpasen.

 

Code:

<tr>

<td height="8"></td>

<td height="8" colspan="2" nowrap>

{TR_AWSTATS}

</td>

</tr>

 

 

Step 2: Die Variable DOMAIN_URL soll definiert werden.

/gui/clinet/domain_statistics.php

Zeile 450 - 464

Da sollte im Array man noch folgendes hinzufügen:

 

 

Code:

'DOMAIN_URL' => "http://www.".$_SESSION['user_logged']."/awstats",

 

 

In diesem Fall ist der Link http://www.domain.tld/awstats - das kann man nach Bedarf anpassen