「Webalizer」の設定

標準のままでは「Webalizer」は日本語に対応していません。
そこで、ここでは「Webalizer」の日本語への対応方法を説明します。
日本語に対応させるためにはソースを入手する必要があります。

「Webalizer」のインストール

ライブラリのインストール

「Webalizer」のSRPMパッケージからRPMパッケージを作成しますが、gd-develとlibpng-develが必要なので、インストールします。

[root@CentOS ~]# yum -y install gd-devel libpng-devel <= gd-devel、libpng-develのインストール

「Webalizer」のインストール

ソースのダウンロードにyumdownloaderコマンドを利用していますが、 導入方法についてはこちらを参照して下さい。

[root@CentOS ~]# yumdownloader --source webalizer <= 「Webalizer」のソースをダウンロード
[root@CentOS ~]# rpm -ivh webalizer-2.01_10-30.1.src.rpm <= ソースの展開

「Webalizer」のSPECファイルを編集します。

[root@CentOS ~]# vi /usr/src/redhat/SPECS/webalizer.spec <= 設定ファイルの編集
Release: 30.1
↓
Release: 30.1.ja <= 変更

%configure --enable-dns --with-dblib=/lib
↓
%configure --enable-dns --with-dblib=/lib --with-language=japanese <= 日本語化オプションを追加

「Webalizer」のRPMパッケージを作成し、インストールします。

[root@CentOS ~]# rpmbuild -bb --clean /usr/src/redhat/SPECS/webalizer.spec <= SRPMパッケージからRPMパッケージを作成

[root@CentOS ~]# rpm -ivh /usr/src/redhat/RPMS/i386/webalizer-2.01_10-30.1.ja.i386.rpm <= 「Webalizer」のインストール

これでインストールが終了しましたので、インストール時に作成したファイルを削除します。

[root@CentOS ~]# rm -f webalizer-2.01_10-30.1.src.rpm <= ダウンロードしたファイルを削除
[root@CentOS ~]# rm -f /usr/src/redhat/SRPMS/* <= SRPMからRPMへのビルドにより作成されたファイル群を削除
[root@CentOS ~]# rm -f /usr/src/redhat/SPECS/* <= SRPMからRPMへのビルドにより作成されたファイル群を削除
[root@CentOS ~]# rm -f /usr/src/redhat/SOURCES/* <= SRPMからRPMへのビルドにより作成されたファイル群を削除
[root@CentOS ~]# rm -f /usr/src/redhat/RPMS/i386/* <= SRPMからRPMへのビルドにより作成されたファイル群を削除

yumのアップデート対象から「Webalizer」を外します。

[root@CentOS ~]# vi /etc/yum.conf <= 設定ファイルの編集
exclude=webalizer <= 追加
日本語コード変換スクリプトの作成

アクセスログの日本語が文字化けするのを防ぐため、アクセスログの日本語コードを変換するスクリプトを作成します。
ここで、日本語コードの変換にPerlのバージョンが5.8以前の場合はJcodeを用い、 Perl5.8以降の場合はEncodeを用います。

Perl5.8以前の場合
[root@CentOS ~]# cpan2rpm --install Jcode <= 日本語コード変換Perlモジュール(perl-Jcode)のインストール
なお、cpan2rpmについてはこちらに書いています。

[root@CentOS ~]# vi jconvertlog.pl <= スクリプトファイルの新規作成
#!/usr/bin/perl

use Jcode;

open (IN ,$ARGV[0]);
while (<IN>){
    $_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    Jcode::convert(\$_,'euc');
    print $_;
}
close (IN);
exit;


Perl5.8以降の場合
[root@CentOS ~]# vi jconvertlog.pl <= スクリプトファイルの新規作成
#!/usr/bin/perl

use Encode qw/ from_to /;

open (IN ,$ARGV[0]);
while (<IN>){
    $_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    from_to( $_, 'utf-8', 'euc-jp' );
    print $_;
}
close (IN);
exit;

作成したスクリプトファイルに実行権限を与えます。

[root@CentOS ~]# chmod 755 jconvertlog.pl
起動スクリプトの作成

アクセスログの日本語コードの変換を行うスクリプトを実行してから 「webalizer」を実行する為のスクリプトを作成します。

[root@CentOS ~]# vi webalizer.sh <= スクリプトファイルの新規作成
#!/bin/sh

