Webブラウザ(Apache)のアクセスログ解析システムをここからAWStats66_Jpn.tar.gzをDownloadしてくる。
事前準備としてJcodeが必要なのでここからJcode-2.06.tar.gzをDownload
$ tar zxvf Jcode-2.06.tar.gz $ cd Jcode-2.06 $ perl Makefile.PL $ make cp Jcode/Nihongo.pod blib/lib/Jcode/Nihongo.pod cp Jcode.pm blib/lib/Jcode.pm Manifying blib/man3/Jcode::Nihongo.3pm Jcode/Nihongo.pod:1: Unknown command paragraph "=encoding euc-jp" Manifying blib/man3/Jcode.3pm $ make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/append.....ok t/convert....ok t/getcode....ok t/h2z........ok t/jfold......ok t/length.....ok t/mime.......ok t/new........ok t/perl581....ok t/regex......ok t/tr.........ok All tests successful. Files=11, Tests=244, 3 wallclock secs ( 2.58 cusr + 0.10 csys = 2.68 CPU) $ su # make install Installing /usr/lib/perl5/site_perl/5.8.6/Jcode.pm Installing /usr/lib/perl5/site_perl/5.8.6/Jcode/Nihongo.pod Installing /usr/share/man/man3/Jcode.3pm Installing /usr/share/man/man3/Jcode::Nihongo.3pm Writing /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/auto/Jcode/.packlist Appending installation info to /usr/lib/perl5/5.8.6/i386-linux-thread-multi/perllocal.pod
$ tar zxvf AWStats66_Jpn.tar.gz $ su # cd apache/cgi-bin/ # mkdir -p awstats/icon # cd awstats # cp -r /usr/local/src/AWStats66_Jpn/wwwroot/cgi-bin/* . # cd icon # cp -r /usr/local/src/AWStats66_Jpn/wwwroot/icon/* . # cd /usr/local/apache2/cgi-bin/awstats/ # cp awstats.model_jp.conf awstats.conf
/usr/local/apache2/cgi-bin/awstats/awstats.confを設定
##LogFile="/var/log/httpd/mylog.log" LogFile="/usr/local/apache2/logs/access_log.utf8" ##SiteDomain="" SiteDomain="wwwism.dyndns.org" # 0 - DNSの逆引きを行わない # 1 - DNSの逆引きを完全に行う # 2 - DNSキャッシュファイルに存在するIPアドレスについてのみのみ逆引きを行う # 既定値: 2 DNSLookup=1 ##DirCgi="/cgi-bin" DirCgi="/cgi-bin/awstats" ##DirIcons="/icon" DirIcons="/cgi-bin/awstats/icon" ##SkipHosts="" SkipHosts="127.0.0.1 REGEX[^192.168.10.]" # 既定値: "auto" # Lang="jp"
手動で、utf8形式にログを変換
# ./utf8_decode.pl < /usr/local/apache2/logs/access_log > /usr/local/apache2/logs/access_log.utf8
手動でアクセス解析を実行
# ./awstats.pl -config=awstats.conf -update Create/Update database for config "./awstats.conf" by AWStats version 6.6 (build 1.887) From data in log file "/usr/local/apache2/logs/access_log.utf8"... Phase 1 : First bypass old records, searching new record... Searching new records from beginning of log file... Phase 2 : Now process new records (Flush history on disk after 20000 hosts)... Jumped lines in file: 0 Parsed lines in file: 396247 Found 92276 dropped records, Found 29305 corrupted records, Found 0 old records, Found 274666 new qualified records.
LogFormat=1でcombinedだが、commonログ形式あるとawstats.plでフォーマット異常のエラーが出る。
httpd.confのCustomLog logs/access_log commonをコメントアウトし、combinedのコメントをはずしておく。
このままだと画像ファイルが表示しない。cgi-bin内のディレクトリはすべてScript扱いなので.jpgや.pngはエラーするのでそれを許可する
httpd.conf
ScriptAlias /cgi-bin/ "/usr/local/apache224/cgi-bin/" # 以下を追加する <Directory /usr/local/apache224/cgi-bin/awstats/icon/> AddHandler image/gif .gif AddHandler image/jpg .jpg AddHandler image/png .png </Directory>
アクセスURL
http://wwwism.dyndns.org/cgi-bin/awstats/awstats.pl
以下のようなScript作成し、crontabを設定する
awstats.sh
#!/bin/sh ALOG=/usr/local/apache2/logs/access_log UTF8LOG=/usr/local/apache2/logs/access_log.utf8 UTF8DECODE=/usr/local/apache2/cgi-bin/awstats/utf8_decode.pl AWSTATS=/usr/local/apache2/cgi-bin/awstats/awstats.pl LOG=/var/log/awstats.log $UTF8DECODE < $ALOG > $UTF8LOG $AWSTATS -config=awstats.conf -update > $LOG
解析を実行するとawstats052008.txtというファイルが月ごとにできる
これは2008/5のファイル
また、一度解析が終了したらそのファイルなかから、新しい日付だけ解析し
ADDしてくようだ
よって、logが分割している場合は
ALOG=/var/log/apache2/access_log ALOG1=/var/log/apache2/access_log.1 ALOGSUM=/var/log/apache2/access_log.sum cat $ALOG.1 > $ALOGSUM cat $ALOG >> $ALOGSUM $UTF8DECODE < $ALOGSUM > $UTF8LOG
のように一つ前のlogとをADDして解析すればよい。 これはこのプログラムとlogロケートの間に蓄えられたlogを無視しなようにするため
30 3 * * * /usr/local/apache2/cgi-bin/awstats/awstats.sh