#contents
*AWStats [#qe8e9838]
apache のアクセス解析ソフト

AWStatsは、httpdのアクセスログを解析し、視覚的にブラウザで閲覧することが出来る形に整形するPerlのスクリプト

 本家サイト http://awstats.sourceforge.net/~
  2006-04-07現在 最新安定板 ver6.5

 完全日本語版 http://www.bflets.dyndns.org/Tools/AWStatsJpn.html~
  2006-04-07現在 ver6.5

 完全日本語版 http://www.starplatinum.jp/awstats/awstats66/~
  2011-01-20現在 ver6.6

 完全日本語版 http://www.starplatinum.jp/awstats/awstats70/~
  2011-03-28現在 ver7.0

 本家「AWStats」もVer.4.0から正式に日本語に対応したことになってるが、非常にお粗末。~
 より完璧な日本語対応を目指して修正を行ったものを公開しているすばらしい人がいたので、使せていただく。

*事前準備 [#te21962e]
**Jcode.pm のインストール [#s3ec162c]
 オリジナルログ内のURLをデコードするために必要

 参照~
 http://openlab.jp/Jcode/index-j.html~
 http://www.mytools.net/memo/JcodePM.html

 「Jcode-0.xx.tar.gz」をダウンロード~
 http://www.ring.gr.jp/pub/lang/perl/CPAN/modules/by-module/Encode/DANKOGAI/

 インストール
 # tar zxvf Jcode-0.88.tar.gz
 # cd Jcode-0.88
 # perl Makefile.PL; make; make install

 確認
 # perl -MJcode -e'print $Jcode::VERSION'
 0.88

 削除
 # rm -rf Jcode-0.88
 # rm -f Jcode-0.88.tar.gz

**nkfインストール [#p12bb0a8]
 「nkf207.tar.gz」をダウンロード~
 http://sourceforge.jp/projects/nkf/

 インストール
 # yum install nkf

OR

 # tar zxvf nkf207.tar.gz
 # cd nkf207
 # make
 # cp nkf /usr/bin/

 削除
 # rm -rf nkf207
 # rm -f nkf207.tar.gz

**ワームが残すログによるAWStatsのエラー回避 [#q9131e8a]
AWStatsなどでアクセスログを元に統計情報を出力している場合、~
ワームの残すアクセスログが原因でエラーとなり、実行できなくなる場合がある。~
これらの対策として、http.confを編集します。
詳細は[[Apache2アクセスログのカスタマイズ]]を参照。~
画像等のログ排除の設定は不要

*環境確認 [#v4d459b7]
-perlのバージョンが5.8.0以降である
 # perl -v
 This is perl, v5.8.5 built for i386-linux-thread-multi
-perlの場所
 # which perl
 /usr/bin/perl
-WWWサーバのCGIディレクトリのパス~
 本文では /usr/local/apache2/cgi-bin とする
-Apacheのアクセスログのパス~
 本文では /usr/local/apache2/logs/www.hoge.jp-access_log とする
-WWWサーバのルートディレクトリ~
 本文では /home/hoge/public_html とする
-Apacheのログフォーマットがcombinedである
 # vi /usr/local/apache2/conf/httpd.conf
 httpd.conf
 CustomLog /usr/local/apache2/logs/www.hoge.jp-access_log combined

*AWStats 6.5完全日本語版 インストール [#z34653df]
 参考~
 http://www.akenotori.jp/soft/26.html#SEC9~
 http://cyberam.dip.jp/linux_server/log/awstats60_main.html~
 http://honana.com/awstats~

-「AWStats65_Jpn.tar.gz」をダウンロード~
 http://www.bflets.dyndns.org/Tools/AWStatsJpn.html

**インストール [#x67895af]
ディレクトリの作成
 // AWStatsインストールディレクトリ
 # mkdir /usr/local/apache2/cgi-bin/awstats
 // ログディレクトリ
 # mkdir /usr/local/apache2/cgi-bin/awstats/logs
 // データディレクトリ
 # mkdir /usr/local/apache2/cgi-bin/awstats/data
 // イメージファイルディレクトリ
 # mkdir -p /usr/local/apache2/htdocs/images/awstats

インストール
 # tar zxvf AWStats65_Jpn.tar.gz
 # cd AWStats65_Jpn
 # cd /usr/local/src/AWStats65_Jpn/wwwroot/
 # cp -rf cgi-bin/* /usr/local/apache2/cgi-bin/awstats/
 # cp -rf icon/* /usr/local/apache2/htdocs/images/awstats/

**設定 [#y378b947]
 # cd /usr/local/apache2/cgi-bin/awstats/
 # nkf -ed awstats.model_jp.conf > awstats.www.hoge.jp.conf
 # vi awstats.www.hoge.jp.conf
awstats.www.hoge.jp.conf
 LogFile="/usr/local/apache2/cgi-bin/awstats/logs/www.hoge.jp-access_log.utf8"
 SiteDomain="www.hoge.jp"
 HostAliases="localhost 127.0.0.1 REGEX[hoge\.jp$]"
 DNSLookup=1
 DirData="/usr/local/apache2/cgi-bin/awstats/data"
 DirCgi="/cgi-bin/awstats"
 DirIcons="/images/awstats"
 DetailedReportsOnNewWindows=0
 SkipHosts="REGEX[^192\.168\.0\.]"  # 特定のホストを除く
 SkipFiles="REGEX[^\/program.php]"   # 特定のファイルを除く

**手動で実行 [#offf1c1f]
ログファイル作成
 # /usr/local/apache2/cgi-bin/awstats/utf8_decode.pl  </usr/local/apache2/logs/www.hoge.jp-access_log >  /usr/local/apache2/cgi-bin/awstats/logs/www.hoge.jp-access_log.utf8

アクセス解析実行
 # cd /usr/local/apache2/cgi-bin/awstats
 # ./awstats.pl -config=www.hoge.jp -update
正常に終了していれば、処理結果が以下のような形で表示されます。
 Lines in file: 225730
 Found 5 dropped records,
 Found 124 corrupted records,
 Found 0 old records,
 Found 225601 new records.

画像を表示できるよう httpd.conf に下記を追記~
 # vi /usr/local/apache2/conf/httpd.conf
 Alias /images/awstats/ "/usr/local/apache2/htdocs/images/awstats/"

ブラウザでアクセス解析ファイルにアクセスしてみる
 http://www.hoge.jp/awstats/

*定期的に実行 [#nec1d314]
 # cd /usr/local/src/AWStats65_Jpn/
 # nkf -ed awstats.cron > /usr/local/apache2/cgi-bin/awstats/awstats.cron

awstats.cron
 #! /usr/bin/perl
 
 # 完全日本語版AWStats用サンプルcronファイル
 #
 # ファイルパス等は自分の環境に合わせて書き直して下さい。
 
 # httpのログファイルをデコードした上で一時ディレクトリに格納します。
 # access_log.utf8は一時的にデコードしたログを保存するファイルの名前です。
 
 system("/usr/local/apache2/cgi-bin/awstats/utf8_decode.pl <  /usr/local/apache2/logs/www.hoge.jp-access_log >  /usr/local/apache2/cgi-bin/awstats/logs/www.hoge.jp-access_log.utf8");
 
 # ログファイルが複数の場合、ファイル数の分行う
 #system("/usr/local/apache2/cgi-bin/awstats/utf8_decode.pl < /usr/local/apache2/logs/www.hoge.jp-ssl_access_log >     #/usr/local/apache2/cgi-bin/awstats/logs/www.hoge.jp-access_log.utf8");
 
 # awstats.plが切り詰めないオリジナルのログを切り詰めます。
 #open(LOG,"+</usr/local/apache2/logs/www.hoge.jp-access_log");
 #truncate(LOG,0);
 #close(LOG);
 
 #open(LOG,"+</usr/local/apache2/logs/www.hoge.jp-ssl_access_log");
 #truncate(LOG,0);
 #close(LOG);
 
 # Ver.5.0から、更新処理を別途走らせる必要ができたらしい....
 system("/usr/local/apache2/cgi-bin/awstats/awstats.pl -config=www.hoge.jp -update > /dev/null");
 
 # awstats.plを走らせ、htmlファイルを出力します。
 # 必須ではありませんが、awstats.plを直接参照させるよりも、htmlに出力して表示す
 # る方が、良好なパフォーマンスが得られます。
 #system("/usr/local/apache2/cgi-bin/awstats/awstats.pl -config=www.hoge.jp -output -staticlink > /home/hoge/public_html/awstats/index.html");
 
 # アクセス可能になるように出力したhtmlファイルの権限を変更
 #system("chgrp hoge /home/hoge/public_html/awstats/index.html");
 #system("chown hoge /home/hoge/public_html/awstats/index.html");

パーミッションを変更
 # chmod 700 /usr/local/apache2/cgi-bin/awstats/awstats.cron

cron でこのスクリプトを自動実行
(例では30分毎に実行)
 # crontab -e
 30 * * * * perl /usr/local/apache2/cgi-bin/awstats/awstats.cron

*AWStatsとlogrotateの問題点解決 [#w33fc0ea]
Apacheのaccess_logをlogrotateによりローテーションしている場合に問題が発生する。

例えば4時10分にaccess_logの ログローテーションが行われるとすると~
「定期的に実行する」で紹介したスクリプトは30分おきに実行されるので~
4時に実行されたとして次に実行されるのは4時30分であるため、~
4時から4時10分の間にaccess_logに記録されたログはawstatsの統計情報に反映されない。

この問題を解決するにはaccess_logをローテーションする直前にawstats.plにより統計情報をアップデートします。

/etc/logrotate.d/apacheを編集します。
 # vi /etc/logrotate.d/apache
下記をapache再起動の前に追加
 prerotate
 perl /usr/local/apache2/cgi-bin/awstats/awstats.cron
 endscript

 "/usr/local/apache2/logs/*_log"
 {
   rotate 4
   compress
   weekly
   sharedscripts
   prerotate
   perl /usr/local/apache2/cgi-bin/awstats/awstats.cron
   endscript
   postrotate
   /usr/local/apache2/bin/apachectl restart
   endscript
 }

*静的HTML出力 [#f2b9dccf]
cgiが重いのであればHTML出力。~
※現在月の分しかHTMLは作成されない。過去の月の閲覧はcgi。~
※公開したくない場合は対策が必要。(cgiは設定でIPなどの閲覧制限をかけられる)~

手動実行
 # ./awstats.pl -config=www.hoge.jp -output -staticlink > /home/hoge/public_html/awstats/index.html

クローンで動かす場合はawstats.cronに追記
 # awstats.plを走らせ、htmlファイルを出力します。
 # 必須ではありませんが、awstats.plを直接参照させるよりも、htmlに出力して表示す
 # る方が、良好なパフォーマンスが得られます。
 system("/usr/local/apache2/cgi-bin/awstats/awstats.pl -config=www.hoge.jp -output -staticlink > /home/hoge/public_html/awstats/index.html");
 
 # アクセス可能になるように出力したhtmlファイルの権限を変更
 system("chgrp hoge /home/hoge/public_html/awstats/index.html");
 system("chown hoge /home/hoge/public_html/awstats/index.html");

#exlink

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS