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:
- SELinux verhindert, dass das Perl-Script auf die Statistikdaten zugreifen kann
- 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_
