Hagex-day info

紅茶とお菓子について書いているほっこりブログです

久々のFedora



Apacheアクセスログ解析をココを参照にしながらやってみた。以下の内容は同じですが、個人的なメモということで。

使うソフトはWebalizerとういうものだ。現在配布されているRPM版では日本語表示がされていないので、ソース版RMP「SRPM」というを使って日本語化してRPMパッケージを作らなければならないようだ。
とりあえずWebalizerSRPMパッケージダウンロード
# 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

次に、WebalizerSRPMパッケージから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

で、ダウンロードしたパッケージを削除。続いてWebalizerSRPMパッケージから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 の設定ファイルのの部分を「Allow from All」を追加して、「#Allow from 127.0.0.1」とコメントアウト。
その後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
としてゴミを消す