CentOS 5.4 64bit環境では、Webalizerがyumレポジトリに導入されている。
ただし日本語版ではないらしく、普通に実行すると全て英語表示になる。
これを日本語に対応させるため、ソースからmakeを試みた。
WebalizerのHPを調べてみると、他言語対応はwebalizer_lang.hというヘッダファイルの置き換え&再コンパイルでやっているらしい。
要は表示するchar定数を各言語に置き換えているだけ、ということか。
(※手動でwebalizer_lang.hに利用言語のファイルからln -s するのではなく、./configureのオプションで指定する。手動でやるとconfigure時にリンクが上書きされてしまうので注意)
なお、インストールしたバージョンは現時点の最新版:webalizer-2.21-02である。
ただし日本語版ではないらしく、普通に実行すると全て英語表示になる。
これを日本語に対応させるため、ソースからmakeを試みた。
WebalizerのHPを調べてみると、他言語対応はwebalizer_lang.hというヘッダファイルの置き換え&再コンパイルでやっているらしい。
要は表示するchar定数を各言語に置き換えているだけ、ということか。
(※手動でwebalizer_lang.hに利用言語のファイルからln -s するのではなく、./configureのオプションで指定する。手動でやるとconfigure時にリンクが上書きされてしまうので注意)
なお、インストールしたバージョンは現時点の最新版:webalizer-2.21-02である。
WebalizerのHPからソース一式tar.gzをダウンロード&解凍し、configureしてみると、libdbがないというWarningが出た。(別に必須ではないので、--enable-dnsを外すという手もなくはない)
一応、探してみて適当にインストール。どうもBerkeley DB絡みらしいので、その辺りから当たってみると、
が正解だった。これでWarningもでなくなったので、普通にmakeしてinstall。
また、CentOS 5.4の日本語文字コードはUTF-8だが、WebalizerはEUC-JPで動いているらしい。
実際、出力されるhtmlファイルの文字エンコードはEUC-JPになっていた。
Webalizerの設定ファイルにHTMLヘッダを指定する事ができるのだが、ここを
としても、なぜかブラウザからはUTF-8と認識されてしまい、いちいちエンコーディングを切り替えるのが面倒。
(これはブラウザローカルの問題なのかもしれないが)
えぇいチマチマやってられるか、とふりかぶって、nkfで無理矢理utf-8化してしまう方法を選択。
生成されるhtmlファイルのヘッダもutf-8指定にする。
一応これで文字化けがなくなったので、まぁよしとする。

% ./configure --enable-dns --with-dblib=/lib \
--mandir=/usr/share/man --with-language=japanese
...
checking for gd.h... yes
checking for main in -ldb... no
configure: WARNING: libdb not found.. DNS/GeoDB code disabled!
...
一応、探してみて適当にインストール。どうもBerkeley DB絡みらしいので、その辺りから当たってみると、
% yum install db4-devel
が正解だった。これでWarningもでなくなったので、普通にmakeしてinstall。
% make; make install
% which webalizer
/usr/local/bin/webalizer
また、CentOS 5.4の日本語文字コードはUTF-8だが、WebalizerはEUC-JPで動いているらしい。
実際、出力されるhtmlファイルの文字エンコードはEUC-JPになっていた。
Webalizerの設定ファイルにHTMLヘッダを指定する事ができるのだが、ここを
% vi /etc/webalizer.conf
HTMLHead <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp">
としても、なぜかブラウザからはUTF-8と認識されてしまい、いちいちエンコーディングを切り替えるのが面倒。
(これはブラウザローカルの問題なのかもしれないが)
えぇいチマチマやってられるか、とふりかぶって、nkfで無理矢理utf-8化してしまう方法を選択。
% vi webalizer.sh # webalizer実行スクリプトを作成
#!/bin/bash
# - webalizer実行
/usr/local/bin/webalizer -c /etc/webalizer.conf
# - webalizerの解析結果htmlファイル生成場所に移動
cd /var/www/usage
# - utf-8エンコードに書き換え
/usr/bin/nkf -w80 -Lu --overwrite *.html
生成されるhtmlファイルのヘッダもutf-8指定にする。
% vi /etc/webalizer.conf
HTMLHead <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
一応これで文字化けがなくなったので、まぁよしとする。

コメントする