httpd(apache)のログローテーションが行えたら、今度は、そのログ情報から、見やすいように情報を取り出してくれるWebalizerをインストールしましょう。
ただ、通常のyumでインストールされたものは、文字コードがEUCで行われるので、最近のサイトは、UTF8も文字コードを使うことが多くなっていますから、文字化けしやすくなっています。
perlを使った対処法などは、他のサイトに任せて、ここでは、UTF8に対応したWebalizerをコンパイルしてみましょう。
- 目次
- 履歴
2010年7月17日 初版
コンパイルの前準備
- yum-utilsをインストールする。
$ yum -y install yum-utils
- rpm-buildをインストールする。
$ yum -y install rpm-build
- ダウンロード先を設定する。
ソースコードをダウンロードしたいので、ここで理研を設定しておきます。
/etc/yum.repos.d/CentOS-Base.repo を以下のように編集します。... [Update-SRPM] name=CentOS5 - Update SRPMS baseurl=http://ftp.riken.go.jp/Linux/centos/5.4/updates/SRPMS/ [extras-SRPM] name=CentOS5 - extras SRPMS baseurl=http://ftp.riken.go.jp/Linux/centos/5.4/extras/SRPMS/ [os-SRPM] name=CentOS5 - os SRPMS baseurl=http://ftp.riken.go.jp/Linux/centos/5.4/os/SRPMS/
2011-11追記:
理研のサイトでは、現在(2011.11.15)では、CentOSバージョン5に対するSRPMは、5.6のみ提供されています。
つまり、
Update
baseurl=http://ftp.riken.go.jp/Linux/centos/5.6/updates/SRPMS/
extras
baseurl=http://ftp.riken.go.jp/Linux/centos/5.6/extras/SRPMS/
os
baseurl=http://ftp.riken.go.jp/Linux/centos/5.6/os/SRPMS/
となります。
実際にSRPMのサイト編集を行う際は、最新情報を確認の上、編集しましょう。
- Webalizerのソースコード一式の取得する。
実際にyumdownloaderでソースコード一式をダウンロードしてみましょう。
$ yumdownloader --source webalizer ... webalizer-2.01_10-30.1.src.rpm | 282 kB 00:00
最後に表示されるのかのが、webalizerのビルド環境パッケージ名です。ここでは、webalizer-2.01_10-30.1.src.rpmです。メモっときましょ。
コンパイルの前準備
上記までの準備ができたら、実際に、UTF8を有効にして、ビルド(コンパイル)してみましょう。
- webalizerのビルド環境パッケージをインストールする。
$ rpm -ivh webalizer-2.01_10-30.1.src.rpm
エラー: %sourcedir を /usr/src/redhat/SOURCES に作成できません
と怒られるかもしれません。落ち着いていきましょ。
このエラーは、単純に/usr/src/redhat/SOURCESのディレクトリにファイルを展開できなかったということですから、 ほとんどの場合、/usr/src/redhat/SOURCESのディレクトリが存在しないためのエラーでしょう。
もし、そのとおりにないようなら、ディレクトリを作成してあげるとうまくいきます。
あるいは、書き込み権限がないことも考えられます。ユーザをsuper user(root)に切り替えて、やってみましょう。
とユーザ、グループ名がパッケージに含まれている名前がないと、上記の警告がでます。$ mkdir /usr/src/redhat $ mkdir /usr/src/redhat/SOURCES $ rpm -ivh webalizer-2.01_10-30.1.src.rpm 1:webalizer 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します ########################################### [100%]
ここは、あまり気にしなくてOKです。
- webalizer.specファイルが出来ていることを確認する。
$ cd /usr/src/redhat/SPECS/ $ ll 合計 12K -rw-rw-r-- 1 root root 9.7K 12月 21 22:00 webalizer.spec
- webalizer.specファイルを編集する。
以下は、/usr/src/redhat/SPECS/webalizer.spec の編集イメージです。
... %patch15 -p1 -b .agent-default # ↓追加!! UTF8への対応を追加します。 iconv -f euc-jp -t utf-8 lang/webalizer_lang.japanese > lang/webalizer_lang.japanese.utf8 mv -f lang/webalizer_lang.japanese.utf8 lang/webalizer_lang.japanese # ↑追加!! %build CPPFLAGS="-I%{_includedir}/db4" ; export CPPFLAGS CFLAGS="$RPM_OPT_FLAGS $CPPFLAGS -D_LARGEFILE64_SOURCE" ; export CFLAGS # ↓変更!! 日本語に対応するようにします。 # オリジナルをコメントアウト %configure --enable-dns --with-dblib=/lib %configure --enable-dns --with-dblib=/lib --with-language=japanese # ↑変更!! make ...
- ビルド(コンパイル)する。
$ cd /usr/src/redhat/SPECS/ $ rpmbuild -ba webalizer.spec
ここで、依存しているパッケージが存在しない場合、以下のようなエラーが表記されます。 その場合は、落ち付いて、エラー出力されたパッケージを一つ一つインストールして、再度、ビルドすると良いです。
上記の場合であれば、エラー: ビルド依存性の失敗: gd-devel は webalizer-2.01_10-30.1.x86_64 に必要とされています libpng-devel は webalizer-2.01_10-30.1.x86_64 に必要とされています
として、このあと、再度、rpmbuildを実行してみてください。$ yum -y install gd-devel libpng-devel
- インストールする。
ちゃんとrpmファイルが作成できているか確認します。
$ ls -l /usr/src/redhat/RPMS/i386/webalizer* -rw-r--r-- 1 root root 120780 6月 19 10:53 /usr/src/redhat/RPMS/i386/webalizer-2.01_10-30.1.x86_64.rpm
64ビット版は、以下のように指定します。
$ ls -l /usr/src/redhat/RPMS/x86_64/webalizer* -rw-r--r-- 1 root root 120780 6月 19 10:53 /usr/src/redhat/RPMS/x86_64/webalizer-2.01_10-30.1.x86_64.rpm
既にインストールされているwebalizerがないか確認します。
$ rpm -qa | grep webalizer webalizer-2.01_10-30.1
ここで、上記のように出力されたら、webalizerがインストールされていますから、まず、先に古いwebalizerを削除します。
$ rpm -e webalizer
最後にインストールします。
先に確認したrpmファイルを指定します。
$ rpm -Uvh /usr/src/redhat/RPMS/i386/webalizer-2.01_10-30.1.x86_64.rpm
Webalizerでログを解析
作成したWebalizerで実際のhttpd(apache)ログファイルを解析してみましょう。
- Webalizerでロギング情報を解析するためのパラメータファイルを作成します。
オリジナルの/etc/webalizer.conf をコピーします。
$ cp /etc/webalizer.conf /etc/webalizer_hoge.conf
コピーした /etc/webalizer_hoge.conf を編集します。
... #LogFile /var/log/httpd-access_log LogFile /var/log/httpd/hoge_user-access.log ... #HostName localhost HostName hoge.com ... #HTMLHead <META NAME="author" CONTENT="The Webalizer"> HTMLHead <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> ...
上記設定は、必要最小限です。他にたくさんのパラメータがありますので、カスタマイズを行ってください。
ここで指定しているログファイルは、httpd(apache)の初期設定ファイル(/etc/httpd/conf/httpd.conf)に指定したものです。
デフォルトでは、/var/www/usage へ出力されます。
編集を終えたら、保存します。
- Webalizerでロギング情報を解析します。
実際にWebalizerを起動してみましょう。
$ webalizer -c /etc/webalizer_hoge.conf Webalizer V2.01-10 (Linux 2.6.18-194.3.1.el5) Japanese ... Generating report for June 2010 Generating summary report Saving history information... 15338 records (12651 ignored) in 11.50 seconds, 1333/sec
レコード情報があれば、上記ように出力された由のメッセージが表示されます。
デフォルトでは、/var/www/usage へ出力されますから、そこへWEBブラウザからアクセスしてみてください。
こんな画面が表示されてばOKです。
- Webalizerを毎日起動するようにします。
上記の確認ができたら、Webalizerをログローテーションの直前に実施するようにします。
$ vi /etc/crontab ... ## webalizer 0 4 * * * root /usr/bin/webalizer -c /etc/webalizer_hoge.conf
上記のように追記します。
これで、毎日4時に実行されます。
ログローテーションは、毎日に設定していれば、デフォルトで4時2分に実行されますから、ちょうど良いですかね。
文字化けで困るのは、検索キーワードが読めなくなることです。
もし、ご利用の格安レンタルサーバーで解析結果の中の検索キーワードが文字化けしているようなら、文句を言いましょ。
参考記事:アクセスログの活用
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
コメントを投稿 :