The Webalizer – Mehrere virtuelle Server verwalten und auswerten

Gestern habe ich recht spontan über die Absicherung der Statistiken des Webalizer geschrieben. Das Meiste lässt sich auf andere Programme ohne Probleme übertragen. Heute soll es um die Einrichtung mehrerer virtueller Server (VServer) unter Apache und die Auswertung der Log-Dateien gehen.

Apache Konfigurationsdateien

Liegen viele Virtuelle Server auf einem Web-Server, gilt es den Überblick durch Ordnung zu wahren. Auch wenn alles im Apache in einer Datei beschreibbar ist, empfiehlt es sich, für jeden Server eine eigene Konfigurationsdatei zu erstellen und mit dem Namen des Servers zu versehen. Da mehre Domains auf meinem Server liegen, nehme den Fully Qualified Domain Name (FQDN) des Servers mit in den Dateinamen. Die Definition eines Servers steht somit in der Datei:

/etc/apache2/vhosts.d/<servername>.conf

und ist meist recht spartanisch. Siehe dazu den vorherigen Artikel.

Apache Log-Dateien

In vielen Fällen schreibt der Apache alle Zugriffe in ein einziges Access log (/var/log/apache2/access_log unter OpenSuSE). Das Format der Log-Einträge kann frei definiert werden. Die Default-Einstellung protokolliert nicht mit, auf welchen VServer zugegriffen wurde. Mit einer Erweiterung der Log-Einträge um die ServerNamen kommt der Webalizer nicht zurecht. Die Konsequenz ist, dass für jeden VServer eine eigene Log-Datei angelegt werden muss. Für diese Log-Dateien verwende ich folgende Namenskonvention:

/var/log/apache2/vhosts/<servername>/access_log

Das Rotieren der Logs der VServer wird durch eine Datei /etc/logrotate.d/apache2.vserver gesteuert. Hier erzeuge ich nur eine Datei für alle Server.

(Einzelne Log-Dateien haben auch ihre Vorzüge.)

Es empfiehlt sich vor einem Rotieren des Logs dieses mit dem Webalizer auszuwerten, da sonst Einträge verloren gehen. Da eine Webalizer Auswertung recht lange dauern kann, sollte der Web-Server nicht gestoppt werden. Dadurch können einige Einträge für die Auswertung verloren gehen, aber dies sollte zu verschmerzen sein.

Webalizer Output Verzeichnis

Der Weebalizer erzeugt seien Report in einem Verzeichnis. Dort werden auch historische Daten gespeichert, um nicht laufend alle Log-Einträge auswerten zu müssen. Einmal zählen reicht. Um die Zugriffe leichter zu kontrollieren lege ich die Statistiken auf einem eigenen VServer ab, der unter

/srv/www/vhosts/<servername>/

gespeichert wird. Unterhalb des VServer-DocumentRoot lege ich für jeden VServer wieder ein eigenes Verzeichnis mit dem Servernamen ab. Z.B.:

/srv/www/vhosts/webalizer.excample.com/wiki.excample.com

Das spartanische php-Script index.php in diesem Verzeichnis liest die Unterverzeichnisse und erzeugt eine Übersichtsseite Seite mit Links zu den einzelnen Statistiken.

Webalizer Konfigurationsdateien

Nun gilt es die einzelnen Statistiken für die VServer zu steuern. Diese Webalizer Konfigurationsdateien werden unter

/etc/webalizer.d/<servername>.conf

abgelegt.

Konfigurationsscript

Um den alle VServer für den Webalizer einzurichten, habe ich ein kleines Script geschrieben, das die Verzeichnisse erzeugt und die Konfigurationsdateien anpasst bzw. fehlende erzeugt. Voraussetzung ist, dass alle VServer unter /etc/apache2/vhosts.d/ definiert sind. Das Script liest alle Konfigurationsdateien des Verzeichnisses und sucht nach Zeilen „ServerName …“ (wichtig Groß- und Kleinschreibung beachten) und erzeugt mit diesem Servernamen die Einträge. Der Haupt-Domain-Name wird aus dem ServerName Eintrag der default-server.conf genommen.

Das Script findet sich hier: download

Webalizer ausführen

Um den Webalizer regelmäßig auszuführen, startet Cron folgendes Mini-Script:

#!/bin/sh

