Apacheアクセスログ解析をココを参照にしながらやってみた。以下の内容は同じですが、個人的なメモということで。
使うソフトはWebalizerとういうものだ。現在配布されているRPM版では日本語表示がされていないので、ソース版RMP「SRPM」というを使って日本語化してRPMパッケージを作らなければならないようだ。
とりあえずWebalizerのSRPMパッケージダウンロード
# wget http://ftp.riken.go.jp/pub/Linux/fedora/core/3/i386/os/SRPMS/webalizer-2.01_10-25.src.rpm
--12:54:49-- http://ftp.riken.go.jp/pub/Linux/fedora/core/3/i386/os/SRPMS/webalizer-2.01_10-25.src.rpm
と無事にダウンロード完了。次に日本語化オプションを設定する。WebalizerのSPECファイル、usr/src/redhat/SPECS/webalizer.spec を編集する。
%configure --enable-dns --with-dblib=/lib
↓
%configure --enable-dns --with-dblib=/lib --with-language=japanese
次に、WebalizerのSRPMパッケージからRPMパッケージを作成するのに必要なgd-devel、libpng-develをインストールするが…
# yum -y install gd-devel libpng-devel
とタイプするが…途中で
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "libpng" records from Name index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->sync: DB_RUNRECOVERY: Fatal error, run database recovery
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->cursor: DB_RUNRECOVERY: Fatal error, run database recovery
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "libpng.so.3" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "libpng.so.3.1.2.8" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "libpng12.so.0" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "libpng12.so.0.1.2.8" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "libpng-1.2.8" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "CHANGES" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "README" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "TODO" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "example.c" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "libpng.txt" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->get: DB_RUNRECOVERY: Fatal error, run database recovery
error: error(-30978) getting "png.5.gz" records from Basenames index
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->sync: DB_RUNRECOVERY: Fatal error, run database recovery
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->open: DB_RUNRECOVERY: Fatal error, run database recovery
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->close: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Group index using db3 - (-30978)
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->open: DB_RUNRECOVERY: Fatal error, run database recovery
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->close: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Requirename index using db3 - (-30978)
rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30978) from db->open: DB_RUNRECOVERY: Fatal error, run database recovery
(以下略)
というエラーが延々続く。調べてみるとアラートの通りRPMDBがトラブルっているようで、以下のおまじないを唱えると治るようだ。
# rpmdb --rebuilddb
上のコマンドをタイプしてみるても何も反応がない(笑)。上手くフィックスしたのか? 修正されたことを願いつつ、同じようにタイプすると…
# yum -y install gd-devel libpng-devel
Gathering header information file(s) from server(s)
Server: Fedora Core 2 - i386 - Base
Server: Fedora Core 2 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Resolving dependencies
.Dependencies resolved
I will do the following:
[install: libpng-devel 2:1.2.8-1.fc2.i386]
[install: gd-devel 2.0.21-5.20.1.i386]
I will install/upgrade these to satisfy the dependencies:
[deps: libpng 2:1.2.8-1.fc2.i386]
Downloading Packages
Running test transaction:
Test transaction complete, Success!
libpng 100 % done 1/4
libpng-devel 100 % done 2/4
gd-devel 100 % done 3/4
Completing update for libpng - 4/4
Installed: libpng-devel 2:1.2.8-1.fc2.i386 gd-devel 2.0.21-5.20.1.i386
Dep Installed: libpng 2:1.2.8-1.fc2.i386
Transaction(s) Complete
と無事に完了。ほ。
# yum clean packages
Gathering header information file(s) from server(s)
Server: Fedora Core 2 - i386 - Base
Server: Fedora Core 2 - i386 - Released Updates
Finding updated packages
Cleaning packages
で、ダウンロードしたパッケージを削除。続いてWebalizerのSRPMパッケージからRPMパッケージを作成するために
# rpmbuild -ba --clean /usr/src/redhat/SPECS/webalizer.spec
次にインストール
# rpm -ivh /usr/src/redhat/RPMS/i386/webalizer-2.01_10-25.i386.rpm
Preparing... ############################# [100%]
1:webalizer ############################# [100%]
SRPMからRPMへのビルドにより作成されたファイルを削除する。
# rm -f webalizer-2.01_10-25.src.rpm
# rm -f /usr/src/redhat/SRPMS/*
# rm -f /usr/src/redhat/SPECS/*
# rm -f /usr/src/redhat/SOURCES/*
# rm -f /usr/src/redhat/RPMS/i386/*
アクセスログ日本語コード変換スクリプト作成する。その前に日本語コード変換Perlモジュール(perl-Jcode)インストール。
# cpan2rpm --install Jcode
アクセスログ日本語コード変換スクリプト作成をする
# vi convertlog.pl
とタイプして、以下のスクリプトを打ち込む
#!/usr/bin/perl
use Jcode;
open (IN ,$ARGV[0]);
while (
$_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
Jcode::convert(\$_,euc);
print $_;
}
close (IN);
exit;
そして権限を設定
# chmod 700 convertlog.pl
次にWebalizer設定を設定するために、
# vi /etc/webalizer.conf
で、webalizer設定ファイルを編集する。
LogFile /var/log/httpd/access_log
↓
LogFile /var/log/httpd/jaccess_log
#HostName localhost
↓
HostName fedorasrv.com
#HTMLHead
HTMLHead
#ReallyQuiet no
↓
ReallyQuiet yes
#CountryGraph yes
↓
CountryGraph no
と変更。
この解析は外部からの参照できるように /etc/httpd/conf.d/webalizer.conf の設定ファイルの
その後HTTPを再読み込みするために
# /etc/init.d/httpd reload
とタイプ。Webalizer実行スクリプトを作成するために
# vi webalizer.sh
とファイルを作って、以下のスクリプトを打ち込む
#!/bin/sh
# 文字コード変換前アクセスログ
BLOG=/var/log/httpd/access_log
# 文字コード変換後アクセスログ
ALOG=/var/log/httpd/jaccess_log
# 文字コード変換
/root/convertlog.pl $BLOG > $ALOG
# webalizer実行
webalizer
そして実行権限を「~]# chmod 700 webalizer.sh」とする。
いよいよ終了間際。さっそくWebalizer実行するでぇとおまって
# ./webalizer.sh
./webalizer.sh: line 10: /root/convertlog.pl: そのようなファイルやディレクトリはありません
とアラートがでてうまくいかず。あれ…? あ、convertlog.plとwebalizer.shはルート以外のホームディレクトリで作業して、そのまま保存していたから駄目だったようだ。webalizer.shとconvertlog.plを/root に移して再度
# ./webalizer.sh
と打つ。特にエラーがない。念のためもう一度HTTPをリロードさせてWebalizerをみると無事に表示されている。あとは自動実行させるために
# crontab -e
00 00 * * * /root/webalizer.sh
として、毎日深夜0時実行。最後に
# rm -f /etc/cron.daily/00webalizer
としてゴミを消す