Jít na obsah Jít na navigaci Jít na vyhledávání

Awstats rychle a jednoduše

Awstats je skript v Perlu, který zpracovává logy (nejen) webserveru a ve výsledku vyplivne pěknou statistiku přístupů. Dnes si ukážeme, jak Awstats lehce a efektivně nastavit.

Awstats

Standardní konfigurace Awstats se nachází v adresáři /etc/awstats, kde je i ukázkový soubor awstats.conf. Jelikož konfigurace podporuje funkci Include, využijeme tento soubor jako základ pro naše vlastní konfigurace.

Vytvoříme nový soubor awstats.domain.tld.conf:

# hlavní config, nejprve jej vhodně nastavíme (formát logů, pluginy atd.)
Include "/etc/awstats/awstats.conf"
# log soubor Apache (v mém případě)
LogFile="/home/www/logs/domain.tld.log"
# doména, povinný parametr, který se spíše uplatní při použití spojeného logu (o tom později)
SiteDomain="domain.tld"
# aliasy pro SiteDomain, doporučuji tento formát
HostAliases="REGEX[domain\.tld$]"

Apache 2

Nastavíme Apache, aby logoval. Direktiva CustomLog se může nacházet uvnitř i vně direktivy <VirtualHost>, podle toho, co všechno chceme logovat.

Jeden log pro každou doménu

Direktivu přidáme do odpovídajícího VirtualHosta:

<VirtualHost *:80>
    ServerName domain.tld
    ...
    CustomLog /home/www/logs/domain.tld.log combined
</VirtualHost>

Jeden log pro celý server

Přidáme mimo VirtualHost:

# vlastní formát logu, prefixem je jméno VirtualHosta
LogFormat "%{Host}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" cplus
CustomLog /home/www/logs/server.log cplus

V případě této konfigurace musíme Awstats říct o novém formátu logu, což provedeme přímo v konfiguraci awstats.conf úpravou řádky LogFormat:

LogFormat="%virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"

Další nastavení

Alias /awstats-icon/ /usr/share/awstats/icon/
<Directory /usr/share/awstats/icon>
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Namapuje adresář s obrázky Awstats do URL adresy /awstats-icon/.

Zpracování

K periodické aktualizaci dat nastavíme cron (pokud již tak distributor neudělal):

*/15 *  * * *   root    /home/bin/awstats_updateall.pl now --excludeconf=awstats.conf > /dev/null 2>&1

Skript awstats_updateall.pl a dalších pár šikovných skriptů nalezneme v adresáři /usr/share/doc/awstats/examples. Tento skript zpracovává všechny konfigurační soubory, takže aktualizuje všechny domény.

Máme-li správně nastavené CGI, což ve výchozí konfiguraci obvykle bývá, nalezneme webový frontend awstats na adrese http:domain.tld/cgi-bin/awstats.pl?con­fig=domain.tld//. Kromě řešení na bázi Perl frontendu a awstats_updateall.pl skriptu je však možné využít awstats_buildstaticpages.pl, který přímo vygeneruje HTML soubory do adresáře zadaného v parametru. Toto řešení převážně využívám na webhostingách, má však tu nevýhodu, že není možné zobrazit statistiky za jiná období a zákazník vždy vidí pouze aktuální měsíc.

Vylepšení

Napsal jsem rewrite, který podstatně zkrášluje adresu a parametr předávaný skriptu /cgi-bin/awstats.pl na webu:

RewriteEngine On
RewriteRule ^/?([^/]+)/$ /cgi-bin/awstats.pl?config=$1 [PT,L,QSA]

Výše zmíněný kód je vhodné aplikovat na určitou subdoménu, např. stats. Statistiky pak nalezneme na adrese http://stats.anotherdomain.tld/domain.tld/.

Statistiky subdomén

Awstats se samozřejmě dá nastavit tak, aby u určité domény logoval i každou subdoménu. Tento přístup kombinuje a upravuje formáty logů popsané výše. Každá subdoména musí mít svůj VirtualHost a definovaný log, v optimálním případě budou logy pro každou doménu zvlášť a v nich spojené logy subdomén s upraveným formátem (viz. jeden log pro celý server).

Štítky:

Komentáře

Komentáře jsou uzavřeny