ログ解析ソフトAWStatsのインストール手順
[環境] MacOSX Server 10.4.8 Mac min(PPC)
[導入手順] 以下のとおり
- Apacheの設定ファイル変更
- AWStatsのダウンロード
- CGIファイルのアップロード
- Perlのディレクトリの確認
- iconファイルのアップロード
- .confファイルの設定
- Jcode.pmのインストール
- .plの実行
- アクセス制限
- cronの設定
1.Apacheの設定ファイル変更
Apacheのhttpd.confを変更(/etc/httpd/httpd.conf)。バーチャルホストで運用している場合は、/sitesの”000xany” のファイルを変更。CustomLogをcommonからcombinedへ。nanoかサーバー管理ツールを使って書き換え。実際のログ設定は↓ CustomLog '|/usr/sbin/rotatelogs "/var/log/httpd/access_log" 2678400' "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
2. AWStatsのダウンロード
AWStatsから最新版をDL(2007/03/05: awstats-6.6.tar.gz)。
3. CGIファイルのアップロード
tarファイルを解凍後、wwwroot/cgi-bin/以下をCGIディレクトリにアップロード(デフォルト: /Library/WebServer/CGI-Executables/)。今回は、/awstatsのディレクトリを作成。そこに以下をアップ。plのパーミッションに注意。
- awredir.pl
- awstats.model.conf
- awstats.pl
- lang/
- lib/
- plugins/
4. Perlディレクトリの確認
awstats.plの先頭にある#!/usr/bin/perlの確認。パスが違う場合は、それぞれのパスに書き換え。MacOSXは問題なし。
5. iconファイルのアップロード
wwwroot/iconを公開サーバーのディレクトリにアップロード(デフォルト: /Library/WebServer/Documents/)。これが鬼門だった鴨。Virtual Hostでいくつかサイトを公開している。で、それぞれの公開ディレクトリにアップロードするのも何かしっくりこず、CGIディレクトリにアップして.confファイルのDirIconsを(後述)を書き換えてみたが、うまくいかず。Oops….結局、各ディレクトリにアップするハメに:’-)
このiconファイルもCGIファイル同様、/直下に”awstats”フォルダを作成してそこにサクっとアップ。
6. .confファイルの設定
awstats.model.confを環境にあわせて変更。”model”を”サーバー名”に。
$mv awstats.model.conf awstats.www.thinksell.net.conf
バーチャルホストで運用していて、解析したいホストがあるならそのホスト分を用意。続いてパラメータ設定。 最低限の設定は、
- LogFile
- DirIcons
- SiteDomain
- DirData
$nano awstats.www.thinksell.net.conf
- LogFile=”/var/log/httpd/access_log”(VirtualHostの場合access_log.10桁の数字)
- DirIcons=”/awstats/icon”(絶対パスではなく公開されたディレクトリからのパス)
- SiteDomain=”www.thinksell.net”
- DirData=”DirData=”./data”(分析結果を書き出すディレクトリ “.”のままだとcgi-binファイルと同じディレクトリに書き込まれる)
7. Jcode.pmのインストール
UTF-8なのでEUCの検索キーワードやフレーズは文字化けして全滅。CPAN Jcode.pmをDLしてインストールで解決。すごく便利、深謝 > danさん
$ perl Makefile.PL $ make
make install
インストール完了。
8. .plの実行
いよいよawstats.plを実行したいところだけど、その前に少し編集。awstats.plファイルにJcodeに変換するように記述。以下のとおり。
——Search Keyword Jcode——
Jcode使用の宣言を追加(#!/usr/bin/perlより後、use *;とある最後に追加) use Jcode;
DecodeEncodedString関数の書き換え。
[original awstats.pl] sub DecodeEncodedString { my $stringtodecode=shift; $stringtodecode =~ tr/+/ /s; $stringtodecode =~ s/%([A-F0-9][A-F0-9])/pack("C", hex($1))/ieg; return $stringtodecode; }
[change awstats.pl] sub DecodeEncodedString { my $stringtodecode=shift; $stringtodecode =~ tr/+/ /s; $stringtodecode =~ s/%([A-F0-9][A-F0-9])/pack("C", hex($1))/ieg; + Jcode::convert(\$stringtodecode, "utf8"); return $stringtodecode; }
——Date——
awstats.pl 8845行目を書き換える
[original awstats.pl] print ($MonthRequired eq 'all'?"$Message[6] $YearRequired":"$Message[5] ".$MonthNumLib{$MonthRequired}." $YearRequired");
[change awstats.pl] print ($MonthRequired eq 'all'?"$YearRequired $Message[6]":"$YearRequired $Message[6]".$MonthNumLib{$MonthRequired});
実行
./awstats.pl -config=HOSTNAME -update
HOSTNAMEのところは適時代入。
9. アクセス制限
パブリックからアクセスする必要がなければプライベート空間からだけアクセス可能に変更。awstats.www.thinksell.net.confから以下のパラメーターを検索して書き換え。
AllowAccessFromWebToFollowingIPAddresses="127.0.0.1 192.168.1.1-192.168.1.255"
10. cronの設定
ログ解析をcronからたたく。 */15 * * * * /Library/WebServer/CGI-Executables/awstats/awstats.pl -config=www.thinksell.net -update > /dev/null 2>&1
ブラウザからhttp://HOSTNAME/cgi-bin/awstats.plをたたいて表示できれば吉。
[注意] .plをたたいたとき、次のようなエラーメッセジーがかえってきたらログファイルの形式をうたがってみる。
AWStats did not find any valid log lines that match your LogFormat parameter, in the 50th first non commented lines read of your log. Your log file /private/var/log/httpd/medicalcomicaccesslog must have a bad format or LogFormat parameter setup does not match this format. Your AWStats LogFormat parameter is: … Setup (‘./awstats.www.thinsell.net.conf’ file, web server or permissions) may be wrong. Check config file, permissions and AWStats documentation (in ‘docs’ directory).
この場合、「ログの形式が間違ってるよ」という警告なので”common”から”combined”へ変更しているか確認。ありがちなケースは
AWStats導入前は”common”、導入後”combined”に変更したとき、”common”と”combined”が混在していてAWStatsがうまく解析できない
がある鴨。その場合、
- Apacheを停止
- ログファイルをリネーム
- Apacheを起動
をためしてみる。