for CONF in /etc/webalizer.d/*.conf
do
  webalizer -c "$CONF"
done

Damit soll es für heute gut sein. Genug für diese Nacht.

E-Mail Verschlüsselung unter Lotus Notes

Neben der in Lotus Notes eigenen Verschlüsselung der Dokumente / Mails kann man auch die S/MIME Verschlüsselung mit dem cryptovision Plugin cv act s/mail nutzen – wenn man die Software denn hat. Vorteil ist, dass nicht nur Lotus Notes Empfänger in den Genuss der Verschlüsselung kommen.

Nachdem sich Outlook oder K-Mail nutzende Empfänger meiner aus Lotus Notes 7.0.3 verschickten Mails beklagt haben, dass nur eine Datei smime.p7m als Anhang angezeigt wird, bin ich am Wochenende der Ursache auf den Grund gegangen. Schicke ich eine mit cv act s/mail S/MIME verschlüsselte Lotus Notes an eine Internet Adresse, dann wird die Mail unter K-Mail nicht als S/MIME verschlüsselt erkannt. Ein Vergleich mit einer erkannten Mail zeigte, dass dies Ursache ein falscher Content-Type ist. Irgendwo bei der SMTP Konvertierung setzt Lotus Notes (oder das cv act plugin) folgenden Content-Type:


Content-type: application/octet-stream;
  name="smime.p7m"

Richtig ist der folgende Eintrag:


Content-type: application/pkcs7-mime;
  smime-type=enveloped-data;
  name="smime.p7m"

Eine Korrektur des Content-Type bestätigt den Verdacht. Da es mühsam ist die Mails zu speichern, im Editor zu korrigieren und wieder in K-Mail zu importieren, habe ich einen kleinen Filter mit sed geschrieben, der die Korrektur auf Knopfdruck erledigt. Als Filterregeln bieten sich an:

  1. X-Mailer enthält: Lotus Notes Release 7.0.3 September 26, 2007
  2. Der Nachrichtenvorstand enthält: smime.p7m
  3. Der Nachrichtenvorstand enthält nicht: pkcs7-mime

Installation:

  1. Zip-Archiv herunter laden
  2. In ~/bin oder /usr/local/bin extrahieren
  3. Neuen Filter in K-Mail einrichten

Wer es nützlich findet, spendiere mir bei Gelegenheit einen Latte Macchiato.


Downloads:

  1. Patch-SMIME.zip

Facebook, Twitter und Co

Das bisherige Script für die Facebook, Twitter und Co Buttons habe ich durch ein Datenschutz freundlicheres Script von heise.de ersetzt. Die Buttons müssen jetzt mit einem Klick aktiviert werden, bevor sie Daten an Facebook, Twitter und Co senden.

Für WordPress gibt es zwei Versionen zur Auswahl:

  • „XSD socialshareprivacy“
  • „WP socialshareprivacy“

Nach einem kurzen Test habe ich mich für „WP socialshareprivacy“ entschieden. „XSD socialshareprivacy“ zeigte keinen Facebook-Like-Button an und in der Plugin-Übersicht fehlt ein Link zur Konfiguration. Auch den Programm-Code finde ich bei „WP socialshareprivacy“ übersichtlicher und strukturierter.

In beiden Fällen erscheinen die Button jedoch nur unter den Artikeln und nur in der Einzelansicht der Artikel. Ich hätte die Buttons lieber unter dem Titel. Mal sehen, was sich da machen lässt.

Flashplayer und Firefox unter OpenSuSE

Das OpenSuSE immer etwas mit neuen Firefox-Versionen hinten dran ist, installiere ich ihn meist von Hand. Nach Update des Firefox beginnt jedes Mal das gleiche Spiel. Das Flashplayer-Plugin will nicht mehr. Installieren über den Firefox hilft nicht. Das Plugin wird nicht gefunden. Ursache ist bei mir, dass der Flash-Player nicht dort installiert wird, wo Firefox ihn erwartet und das Plugin Verzeichnis nach dem Update nicht existiert oder leer ist.

Unter OpenSuSE gibt es zwei Verzeichnisse /usr/lib/browser-plugins (32-bit) und /usr/lib64/browser-plugins (64-bit). Der Firefox sucht jedoch in der Regel im Verzeichnis /usr/lib/firefox/plugins bzw. /usr/lib64/firefox/plugins.

Nach meiner Erfahrung ist es nicht ratsam, die neue Version Firefox über die alte Installation zu kopieren. Daher benenne ich das alte Verzeichnis vor dem Kopieren nach firefox- um.

Um die lästige Nacharbeit der Plugin-Installation zu beschleunigen, hab ich mir jetzt ein kleines Script geschrieben.

Hier die Kurzfassung:

#!/bin/sh
mkdir -p /usr/lib64/firefox/plugins
pushd /usr/lib64/firefox/plugins
for P in /usr/lib64/browser-plugins/*
do 
   [ ! -e "`basename \"$P\"`" ] && ln -s "$P"
done
for P in /usr/lib/browser-plugins/*
do 
  [ ! -e "`basename \"$P\"`" ] && ln -s "$P"
done
popd

Für 32-Bit Versionen ist das Verzeichnis /usr/lib64 durch /usr/lib zu ersetzen. Grundsätzlich könnte man statt des Verzeichnis /usr/lib64/firefox/plugins einen Link auf /usr/lib64/browser-plugins/ anlegen. Diese Variante hat den Vorteil, dass man die Plugins, die Firefox nutzt, löschen kann , ohne die Installation im Verzeichnis /usr/lib64/browser-plugins/ zu ändern.

Etwas lässtig ist auch, den flask-player zu finden, wenn ein nicht nach /usr/lib64/browser-plugins/ installiert wird. Hier hilft ein locate libflashplayer.so oder find /usr/lib64 -name „libflashplayer.so“. Trotz 64-Bit findet sich auf meinem System nur eine Datei in /usr/lib/flash-plugin/. Ein entsprechendes 64-Bit Verzeichnis existiert nicht. Dies liegt daran, dass es noch keine stabile 64-Bit Version gibt. Ich lade mir am liebsten den Flash-Player von Adobe herunter, entpacke und installiere ihn manuell.

Direkter Flash-Player Download

Mutige können sich auch ein Adobe Flash Player „Square“ 64-Bit Pre-Release installieren.