アクセスカウンタのようにページ内に埋め込み、ログ収集を行なうものではなく、直接 Apache のアクセスログから、解析します。HTML 埋め込み型は、対象ページ数が増えすぎると、管理が大変です。そのため、もし Apache のログを直接閲覧できる環境であれば、直接ログ解析するタイプを利用した方が便利です。
なお、HTML 埋め込み型のアクセス解析には、下記スクリプト等があります。
公式ミラーサイトのダウンロードページ 上記サイトから Analog をダウンロードします。公式サイトは重いので、ミラーサイトを利用した方がいいです。今回はソースからビルドするため、analog-6.0.tar.gz をダウンロードしました。
$ tar zxvf analog-6.0.tar.gz
必要な設定を、ヘッダファイル内に行ないます。
$ vi src/anlghead.h
#define LANGDIR "/usr/local/var/analog/lang/" #define CONFIGDIR "/usr/local/etc/"
make を実行します。
$ make
コンフィグファイルの位置などは、ビルド時のヘッダファイルの内容により、決まっています。それに合わせて配置します。今回は、下記の内容を配置しました。※make install はありません
/usr/local/bin/analog /usr/local/etc/analog.cfg /usr/local/var/analog/lang
lang はディレクトリごと移動します。
analog.cfg を編集することで、各種設定が変更できます。これらの内容は、ビルド時のヘッダファイルでも可能ですが、ここで行ないます。
LOGFILE /etc/httpd/logs/access_log # 解析対象ログ OUTFILE /home/httpd/status/analog_report.html # 出力先ファイル LANGUAGE JAPANESE # 出力言語
コマンドラインから、analog コマンドを実行します。あらかじめ指定した OUTFILE の場所に出力します。
# analog
(未了)lang ディレクトリから jpeform.html を HTTP アクセス可能な位置へ移動します。また、実行用スクリプトである anlgform.pl も、cgi 実行可能な場所に移動します。画像ディレクトリについても正しく設定しなくてはなりません。
各レポート生成に関して Warning が出力される場合、そのレポートに関する情報が、もともと対象ログに欠けている可能性があります。
つまり、ドメイン名別の集計をしたい場合に、httpd.conf で HostnameLookups が On になっていなければ、集計のしようがないというわけです。
そのままでは、検索語の日本語が URLエンコードされてしまいます。そこで、出力されたレポートファイルに対して、URLデコードを実施する必要があります。Perlなどで自作しても良いですが、フリーで公開されているスクリプトを利用しました。
ベータ版その2を使います。/usr/local/bin に置き、実行権限を与えます。Perlへのパスが正しいか確認して下さい。
# cp analogurldecode /usr/local/bin # chmod 0755 analogurldecode $ analogurldecode input.html > output.html