user-avatar
Today is Freitag
24. Mai 2013

6. Juli 2011

Tux liest

AWStats für verschiedene vhosts und SELinux

by Dominik Sliwa — Categories: Linux, Webservice — Tags: , , , Leave a comment

Ein Kunde brauchte eine AWStats-Installation für diverse VHosts auf seinem Webserver. Als Besonderheit kam noch dazu, dass SELinux im Einsatz war, was das ganze ein klein wenig komplizierter machte.

Hintergrundinfos:
Betriebssystem war CentOS, Webserver ein Apache2 (der aber nur als Reverse Proxy eingesetzt wird). Da das System genau so, wie es benötigt wird, aus dem Cobbler fallen soll, sollten wenn möglich auch keine Perl-Pakete mit cpan installiert werden, sondern über die normale yum-Installation auf dem System landen. Diese Perl-Pakete sind bei rpmforge zu finden und die einfachste Möglichkeit, dieses Repository einzubinden ist diese hier:

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

Damit ist das Repository unter /etc/yum/repos.d/ zu finden und es können alle benötigten Pakete installiert werden:

yum install -y perl-LWP-UserAgent-Determined perl-Net-XWhois perl-Geo-IP-PurePerl GeoIP-data awstats

Damit wäre alles installiert, was man benötigt und es fehlt nur noch die Konfiguration. Ein Template ist hier zu finden: AWStats Config-Template
Es müssen nur die Platzhalter “_LOG”, “_DOMAIN_” bzw “_ALISASES_” angepasst werden (Logfile des vhosts, Domain unter der die Statistik zu finden ist, Leerzeichengetrennte Liste sämtlicher Aliase für die Domain). Diese Datei ist abzuspeichern unter /etc/awstats/awstats._DOMAIN_.conf

Damit ist awstats fertig konfiguriert und kann auch schon Statistiken generieren, allerdings sind diese noch nicht abrufbar. Um dies zu ermöglichen muss der Apache konfiguriert werden.

Der einfachste Schritt ist die Definition des Alias, eine passenede Konfiguration wird von awstats mitgeliefert:

cp /usr/local/awstats/tools/httpd_conf /etc/httpd/conf.d/awstats.conf

Allerdings fehlt noch eine Kleinigkeit, daher muss diese Datei ein wenig erweitert werden:

echo "<Directory /usr/local/awstats/wwwroot/cgi-bin>;
Options ExecCGI
AddHandler cgi-script .pl
</Directory>;
">>/etc/httpd/conf.d/awstats.conf

Dadurch ist es möglich, Perlscripte in diesem Verzeichnis auszuführen. Es fehlt noch ein

service httpd restart

und schon ist es fertig und man kann mit http://_DOMAIN_/awstats/awstats.pl die Statistik ansehen. ACHTUNG: Wenn man www.example.com als Domain ausgewählt hat, ist die Statistik auch nur unter http://www.example.com/… erreichbar, nicht unter http://example.com/…

Und wie man sieht: SIEHT MAN NICHTS ;) Das hat zwei Gründe:

  1. SELinux verhindert, dass das Perl-Script auf die Statistikdaten zugreifen kann
  2. Es wurde noch gar keine Statistikdatei geschrieben

Das zweite muss man eventuell erklären: AWStats schreibt aus den Accesslogs diese Statistikdaten, die von der WebGUI geparsed und grafisch aufbereitet werden. Wäre auch schlecht, wenn bei jedem Klick in der GUI Megabyteweise Daten gelesen und geparsed werden müssen. ;)

Das erste Problem ist mit 3 Kommandos gelöst:

chcon -R -t httpd_sys_script_exec_t /usr/local/awstats/wwwroot/cgi-bin
chcon -R -t httpd_sys_script_rw_t /var/lib/awstats
chcon -R -t httpd_sys_script_rw_t /var/lib/GeoIP/

Jetzt hat der Webserver die Rechte im cgi-bin-Verzeichnis Scripte auszuführen und darf lesend und schreibend auf die entsprechenden Verzeichnisse zugreifen (Speicherort der Statistikdaten und der GeoIP-Datenbank zum Auflösen der IP-Adressen in Länder)

Das zweite Problem mit 1 Kommando:

/usr/local/awstats/tools/awstats_updateall.pl now

Mit diesem Kommando werden alle Konfigurationsdateien unter /etc/awstats/awstats.*.conf (abgesehen von der master-Konfiguration) ausgeführt und aus den Logfiles Statistikdaten erzeugt. Es empfiehlt sich, dieses Kommando in einen cronjob zumzuwandeln, ich habe mich für einen stündlichen Job entschieden.

Wenn man nur eine einzelne Domain aktualisieren möchte, kann man das Kommando

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=_DOMAIN_

Hinterlasse eine Antwort

© 2013 Tuxtorials.de All rights reserved - Mobile View - Powered by WordPress and Wallow - Have fun!