「Webalizer」の設定

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

「Webalizer」のインストール

「Webalizer」をソースからインストールする為、依存関係のあるものを先にインストールします。

「webapp-config」のインストール
Gentoo ~ # emerge app-admin/webapp-config

「media-libs/gd」のインストール
Gentoo ~ # emerge media-libs/gd

「Webalizer」のインストール

「Webalizer」を日本語に対応させる為、ソースをダウンロードします。

Gentoo ~ # emerge -f webalizer <= 「Webalizer」のソースをダウンロード

Gentoo ~ # cd /usr/portage/distfiles <= ソースをダウンロードしたディレクトリへ移動
Gentoo ~ # tar xjf webalizer-2.01-10-src.tar.bz2 <= ダウンロードしたソースファイルの展開
Gentoo ~ # cd webalizer-2.01-10 <= 展開したディレクトリへ移動
Gentoo ~ # ./configure --with-language=japanese --enable-dns 2>&1 | tee configure.log
Gentoo ~ # make 2>&1 | tee make.log <= コンパイル
Gentoo ~ # mkdir -p /usr/local/man/man1 <= マニュアル用のディレクトリの作成
Gentoo ~ # make install 2>&1 | tee make-install.log <= インストール
日本語コード変換スクリプトの作成

アクセスログの日本語が文字化けするのを防ぐため、 アクセスログの日本語コードを変換するスクリプトを作成します。
ここで、日本語コードの変換にPerlのバージョンが5.8以前の場合はJcodeを用い、 Perl5.8以降の場合はEncodeを用います。
なお、JcodeやEncodeのインストール方法については、 こちらを参照にモジュールをインストールして下さい。

Perl5.8以前の場合
Gentoo ~ # vi /root/jconvertlog.pl <= スクリプトファイルの新規作成
#!/usr/local/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以降の場合
Gentoo ~ # vi /root/jconvertlog.pl <= スクリプトファイルの新規作成
#!/usr/local/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;

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

Gentoo ~ # chmod 755 /root/jconvertlog.pl
起動スクリプトの作成

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

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

/root/jconvertlog.pl /var/log/apache2/access_log > /var/log/apache2/jaccess_log
/usr/local/bin/webalizer -c /etc/webalizer.conf > /dev/null 2>&1

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

Gentoo ~ # chmod 755 /root/webalizer.sh
解析結果の出力の設定

ディレクトリの作成

解析結果を格納するディレクトリを作成します。

Gentoo ~ # mkdir /var/www/localhost/webalizer

「Apache」の設定

解析結果を格納するディレクトリにアクセスできるように「Apache」を設定します。

Gentoo ~ # vi /etc/apache2/httpd.conf <= 設定ファイルの編集
Alias /webalizer/ "/var/www/localhost/webalizer/" <= 追加

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

Gentoo ~ # /etc/init.d/apache2 restart
「Webalizer」の設定
Gentoo ~ # cp -p /etc/webalizer.conf.sample /etc/webalizer.conf <= サンプル設定ファイルのコピー
Gentoo ~ # vi /etc/webalizer.conf <= 設定ファイルの編集
#LogFile        /var/lib/httpd/logs/access_log
↓
LogFile        /var/log/apache2/jaccess_log
 <= 日本語コード変換スクリプトと「Webalizer」の起動スクリプトによって作成されたアクセスログを指定

#OutputDir      /var/lib/httpd/htdocs/usage
↓
OutputDir      /var/www/localhost/webalizer <= 解析結果の出力先を指定

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

#DNSCache       dns_cache.db
↓
DNSCache       dns_cache.db <= コメント解除(DNSの逆引きによる名前解決ファイル名)

#DNSChildren    0
↓
DNSChildren    10 <= DNSCache の指定時に使用される、逆引き処理でのプロセス数

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

#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=
「Webalizer」の実行

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

Gentoo ~ # /root/webalizer.sh

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

「Webalizer」の自動実行

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

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

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

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

Gentoo ~ # vi /etc/logrotate.d/apache2 <= 設定ファイルの編集
access_log のみスクリプトを実行するように以下を追加
/var/log/apache2/access_log {
  missingok
  notifempty
  prerotate
    /root/webalizer.sh
  endscript
  postrotate
    /etc/init.d/apache2 reload > /dev/null 2>&1 || true
  endscript
}
ここまで

/var/log/apache2/*log {
↓
/var/log/apache2/error_log /var/log/apache2/spam_log /var/log/apache2/worm_log { <= 変更
  missingok
  notifempty
  sharedscripts
  postrotate
  /etc/init.d/apache2 reload > /dev/null 2>&1 || true
  endscript
}
▲ページのトップへ