Ha már csináltam blogot, akkor látni szeretném a látogatottsági statisztikáit is. A Google Analytics és társai által használt JavaScript kódok sosem voltak szimpatikusak, a saját használatú böngészőimben blokkolom is amiről tudok.
A szerver oldali napló feldolgozás, bár kevesebb információt ad, de azt biztosabb forrásból. Megjegyzem, számomra jelenleg a kliens böngészőjében futó kódok által nyújtott extra információk érdektelenek, nem vagyok kíváncsi a látogatók felbontása, a telepített Flash/Java pluginekre stb. Most csak az érdekel, hogy naponta mekkora adatmennyiséget kell kiszolgálnia a szervernek. Ez most és valószínűleg jó sokáig csak engem fog jelenteni, amint felnézek egy új postot írni vagy keresni a régebbiek között.
Az AWStats egy kiváló eszköz a céljaim elérésére. Utoljára még a 6.x-es verzióval volt dolgom, most a 7.0-ással tettem próbát. Őszintén szólva nem láttam változást az új verzió által nyújtott szolgáltatásokban, de cserébe az eddigi kényelmes telepítés egy kicsit bonyolultabbá vált (bár ez a Gentoo package maintainer-ének a sara).
A telepítés a szokásos:
emerge -av awstats
A vhosts támogatás a 7-es verzióval megszűnt, két használható USE flag maradt, az ipv6 és a geoip. Ebből nekem csak az ipv6-ra volt szükségem (vagyis majd csak lesz, ha megleszek az IPv6-os elérés kiépítésével). A geoip lévén, hogy transzparens proxy mögött van az oldal, sok hasznot nem hajtott volna.
A telepítés után az /etc/awstats könyvtárban lehet a programot konfigurálni. Ehhez le kell másolni az ott található gyári awstats.model.conf állományt.
cd /etc/awstats
cp -pav awstats.model.conf awstats.arpad.syrius-software.hu.conf
Az általam végzett módosítások:
--- awstats.model.conf 2012-04-07 23:42:04.120968177 +0200
+++ awstats.arpad.syrius-software.hu.conf 2012-04-08 13:09:17.392151839 +0200
@@ -48,7 +48,7 @@
# If there are several log files from load balancing servers :
# Example: "/pathtotools/logresolvemerge.pl *.log |"
#
-LogFile="/var/log/apache2/access_log"
+LogFile="/var/log/apache2/arpad.syrius-software.hu/access_log"
# Enter the log file type you want to analyze.
A napló állomány helye, ez természetes.
@@ -150,7 +150,7 @@
# Example: "ftp.domain.com"
# Example: "domain.com"
#
-SiteDomain="localhost"
+SiteDomain="arpad.syrius-software.hu"
# Enter here all other possible domain names, addresses or virtual host
@@ -165,7 +165,7 @@
# Note: You can also use @/mypath/myfile if list of aliases are in a file.
# Example: "www.myserver.com localhost 127.0.0.1 REGEX[mydomain\.(net|org)$]"
#
-HostAliases="localhost 127.0.0.1 REGEX[myserver\.com$]"
+HostAliases="arpad.syrius-software.hu"
# When AWStats updates its statistics, it stores results of its analysis in
A domain megadása.A HostAliases szerintem lehetne üres is, de így szoktam meg, hogy ezt is kitöltöm.
@@ -200,7 +200,7 @@
# Example: "C:/awstats_data_dir"
# Default: "." (means same directory as awstats.pl)
#
-DirData="."
+DirData="/var/lib/awstats"
# Relative or absolute web URL of your awstats cgi-bin directory.
Adat könyvtár, az AWStats itt tárolja el a feldolgozások eredményeit, innen tudja, hogy hol tartott és mi az amit még meg kell csinálni. Minden hónaphoz külön szöveges adatbázist készít. Így ha újra akarjuk valamelyik hónapot generáltatni (pl: bővítettük az exclude listát), akkor elég letörölni innen a megfelelő állományt és ráfuttatni a régi naplókra ismét.
@@ -209,7 +209,7 @@
# Example: "/awstats"
# Default: "/cgi-bin" (means awstats.pl is in "/yourwwwroot/cgi-bin")
#
-DirCgi="/cgi-bin"
+DirCgi="/awstats"
# Relative or absolute web URL of your awstats icon directory.
Az AWStats URL része. Ez nem kötelező lehet, csak akkor kell ha CGI-t is akarunk használni és nem csak statikus HTML-eket generálni. Én most akartam CGI-t használni.
@@ -276,7 +276,7 @@
# Possible values: 0 or 1
# Default: 0
#
-EnableLockForUpdate=0
+EnableLockForUpdate=1
# AWStats can do reverse DNS lookups through a static DNS cache file that was
Mivel le van tiltva a CGI felületéről a naplók újrafeldolgozása, így ennek értelme nem sok, de ártani nem árt.
@@ -494,7 +494,7 @@
# Example: "/badpage.php /page.php?param=x REGEX[^\/excludedirectory]"
# Default: ""
#
-SkipFiles=""
+SkipFiles="REGEX[^\/awstats]"
# Use SkipReferrersBlackList if you want to exclude records coming from a SPAM
Nem akartam a statisztikában látni az AWStats nézegetéséből kapott oldalletöltéseket.
@@ -843,7 +843,7 @@
# 2 reduces AWStats speed by 1%
LevelForFileTypesDetection=2 # 0 disables File types detection.
# 2 reduces AWStats speed by 1%
-LevelForWormsDetection=0 # 0 disables Worms detection.
+LevelForWormsDetection=2 # 0 disables Worms detection.
# 2 reduces AWStats speed by 15%
Erőforrás van, hátha látok itt egyszer valamit.
@@ -966,12 +966,12 @@
# Show domains/country chart
# Context: Web, Streaming, Mail, Ftp
# Default: PHB, Possible column codes: PHB
-ShowDomainsStats=PHB
+ShowDomainsStats=0
# Show hosts chart
# Context: Web, Streaming, Mail, Ftp
# Default: PHBL, Possible column codes: PHBL
-ShowHostsStats=PHBL
+ShowHostsStats=0
# Show authenticated users chart
# Context: Web, Streaming, Ftp
Itt csak a transzparens proxy belső lábát láthatom, nem túl izgalmas, így nem is kell.
@@ -986,7 +986,7 @@
# Show worms chart
# Context: Web, Streaming
# Default: 0 (If set to other than 0, see also LevelForWormsDetection), Possible column codes: HBL
-ShowWormsStats=0
+ShowWormsStats=1
# Show email senders chart (For use when analyzing mail log files)
# Context: Mail
Ha már próbálunk worm-öket keresni, akkor ne tartsuk magunkban az eredményt.
@@ -1280,7 +1280,7 @@
# DESCRIPTION: Add tooltips pop-up help boxes to HTML report pages.
# NOTE: This will increased HTML report pages size, thus server load and bandwidth.
#
-#LoadPlugin="tooltips"
+LoadPlugin="tooltips"
# PLUGIN: DecodeUTFKeys
# REQUIRED MODULES: Encode and URI::Escape
Szeretem a felugró tooltip-eket. Legalábbis most ezt gondolom.
Ezzel megvolnánk, most már csak működésre kell bírni és megjeleníteni az eredményt. Javasolt a működéssel kezdeni.
A /var/lib/awstats alá bekerülő állományokat az Apache felhasználójának (itt most apache) is olvasnia kell tudnia (írni nem).
chgrp apache /var/lib/awstats
chmod 2750 /var/lib/awstats
A kettes nem elírás az elején, hanem a SetGID bit.
Rá kell bírni valahogy hogy adott időközönként le is fusson. Ehhez én most a logrotate prerotate scriptjét használtam. Ez csak ilyen kis forgalmú weboldalak esetén járható út, mivel amíg fut a feldolgozás, addig áll a logrotate. Ha lesz időm, akkor megpróbálom a postrotate-be áttolni.
# Apache2 logrotate snipet for Gentoo Linux
# Contributes by Chuck Short
#
/var/log/apache2/*log /var/log/apache2/*/*log {
daily
rotate 14
missingok
notifempty
sharedscripts
prerotate
/usr/bin/awstats_updateall.pl now &> /tmp/awstats.log || true
endscript
postrotate
/etc/init.d/apache2 reload > /dev/null 2>&1 || true
endscript
}
Az /usr/bin/awstats_updateall.pl egy wrapper Perl script ami végignézi az /etc/awstats könyvtárat és minden ott talált konfigurációs állománnyal meghívja az awstats.pl scriptet ami tényleges napló feldolgozást végzi.
Ezzel kész a működés, már csak a megjelenítés van hátra. Ehhez keressük meg az Apache konfigurációban a nekünk szimpatikus virual host-ot és szúrjuk be az alábbiakat a VirtualHost szekcióba:
# AWStats
Alias /awstats/classes "/usr/share/awstats/wwwroot/classes/"
Alias /awstats/css "/usr/share/awstats/wwwroot/css/"
Alias /awstats/icon "/usr/share/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/share/awstats/wwwroot/cgi-bin/"
ScriptAlias /awstats "/usr/share/awstats/wwwroot/cgi-bin/awstats.pl"
ScriptAlias /awstats.pl "/usr/share/awstats/wwwroot/cgi-bin/awstats.pl"
<Directory /usr/share/awstats>
Order allow,deny
Allow from all
</Directory>
<Directory /usr/share/awstats/wwwroot/cgi-bin>
Options ExecCGI
</Directory>
Fontos, hogy ezt csak akkor csináljuk így ha csak egy oldalról van szó vagy mindegyik oldalhoz csak mi férünk hozzá! Az AWStats CGI scriptjének megadható a config GET paraméterben hogy melyik konfigurációs állományból dolgozzon, így melyik weboldal statisztikáit mutassa meg. Pl:
http://egyikoldal.hu/awstats?config=masikdoldal.hu
Ebben az esetben az AWStats az /etc/awstats/awstats.masikoldal.hu.conf állományt használja.