AWStats 6.6完全日本語版

更新日2009-10-02 (金) 16:04:19

Webブラウザ(Apache)のアクセスログ解析システムをここからAWStats66_Jpn.tar.gzをDownloadしてくる。

Jcodeのインストール

事前準備として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

AWStatsのインストール

$ 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=/usr/local/apache2/cgi-bin/awstats/awstats.conf -update > $LOG

解析を実行するとawstats052008.txtというファイルが月ごとにできる
これは2008/5のファイル

また、一度解析が終了したらそのファイルなかから、新しい日付だけ解析し ADDしてくようだ
よって、logが分割している場合は

ALOG=/var/log/apache2/access_log
ALOG1=/var/log/apache2/access_log.1

(vine5から、logファイルのサフィックスが「.1」のような数字でなく
「access_log-20090920」のような日付数字になったので以下のように変更
ALOG1=`ls /var/log/apache2/access_log-* | sort -r | sed -n '1p' -`
                                                    ^^^^^^^^^^^1行目を取り出す
ただしこのままだと日付ファイルが存在しなとエラーなので注意すること)

ALOGSUM=/var/log/apache2/access_log.sum

cat $ALOG1 > $ALOGSUM
cat $ALOG >> $ALOGSUM

$UTF8DECODE < $ALOGSUM > $UTF8LOG

のように一つ前のlogとをADDして解析すればよい。 これはこのプログラムとlogロケートの間に蓄えられたlogを無視しなようにするため

30 3 * * * /usr/local/apache2/cgi-bin/awstats/awstats.sh

参考ページ

http://vine.1-max.net/apache-AWStats.html


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-10-02 (金) 16:04:19 (3212d)