nachdem ich den gestrigen Tag verbracht habe, awstats in Confixx zu integrieren, dachte ich dass ich meine Lösung öffentlich stelle damit evtl. noch andere davon was haben.
Ich hoffe ich konnte meine Vorgehensweise noch richtig nachvollziehen. Habe leider von Anfang an nicht mitgeschrieben :-(
Falls irgendwo Fehler drin sein sollten einfach bescheid geben ;)
Ich übernehme jedoch keinerlei Garantie auf Funktionalität und Fehlerfreiheit. Das Howto wird auf eigene Gefahr angewandt!
Ich konnte das Howto nicht ganz zuordnen wo ich es posten soll.
Hat etwas mit Scripting zu tun, dachte somit dass es hier gut aufgehoben ist. Wenn nicht einfach verschieben.. (ach warum sag ich das.. ich macht das ja dann so oder so *g*)
Zunächst besorgt man sich erst mal die aktuellste AWStats Version.
Zur Zeit des howto´s war dieß 5.9
Code: Select all
wget http://awstats.sourceforge.net/files/awstats-5.9.tgz
tar -xfz awstats-5.9.tgz
Des weiteren liegt das Script wo man später die Statistken abruft unter dem User1.
Ich habe bei Confixx nicht web sondern den Prefix user gesetzt wie man erkennen kann.
Wer andere Pfade nehmen will kann dies gern machen.
Erst mal die richtigen Rechte vergeben:
Code: Select all
chown -R root.root awstats-5.9
Code: Select all
mkdir /usr/share/awstats/
mkdir /etc/awstats/
mkdir /var/cache/awstats/
mkdir /var/www/user1/html/cgi-bin/awstats/
Code: Select all
cp -r awstats-5.9/wwwroot/cgi-bin/* /usr/share/awstats/
cp -r awstats-5.9/tools /usr/share/awstats/
mv /usr/share/awstats/awstats.pl /var/www/user1/html/cgi-bin/awstats/
chown user1:ftponly /var/www/user1/html/cgi-bin/awstats/ -R
cp -r awstats-5.9/wwwroot/icon /var/www/user1/html/
Code: Select all
cp /usr/share/awstats/awstats.model.conf /root/muster.conf 
Ich habe meine MAIN SETUP SECTION wie folgt angepasst:
Code: Select all
LogType=W
LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %virtualname"
LogSeparator=" "
DNSLookup=1
DirData="/var/cache/awstats"
DirCgi="/cgi-bin/awstats"
DirIcons="/icon"
AllowToUpdateStatsFromBrowser=0
AllowFullYearView=3
Nun legen wir die datei create_awstatsconf.php in /root/ an.
Sie sollte folgenden Inhalt haben:
Code: Select all
<?php
#########################################################################
#                                                                       #
#               AWStats Configuration - Maker for Confixx               #
#               Copyright 2003 by Michael Mangold                       #
#               Contact: info@michael-mangold.net                       #
#                                                                       #
#########################################################################
$conf_path = '/etc/awstats/';   // Pfad in dem die AWStats Konfigurationen liegen
$user_path = '/var/www';        // Pfad in dem Confixx die webs anlegt
$mysql_server = 'localhost';
$mysql_user   = 'dbuser';
$mysql_pwd    = 'userpasswort';
$mysql_db     = 'confixx';	// Confixx Datenbank
$mysql_table  = 'domains';	// Confixx domain-tabelle
mysql_connect($mysql_server,$mysql_user,$mysql_pwd);
mysql_select_db($mysql_db);
$sql = 'SELECT `domain` , `kunde` '
     . " FROM `$mysql_table` "
     . ' WHERE `richtigedomain` = 1';
system('rm /etc/awstats/*');
$result = mysql_query($sql);
while( $data = mysql_fetch_array($result) )
{
$logfile = "/var/www/$data[kunde]/log/access_log";
list($domain,$tld) = split('.', $data[domain]);
$config = "
LogFile="$logfile"
SiteDomain="$domain.$tld"
HostAliases="REGEX[^.*\.$domain\.$tld$]"
Include "/etc/awstats/muster.conf"
";
system ("echo '$config' > /etc/awstats/awstats.$domain.$tld.conf");
}
system('cp /root/muster.conf /etc/awstats/');
?>
Was das Script macht ?
Ganz einfach. Es schaut in der confixx datenbank nach welcher user welche domain hat.
Dann werden in /etc/awstats passende konfigurationen angelegt.
Diese Konfigurationen beinhalten aber nur LogFile, SiteDomain, HostAliases. Der Rest wird über den Include parameter angegeben, welcher auf unsere allgemeine Konfigurationsdatei verweißt.
Das wars auch schon fast.
Da confixx jedoch alle domains eines users in dieselbe logfile haut, müssen wir noch etwas ergänzen, damit eine Unterscheidung zwischen den Domains machbar ist.
Füge deshalb in der httpd.conf deines Apache unter der Include Anweißung von Confixx (ganz unten) folgende zwei Zeilen ein:
Code: Select all
LogFormat "%V:#:%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i" %V" confixx
LogFormat "%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i" %V" confixx2
Folgende Zeile lässt unsere Statistik alle 12 Stunden aktualisieren:
Code: Select all
0 */12 * * * /usr/bin/php4 /root/create_awstatsconf.php; /usr/share/awstats/tools/awstats_updateall.pl now -awstatsprog=/var/www/user1/html/cgi-bin/awstats/awstats.pl
http://www.domainVonUser1.de/cgi-bin/aw ... kdomain.de
Feedback erwünscht
Viel Erfolg ;)
Gruß Michael