/root/jconvertlog.pl /var/log/httpd/access_log > /var/log/httpd/jaccess_log
/usr/bin/webalizer > /dev/null 2>&1

作成したスクリプトファイルに実行権限を与えます。

[root@CentOS ~]# chmod 755 webalizer.sh
「Webalizer」の設定
[root@CentOS ~]# vi /etc/webalizer.conf <= 設定ファイルの編集
LogFile        /var/log/httpd/access_log
↓
LogFile        /var/log/httpd/jaccess_log
  = 日本語コード変換スクリプトと「Webalizer」の起動スクリプトによって作成されたアクセスログを指定

#HostName       localhost
↓
HostName       CentOS.crimson-snow.net <= ホスト名を指定

#HTMLHead <META NAME="author" CONTENT="The Webalizer">
↓
HTMLHead <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp"> <= 「Webalizer」のページの文字化け対策

#ReallyQuiet     no
↓
ReallyQuiet     yes <= Warning: Truncating oversized request field というエラーメッセージが表示されないようにする

#HideReferrer   mrunix.net/
↓
HideReferrer    crimson-snow.net <= 自サイト内からのアクセスをアクセス元として表示しない

日本語の検索エンジンを追加
SearchEngine    google.co.jp q=
SearchEngine    yahoo.co.jp p=
SearchEngine    search.biglobe.ne.jp q=
SearchEngine    infoseek.co.jp qt=
SearchEngine    search.nifty.com Text=
SearchEngine    goo.ne.jp MT=
SearchEngine    excite.co.jp search=
SearchEngine    msn.co.jp q=
SearchEngine    jp.aol.com query=
SearchEngine    biglobe.ne.jp   q=
SearchEngine    nifty.com       Text=
SearchEngine    livedoor.com    q=
ここまで
SearchEngine    yahoo.com       p=
SearchEngine    altavista.com   q=
SearchEngine    google.com      q=
SearchEngine    eureka.com      q=
SearchEngine    lycos.com       query=
SearchEngine    hotbot.com      MT=
SearchEngine    msn.com         MT=
SearchEngine    infoseek.com    qt=
SearchEngine    webcrawler      searchText=
SearchEngine    excite          search=
SearchEngine    netscape.com    search=
SearchEngine    mamma.com       query=
SearchEngine    alltheweb.com   query=
SearchEngine    northernlight.com  qr=
アクセス許可の設定
[root@CentOS ~]# vi /etc/httpd/conf.d/webalizer.conf <= 設定ファイルの編集
LAN内からのみアクセスする場合
Allow from 192.168 <= 追加(クライアントのIPアドレス)

外部からもアクセスする場合
Allow from All <= 追加(すべてのアクセスを許可)
Allow from 127.0.0.1
↓
#Allow from 127.0.0.1 <= コメントアウト

「Apache」を再起動し、設定を反映させます。

[root@CentOS ~]# /etc/rc.d/init.d/httpd restart
「Webalizer」の実行

「Webalizer」の実行

作成したスクリプトを実行し、「Webalizer」を実行します。

[root@CentOS ~]# ./webalizer.sh

http://サーバのIPアドレス/usage/
とアクセスしてページが表示されれば問題ありません。

「Webalizer」の自動実行

「Webalizer」を毎日0:00に自動実行するようにします。

[root@CentOS ~]# rm -f /etc/cron.daily/00webalizer <= インストール時に自動的に追加された起動スクリプトの削除

[root@CentOS ~]# crontab -e <= cronの編集
00 00 * * * /root/webalizer.sh <= 追加

ログローテーションに合わせた実行

ログローテーションのタイミングでも上記で作成したスクリプトを実行するようにします。
また、ログ解析は access_log のみ行う為、その他のログローテーション時には実行しないようにします。

[root@CentOS ~]# vi /etc/logrotate.d/httpd <= 設定ファイルの編集
access_log のみスクリプトを実行するように以下を追加
/var/log/httpd/access_log {
    missingok
    notifempty
    prerotate
        /root/webalizer.sh
    endscript
    postrotate
        /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}
ここまで

/var/log/httpd/*log {
↓
/var/log/httpd/error_log /var/log/httpd/spam_log /var/log/httpd/worm_log { <= 変更
    missingok
    notifempty
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}
▲ページのトップへ