Dieser Blog-Eintrag richtet sich an externe Administratoren, bei denen Confixx Probleme mit der Verarbeitung von Zugriffsdateien (Zugriffs-Statistiken, Traffic-Auswertung oder Logrotate) hat. Unsere Webhosting-Kunden sind hiervon nicht betroffen.
Problem: Nach dem Upgrade von Debian auf Debian Squeeze zeigt Confixx keine Traffic-Statistiken an. Auch die Web-Statistiken wie Webalyzer oder AWStats werden nicht mehr aktualisiert, außerdem wachsen die Log-Dateien (log/access_log) ständig und werden nicht mehr rotiert (bzw. in log/old/ verschoben).
Ursache: Confixx ruft zur Auswertung der Zugriffstatistiken und dem Rotieren der Log-Dateien ein eigenes Skript namens „httpdtraffik.sh“ auf. Dieses befindet sich im gleichen Ordner wie das Counterscript / Update-Script, also meist in /root/confixx oder /opt/confixx:
#!/bin/sh
# (…)
for HOME in $HOMEDIR/* ; do
USER=${HOME##$HOMEDIR/}
if ( echo -E „X$USER“ | $GREP „^X$PREFIX[0-9]+$“ >/dev/null ) ; then
if test „$DEBUG“ = „1“; then
echo „$USER“
fi
Dieses Skript iteriert nun in einer for-Schleife über jeden Eintrag, der in $HOMEDIR (also dem Verzeichnis, in dem alle Kunden-Accounts liegen) gefunden werden kann. $HOMEDIR ist auf Debian-Systemen üblicherweise „/var/www“, bei SuSE-Systemen „/srv/www/“.
Als erstes wird versucht, in der Variable den Ordnernamen zu ersetzen, so dass nur noch der Kunden-Name übrig bleibt, welcher mit dem Kunden-Prefix verglichen wird. Es werden somit nur die Ordner verarbeitet, die auch tatsächlich mit dem User-Prefix beginnen. Wird „httpdtraffik.sh“ mit dem Parameter „DEBUG“ aufgerufen, so wird üblicherweise der gefundene „USER“ ausgegeben – seit dem Upgrade auf Debian Squeeze bleibt dies auch aus.
Während dem Upgrade wird der Anwender gefragt, ob er den Wert der Standard-Shell ändern möchte. Unter Debian Lenny und zuvor war die „bash“ („/bin/bash“) als Standard vorgegeben, während dem Upgrade wird nun empfohlen, auf die „Dash“-Shell zu wechseln. Debian aktualisiert dann den Symlink „/bin/sh“, so dass zukünftig die „dash“ verwendet wird.
Zurück zum Confixx-Problem: Konkret schlägt hier das Entfernen des Pfades aus der „USER“-Variable fehl, so dass diese Variable zwar auch mit dem User-Prefix verglichen wird, allerdings keine Übereinstimmung gefunden wird. Somit wird die gesamte Verarbeitung des User-Accounts nicht durchgeführt, auch Log-Files werden niemals rotiert.
Lösung: Um erneut wieder Zugriffs-Statistiken und kleine Log-Dateien zu erhalten, gibt es zwei Möglichkeiten, von denen die eine die andere nicht ausschließt.
- Anpassen des Shebangs in „httpdtraffik.sh“:
Dieser Schritt ist die einfachste Lösung, da keine Systemänderungen vorgenommen werden. Hierfür wird in der ersten Zeile der Datei statt „#!/bin/sh“ nun „#!/bin/bash“ hinterlegt. Linux verarbeitet das Skript dann nicht mehr mit „/bin/sh“, sondern verwendet in jedem Fall die BASH (Bourne Again SHell).
Achtung! Diese Änderung muss nach jedem Update von Confixx erneut durchgeführt werden, solange Parallels hier nicht eingreift! - Anpassen von Debian Linux, so dass wieder systemweit die BASH genutzt wird:
Nach dem Aufruf von „dpkg-reconfigure dash“ erhält der Anwender erneut die Auswahl, ob die DASH als Standard-Shell aktiviert werden soll. Wird dies verneint, verwendet Debian erneut die BASH, um das HTTP-Traffic-Skript zu verarbeiten.