前に書いたものを少し修正。過去のログをすべてHTMLにせずに、CGIを使う方法にした。
AWStatsをFreeBSDで動かすのawstats695t_jpn.zipを使用。
| AWStatsをインストールするディレクトリ | /usr/local/awstats |
| データベースファイルを保存するディレクトリ(DirData) | /usr/local/awstats/data |
| 解析結果を出力するディレクトリ | /var/www/awstats |
インストール
awstats695t_jpn.zipをダウンロードして展開する。
# cd /usr/local/ # mkdir awstats # cd awstats # wget http://hobbit.ddo.jp/html/awstats695t_jpn.zip # unzip awstats695t_jpn.zip # rm awstats695t_jpn.zip
過去ログを保存するディレクトリの作成。
# mkdir data
awstats.plの改行コードの変更と実行権限の付加。
# cd /usr/local/awstats/wwwroot/cgi-bin # mv awstats.pl awstats.pl.orig # tr -d '\r' < awstats.pl.orig > awstats.pl # chmod u+x awstats.pl
Perlのパスの変更。
# diff -uw awstats.pl.orig awstats.pl --- awstats.pl.orig 2009-11-27 15:56:27.000000000 +0900 +++ awstats.pl 2010-10-17 00:32:09.000000000 +0900 @@ -1,4 +1,3 @@ -#!c:/perl/bin/perl #!/usr/bin/perl #------------------------------------------------------------------------------ # Free realtime web server logfile analyzer to show advanced web statistics.
Perlパッケージの追加。
HTML::Entities::Numbered(awstats.plで必要)とUnicode::Japanese(utf8_decode.plで必要)をCPANでインストール。
# perl -MCPAN -e shell cpan> install HTML::Entities::Numbered cpan> install Unicode::Japanese
設定
awstats.model.confをコピーして設定する。
# cd /usr/local/awstats/wwwroot/cgi-bin # cp awstats.model.conf awstats.parlia.net.conf # vi awstats.parlia.net.conf LogFile="/tmp/awstats_access.parlia.net.log" SiteDomain="www.parlia.net" HostAliases="REGEX[parlia\.net$]" DirData="/usr/local/awstats/data" DirCgi="." DirIcons="./icon" DirJs="./js" DirCss="./css" Lang="jp" StyleSheet="./css/awstats_bw.css"
解析結果を出力するディレクトリを作成して必要なファイルをコピーする。
# mkdir /var/www/awstats # cd /usr/local/awstats/wwwroot # cp -r css icon js /var/www/awstats/ # cd cgi-bin/ # cp -r awstats.pl lang lib plugins /var/www/awstats/
データベースファイルの更新
ログをすべて連結して/tmp/access.logに書き込む。
# ls /var/log/apache2/access.log* /var/log/apache2/access.log /var/log/apache2/access.log.33.gz /var/log/apache2/access.log.1 /var/log/apache2/access.log.34.gz /var/log/apache2/access.log.10.gz /var/log/apache2/access.log.35.gz /var/log/apache2/access.log.11.gz /var/log/apache2/access.log.36.gz /var/log/apache2/access.log.12.gz /var/log/apache2/access.log.37.gz /var/log/apache2/access.log.13.gz /var/log/apache2/access.log.38.gz /var/log/apache2/access.log.14.gz /var/log/apache2/access.log.39.gz /var/log/apache2/access.log.15.gz /var/log/apache2/access.log.4.gz /var/log/apache2/access.log.16.gz /var/log/apache2/access.log.40.gz /var/log/apache2/access.log.17.gz /var/log/apache2/access.log.41.gz /var/log/apache2/access.log.18.gz /var/log/apache2/access.log.42.gz /var/log/apache2/access.log.19.gz /var/log/apache2/access.log.43.gz /var/log/apache2/access.log.2.gz /var/log/apache2/access.log.44.gz /var/log/apache2/access.log.20.gz /var/log/apache2/access.log.45.gz /var/log/apache2/access.log.21.gz /var/log/apache2/access.log.46.gz /var/log/apache2/access.log.22.gz /var/log/apache2/access.log.47.gz /var/log/apache2/access.log.23.gz /var/log/apache2/access.log.48.gz /var/log/apache2/access.log.24.gz /var/log/apache2/access.log.49.gz /var/log/apache2/access.log.25.gz /var/log/apache2/access.log.5.gz /var/log/apache2/access.log.26.gz /var/log/apache2/access.log.50.gz /var/log/apache2/access.log.27.gz /var/log/apache2/access.log.51.gz /var/log/apache2/access.log.28.gz /var/log/apache2/access.log.52.gz /var/log/apache2/access.log.29.gz /var/log/apache2/access.log.6.gz /var/log/apache2/access.log.3.gz /var/log/apache2/access.log.7.gz /var/log/apache2/access.log.30.gz /var/log/apache2/access.log.8.gz /var/log/apache2/access.log.31.gz /var/log/apache2/access.log.9.gz /var/log/apache2/access.log.32.gz # echo -n > /tmp/access.log # for log in `ls -tr /var/log/apache2/access.log.*.gz` > do > gzip -d < $log >> /tmp/access.log > done # cat /var/log/apache2/access.log.1 >> /tmp/access.log
utf8_decode.plでログの検索語をUTF-8にする。awstats_host.plにホスト名を書き込んでから実行する。
# cd /usr/local/awstats/tools/ # echo '$Myhost = "parlia\.net";' > awstats_host.pl # perl utf8_decode.pl < /tmp/access.log > /tmp/awstats_access.parlia.net.log
データベースファイルの更新。
# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=parlia.net -update
解析結果の表示
スクリプト作成。
# cat awstats_cron.sh
#!/bin/bash
AWSTATSDIR=/usr/local/awstats
awstats_update() {
SITE=$1
HTMLDIR=$2
APACHELOG=$3
TEMPLOG=$4
cd $AWSTATSDIR/tools
echo "\$Myhost = \"$SITE\";" | sed 's/\./\\./g' > awstats_host.pl
perl utf8_decode.pl < $APACHELOG.1 > $TEMPLOG
perl utf8_decode.pl < $APACHELOG >> $TEMPLOG
$AWSTATSDIR/wwwroot/cgi-bin/awstats.pl -config=$SITE -update
$AWSTATSDIR/wwwroot/cgi-bin/awstats.pl -config=$SITE -output > $HTMLDIR/index_$SITE.html
}
awstats_update parlia.net \
/var/www/awstats \
/var/log/apache2/access.log \
/tmp/awstats_access.parlia.net.log
実行
# ./awstats_cron.sh
cronに登録。
# vi /etc/crontab 1 0 * * * root /root/awstats_cron.sh > /dev/null
トラックバックURL