| トップ | Solaris | FreeBSD | Gentoo | CentOS | Fedora | Windows | Tips | 自宅サーバの動作確認 | サイト内検索(Namazu) | サイト内検索(HE) |
標準のままでは「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 |
[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」を実行します。
[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
}
|