•   Login
  •  
  •   Rss
  •   Rss2.0
  •   ATOM1.0
  •   Admin
  •   Top
  •   Home

アクセス統計の厳密化と最適化
CentOS7 webalizerインストール(ソースから)。
これまで、当サイトのアクセス解析は、「Webalizer」を使ってきました。
オリジナルではなく、コンパイルされたものをインストールしていたのですが、これでは何故か画像部分が文字化けすると言う不具合がありました。
文字化けの画像

かれこれ10年くらい放置していたのですが、これを機会にソースをダウンロードしてコンパイルから始めました。
参考にしたのはこちらのサイト。
CentOS7 webalizerインストール(ソースから)
当方は、debianですので、コマンドが違っていたりするのですが、だいたい同じ。
唯一違うところは、オリジナルからダウンロードするのではなく、debianサイトからソースをダウンロードすると言う事。
apt-get source webalizer
これを忘れないようにしましょう。ダウンロードされるファイルは、現在以下の通り。
-rw-r--r-- 1 root root 449152 10月 9 2013 webalizer_2.23.08-1.debian.tar.gz
-rw-r--r-- 1 root root 1454 10月 9 2013 webalizer_2.23.08-1.dsc
-rw-r--r-- 1 root root 537037 10月 9 2013 webalizer_2.23.08.orig.tar.gz

2つのソース(tar.gz)がありますが、使うのは太字の方です。
本家オリジナルを使うと、make時にDATADIRエラーが発生します。
何故出るのか不明。
これを解決するのに3時間くらい費やしました。


割とすんなりインストールできるようなサイトですが、Windowsのように誰でも出来るようになれないのが、Linuxの難しいところ。
これが最初の躓いたところ。/configureとは基本中の基本。定義ファイルを作りますよ宣言。
# ./configure --enable-dns --with-language=japanese --with-mandir=/usr/share/man
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes

【中略】

checking for math.h... yes
checking for main in -lz... yes
checking for gzrewind in -lz... yes
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for main in -lpng... no
configure: error: png library not found.. please install libpng
root@sir-2:~/webalizer-2.23.08# make
make: *** ターゲットが指定されておらず, makefile も見つかりません. 中止.
libpngが見つかりませんよ。定義ファイルが作れませんので中止。と言うエラー。
必要なファイルをサイトからダウンロードしないんです。
そこで、コマンドを叩いてlibpngの開発モジュールをインストール。
知っておくと便利なのですが、Linuxの開発モジュールをインストールするときは、たいてい<モジュール>-devと言う名称になっています。
今回のケースですと、libpng-devになります。
これを何度か繰り返すと、以下の通り定義ファイルが完成します。
# ./configure --prefix=/usr/local/webalizer --with-language=japanese --enable-dns --enable-geoip --enable-bz2
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes


【中略】

checking gd.h usability... yes
checking gd.h presence... yes
checking for gd.h... yes
checking for main in -ldb... yes
checking db.h usability... yes
checking db.h presence... yes
checking for db.h... yes
checking for fdatasync... yes
checking for socket... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking for inet_pton... yes
checking for main in -lbz2... yes
checking for BZ2_bzopen in -lbz2... yes
checking bzlib.h usability... yes
checking bzlib.h presence... yes
checking for bzlib.h... yes
checking for main in -lGeoIP... yes
checking GeoIP.h usability... yes
checking GeoIP.h presence... yes
checking for GeoIP.h... yes
checking for language file... yes - japanese
configure: creating ./config.status
config.status: creating Makefile
config.status: linking ./lang/webalizer_lang.japanese to webalizer_lang.h
configure: Done. Type 'make' to continue with build.

これで、次のステージmakeコマンドを実行します。
初めて使うときは問題ありませんが、1度でも実行するとオブジェクトファイルが作成されるので、make clean を実行しましょう。
出来ることなら一種のおまじないです。
ちなみに一度makeを実行した後、何かしらのエラーで修正して再実行しても同じエラーが出ます。
一度、出力されるオブジェクトファイル(拡張子がoで始まるものなど)を削除するのがLinuxでは定説です。


さて、makeを実行するとダラダラと画面がスクロールします。
よく見るとワーニングメッセージが出ますが無視して良さそうです。
【一例】
webalizer.c:749:18: warning: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘u_int64_t’ [-Wformat=]
msg_bad_date,log_rec.datetime,total_rec);
^
webalizer.c:980:17: warning: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘u_int64_t’ [-Wformat=]
msg_big_ref,total_rec);

エラーで途中終了せず、最後まで行ったらあとは、make installでインストールします。
以下のような感じ。
# make install
mkdir -p /usr/local/webalizer/bin
mkdir -p /man/man1
mkdir -p /usr/local/webalizer/etc
/usr/bin/install -c webalizer /usr/local/webalizer/bin/webalizer
/usr/bin/install -c wcmgr /usr/local/webalizer/bin/wcmgr
rm -f /usr/local/webalizer/bin/webazolver
ln -s webalizer /usr/local/webalizer/bin/webazolver
/usr/bin/install -c -m 644 webalizer.1 /man/man1/webalizer.1
/usr/bin/install -c -m 644 wcmgr.1 /man/man1/wcmgr.1
rm -f /man/man1/webazolver.1
ln -s webalizer.1 /man/man1/webazolver.1
/usr/bin/install -c -m 644 sample.conf /usr/local/webalizer/etc/webalizer.conf.sample
これでインストールが終わりました。
でも、これで終わりではありません。webalizerは、パスの切られていないところに保管されているだけですので、パスの通ったところへコピーしてやる必要が有ります。
ショートカットで作成された、webazoliverでも良いのですが、私の場合すっかり、webalizerに馴染んでしまっているので、このコマンドを/binへコピーします。
あ、次のコマンドでも良いかもしれません。
ln -s /usr/local/webalizer/bin/webalizer /bin/webalizer


取りあえずここまでは、アクセス解析できる環境が出来ました。
あとは、マニアックな設定をするだけ。
セキュリティー上見せられませんが、最低限するのはこれらの項目。
・LogFile…アクセスログのフルパスとファイル名
・OutputDir…出力先=Web表示先ディレクトリ
・HistoryName…履歴先ディレクトリ(たいてい出力先と同じディレクトリにしていることが多い)
これくらいですかね。
それ以外のマニアックな設定をしたい人は、次のサイトを参考にすると良いでしょう。
Webalizerの設定ファイル(webalizer.conf ) の簡単解説


そして、出来上がりがこんな感じになります。
文字化け解消の画像
ちょっとサッパリしたでしょ。日本語にはなっていませんが、文字化けが解消されました。


記事を評価してください(★1つ=悪い、★5つ=良い)
この記事の平均評価: 未評価 (0人)
Posted by いぐぅ 05:00 | システム::linux | comments (0) | trackback (0)
コメント
コメントする









この記事のトラックバックURL
http://www.sir-2.net/dablg/tb.php/5784
トラックバック

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30