AWStatsは、Apacheのアクセスログからさまざまな統計情報を解析し、グラフィカルな解析結果をレポート出力するツールである。ここではソースファイルでのインストール&設定を行う方法を紹介する。
AWStatsの日本語版は、Jcode.pmを使用して日本語関係の処理を行っている。インストールされていない場合はソースを入手して、次のようにインストールしておく。
# cd /usr/local/src
# tar zxvf Jcode-0.87.tar.gz
# cd Jcode-0.87
# perl Makefile.PL
# make
# make install
AWStatsには日本語版が存在するので、それをインストールすることにした。
しかし、AWStats 6.5 日本語版はutf8を使っているため、設定ファイルの編集などをLinux上で行う場合、注意が必要である。私はFedora Coreを使う際、ロケールをutf8からEUC-JPに変更しているため、Linux上でutf8を使っているファイルを開くと文字化けしてしまう。
よって、ソースファイルの解凍や設定ファイルの編集はWindows上で行い、編集後のファイルをLinuxサーバに配置することにした。WindowsマシンでAWStats日本語サイトから最新版をダウンロードしてデスクトップなどに配置し、Lhaca完全版などで解凍する。
解凍したファイルをWWWサーバ上に配置する前に、設定ファイルを編集する。編集にはUTF8で作成されたファイルを読み書きできるテキストエディタ(秀丸やEmEditorなど)が必要である。
設定ファイルのサンプルとして「wwwroot\cgi-bin\awstats.model_jp.conf」というファイルがあるため、これをコピーして使用する。同一フォルダにawstats.confという名前でコピーし、そのファイルをエディタで開いて次のように編集する。
LogFile="/usr/local/apache2/logs/access_log.utf8" SiteDomain="rina.jpn.ph" DNSLookup=1 DirData="/www/wwwroot" DirCgi="/cgi-bin" DirIcons="/icon" Lang="jp"とりあえずこれだけのパラメータを設定した。
設定ファイルには各パラメータの説明が日本語で詳しく載っているため、よく読めば分かるだろう。
設定ファイルを編集し、保存したら、FFFTPなどのFTPソフトを使ってファイルを配置する。
配置するファイルはDirDataに設定したディレクトリとDirCgiに設定したディレクトリにそれぞれ配置しなければならないため、注意する。
上記のように設定した場合、DirDataに指定した/www/wwwrootディレクトリに次のファイル(フォルダ)を転送する。
- AWStats60_Jpn\wwwroot\icon(フォルダごと)
- AWStats60_Jpn\wwwroot\css(フォルダごと)
次に、DirCgiに指定した/cgi-binディレクトリに次のファイル(フォルダ)を転送する。
- AWStats60_Jpn\wwwroot\cgi-bin\lang(フォルダごと)
- AWStats60_Jpn\wwwroot\cgi-bin\lib(フォルダごと)
- AWStats60_Jpn\wwwroot\cgi-bin\plugins(フォルダごと)
- AWStats60_Jpn\wwwroot\cgi-bin\awredir.pl
- AWStats60_Jpn\wwwroot\cgi-bin\awstats.conf
- AWStats60_Jpn\wwwroot\cgi-bin\awstats.pl
- AWStats60_Jpn\wwwroot\cgi-bin\utf8_decode.pl
転送後、cgi-bin内に配置したperlスクリプト(拡張子が.plのファイル)に対して実行権(755)を付ける。
AWStatsを使う場合、Apacheのログファイル形式はcombindにしたほうが良い。Apacheの設定ファイルhttpd.confを開き、次のように編集する。
CustomLog logs/access_log combined 編集したら、Apacheを停止して古いログファイルを削除後、Apacheを起動する。
ログレポートの作成手順は、次のとおりである。
- Apacheのログファイルを日本語に変換する
- 日本語変換されたログファイルを使ってデータベースファイルを生成する
- 作成したデータベースファイルを使ってログレポートを生成する
- ログレポートを確認する
5-1 Apacheのログファイルを日本語に変換する
Apacheのログファイルをそのまま使ってログレポートを生成すると、日本語が全て化けてしまうため、次のコマンドを実行して、日本語変換したログファイルを作成する。
# /www/cgi-bin/utf8_decode.pl < /usr/local/apache2/logs/access_log > /usr/local/apache2/logs/access_log.utf8 ※各ファイルのパスは、それぞれの環境に合わせる
5-2 日本語変換されたログファイルを使ってデータベースファイルを生成する
5-1で作成したaccess_log.utf8を使って、データベースファイルに書き出す。コマンドは次のとおり。
# perl /www/cgi-bin/awstats.pl -config=awstats.conf -update 5-3 作成したデータベースファイルを使ってログレポートを生成する
5-2で作成したデータベースファイルを使って、ログレポートを生成する。コマンドは次のとおり。
# perl /www/cgi-bin/awstats.pl -config=awstats.conf -output -staticlinks > /www/wwwroot/awstats.html
- レポートファイル名(5-4で使用)を指定する
5-4 ログレポートを確認する
5-2で作成したレポートファイルを、ブラウザから確認する。
http://rina.jpn.ph/cgi-bin/awstats.pl
http://rina.jpn.ph/awstats.html より詳しく見たいなら、次のように指定する。
http://rina.jpn.ph/cgi-bin/awstats.pl
ログレポートを手動で生成するのは面倒なので、定期的に生成することを考える。
定期的・・・といえばcronを使って作成処理を実行させると思いつくが、AWStats 6.0 日本語版にはcronのサンプルファイルが用意されているので、それを利用する。cronのサンプルファイルは、Windows上で解凍したファイルのルートにawstats.cronという名前で用意されている。設定ファイルと同様、utf8で作成されているため、Windows上で修正を行った後、サーバに配置する。
いままでの設定のとおりに構築してきた場合、cronファイルは次のようになる。
#! /usr/bin/perl # 完全日本語版AWStats用サンプルcronファイル # # ファイルパス等は自分の環境に合わせて書き直して下さい。 # httpのログファイルをデコードした上で一時ディレクトリに格納します。 # access_log.utf8は一時的にデコードしたログを保存するファイルの名前です。 system("/www/cgi-bin/utf8_decode.pl < /usr/local/apache2/logs/access_log > /usr/local/apache2/logs/access_log.utf8"); # awstats.plが切り詰めないオリジナルのログを切り詰めます。 open(LOG,"+</usr/local/apache2/logs/access_log"); truncate(LOG,0); close(LOG); # Ver.5.0から、更新処理を別途走らせる必要ができたらしい.... system("/www/cgi-bin/awstats.pl -config=awstats.conf -update > /dev/null"); # awstats.plを走らせ、htmlファイルを出力します。 # 必須ではありませんが、awstats.plを直接参照させるよりも、htmlに出力して表示す # る方が、良好なパフォーマンスが得られます。 system("/www/cgi-bin/awstats.pl -config=awstats.conf -output > /www/wwwroot/awstats.html"); # アクセス可能になるように出力したhtmlファイルの権限を変更 system("chgrp nobody /www/wwwroot/awstats.html"); system("chown nobody /www/wwwroot/awstats.html");編集したawstats.cronをサーバに転送し、実行権(700)を付ける。あとは、cronに実行させるだけである。毎時間実行したいなら/etc/cron.hourlyの中に、毎日(午前4時)更新したいなら/etc/cron.dailyの中にawstats.cronを配置する。
また、awstats.cronの内容を見て分かるとおり、ログファイルの切り詰めを行っている。これを行うためにはAWStatsの設定ファイルを次のように修正する必要がある。
PurgeLogFile=1 修正後、awstats.cronが正常に動作するかを確認する。
# /etc/cron.hourly/awstats.cron 上記コマンドによって、レポートファイルが更新されたはずなので、ブラウザから確認する。更新されていれば、定期的にも更新だれるだろう。