webalizer 2.01-10 に関するインストールメモ(2002/07/06,
更新日:2003/04/11)
apache のアクセスログから、各種の統計情報を解析しグラフィカルなイメージでレポート出力するツールです。レポート出力結果は、月/日単位で見ることができます。
本家 : The Webalizer(英語です)
参考 : SolarisFAn : gdとwebalizerによるApacheログファイルの解析
参考 : Webalizer アクセス解析
webalizer を使用するためには、libgd が必要となります。libgd の関連モジュールとして libpng / jpeg-6b / zlib / freetype / freetype2 を必要とします。
freetype 2.0.4 のコンパイル方法
$ wget http://ftp.linux.cz/pub/freetype/freetype2/freetype-2.0.4.tar.gz
$ gzip -cd freetype-2.0.4.tar.gz | tar xf -
$ cd freetype-2.0.4
$ gmake setup
$ gmake -j2
$ su
# make install
$ wget http://www.boutell.com/gd/http/gd-2.0.1.tar.gz
$ gzip -cd gd-2.0.1.tar.gz | tar xf -
$ cd gd-2.0.1
$ vi Makefile
#CFLAGS=-g -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_LIBFREETYPE
CFLAGS=-O2 -g -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_LIBFREETYPE -DJISX0208
#INCLUDEDIRS=-I. -I/usr/include/freetype2 -I/usr/include/X11 -I/usr/X11R6/includ
e/X11 -I/usr/local/include
INCLUDEDIRS=-I. -I/usr/include/freetype2 -I/usr/include/X11 -I/usr/X11R6/include/X11 -I/usr/local/include -I/usr/local/include/freetype2
$ su
# make installwebalizer 2.01-10 をインストールする。
$ wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.01-10-src.tar.Z
$ gzip -cd webalizer-2.01-10-src.tar.Z | tar xf -
$ cd webalizer-2.01-10
$ wget ftp://ftp.mrunix.net/pub/webalizer/lang/webalizer_lang.japanese
$ cp webalizer_lang.japanese ./lang
$ ./configure --with-language=japanese --enable-dns
$ vi Makefile
#LIBS = -lgd -lpng -lz -lm
LIBS = -lgd -lpng -lz -lm -lfreetype -ljpeg
$ make
$ su
# make install
/usr/bin/install -c webalizer /usr/local/bin/webalizer
/usr/bin/install -c -m 644 webalizer.1 /usr/local/man/man1/webalizer.1
/usr/bin/install -c -m 644 sample.conf /etc/webalizer.conf.sample
rm -f /usr/local/bin/webazolver
ln -s /usr/local/bin/webalizer /usr/local/bin/webazolver
% su
# cd /etc
# cp webalizer.conf.sample webalizer.conf
# vi webalizer.conf
最低限の設定
LogFile apacheのログファイル名までのフルパスを記述
HostName ホスト名(表示に使われるホスト名)
DNSCache dns_cache.db ← これしないと、国別グラフが正しく機能しません
DNSChildren 20 ← これしないと、国別グラフが正しく機能しません実行のしかた(最低限の設定しか行っていない場合)です。
$ cd 書き込み権限のある任意のディレクトリ ← このディレクトリに webalizer が出力した結果が書き出されます
$ LD_LIBRARY_PATH=/usr/lib:/usr/local/lib
$ export LD_LIBRARY_PATH
$ /usr/local/bin/webalizer実行時に下記のエラーが出る場合があります。これは、ライブラリ(libjpeg, libgd等)が競合されているかもしれません。ですので、LD_LIBRARY_PATH に記述してあるディレクトリに古いライブラリが存在するか確認してください。また根本的に必須ライブライが無い場合にも、表示されますが・・・・(笑)
/usr/lib/libgd.so.2 : undefined reference to `jpeg_destroy'
1) Apacheログの出力方法を combined にします。なっていない場合は、この形式にしてください。
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# The location of the access logfile (Common Logfile Format).
# If this does not start with /, ServerRoot is prepended to it.
CustomLog /var/log/httpd/home-access combined
1) コマンドラインから毎回 webalizer コマンドを実行するのは、シンドイので cron 化して楽しませう。その前に、webalizer の設定を完璧にしておきませう。
# vi /etc/webalizer.conf ← 記述した内容
2) webalizer.conf の OutputDir には、webから参照できるディレクトリを記述しておくと便利です。
OutputDir /home/groups/home/web/webalizer
3) cron から起動するべきシェルスクリプトを作成する。
$ cd /usr/local/cron_sh ← 適当でいいです
$ vi webalizer.sh ← 自分でわかれば、いいです
#!/bin/sh
PATH=/usr/local/sbin:/usr/sbin:/sbin:.:~/bin
PATH=/usr/local/bin:/usr/X11R6/bin:/usr/bin:/bin:$PATH
export LANG=ja
export PERL_BADLANG=0
export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib
/usr/local/bin/webalizer4) 毎時10分単位で 上記シェルスクリプトを実行するように crontab に設定します。
$ su
# csh
# setenv EDITOR vi
# crontab -e
0,10,20,30,40,50 * * * * /opt/local/cron_sh/webalizer.sh >/dev/null 2>&1*) 最終的な webalizer.conf の変更結果は、こんな感じ。
国別アクセスで、いつまでたっても 「Unresolved/Unknown」 と表示される場合は、コンパイル時の指定か、設定ファイルの指定が間違っています。ただし修正後に過去分が反映されると思いでしょうが・・・。あはは。修正後からの反映ですので、お気を付けあれ〜