ことある度にチョコチョコいじってきましたが、大体こなれてきたのでメモ。
=links=
・AWStats 6.5完全日本語版のページ
・AWStatsをFreeBSDで動かす
/home/homepage/statに配置する前提。
これをhttp://hogehoge.hoge/stat/以下で見せる感じ。
# mkdir /home/homepage/stat
# mkdir /home/homepage/stat/root
# mkdir /home/homepage/stat/scripts
# mkdir /home/homepage/stat/data
# mv wwwroot/cgi-bin/* /home/homepage/stat/scripts/
# mv wwwroot/classes/ /home/homepage/stat/
# mv wwwroot/css/ /home/homepage/stat/root/
# mv wwwroot/js /home/homepage/stat/root/
# mv wwwroot/icon/ /home/homepage/stat/root/
# mv tools/ /home/homepage/stat/
# chown -R homepage:users /home/homepage/stat/
awstats.hoge.confで変更するのはこのへん
## by higo
# for each service
SiteDomain="hoge.co.jp"
LogFile="../data/access_log.merge"
HostAliases="REGEX[hoge.co.jp]"
# change when set as sub-domain
DirCgi="/stat/cgi-bin"
DirIcons="/stat/icon"
# common
DirData="../data"
#SkipHosts="111.111.111.111/27"
SkipUserAgents="nagios"
#LoadPlugin="decodeutfkeys"
DNSLookup=1
Lang="jp"
UseFramesWhenCGI=0
utf8_decode.plで、全角空白→半角にしてくれないのがどうにも歯がゆいので
各Decode用subで
s/xe3x80x80/ /g;
を散りばめる。
cron実行用のscript
#!/bin/sh
ROOTDIR="/home/homepage/stat/"
WWWROOT="/home/homepage/stat/root/"
LOG_DIR='/path/to/logfile/server-*/logs/'
cd $ROOTDIR/scripts
#date
target_date=`date --date '1 days ago' +%Y%m%d`
perl ../tools/logresolvemerge.pl ${LOG_DIR}/access.log.${target_date}
| perl utf8_decode.pl > ../data/access_log.merge
#date
perl awstats.pl -config=hoge -update
perl awstats.pl -config=hoge -output > $WWWROOT/index.html
#date
cat ../data/dnscachelastupdate*.txt >> ../data/dnscache.txt
こんな感じ。
httpd.confは
# for stat(awstats)
RewriteEngine on
<Directory "/home/homepage/stat/scripts">
Options ExecCGI
AddHandler cgi-script .cgi .pl
</Directory>
RewriteRule ^/stat/cgi-bin/awstats.pl(.*)$ /home/homepage/stat/scripts/awstats.pl$1 [L]
RewriteRule ^/stat/(.*)$ /home/homepage/stat/root/$1 [L]
こんな感じでrewriteを使って仮想的に出しておしまい