webalizer 2.01-10 に関するインストールメモ(2002/07/06, 更新日:2003/04/11) 
 

webalizer とは

apache のアクセスログから、各種の統計情報を解析しグラフィカルなイメージでレポート出力するツールです。レポート出力結果は、月/日単位で見ることができます。

本家 : The Webalizer(英語です)

参考 : SolarisFAngdと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

libgd 2.0 のコンパイル方法

$ 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 install

webalizer 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

※ --enable-dns オプションを指定しないと、DNS逆引きが動作しません

設定ファイル

webalizer.conf の設定を行う。

% 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' 

Apache の変更

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/webalizer

4) 毎時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」 と表示される場合は、コンパイル時の指定か、設定ファイルの指定が間違っています。ただし修正後に過去分が反映されると思いでしょうが・・・。あはは。修正後からの反映ですので、お気を付けあれ〜