AWFFullはRPMがいくつか作られているが、たまたま最新版がjavier氏のサイトのi386向けしかなかったため、SRPMから作ってみることにした。
# yum install -y rpm-build rpm-libs # yum install -y db4-devel gd-devel libpng-devel pcre-devel zlib-devel
AWFFullはGeoIPを使った国情報の解析に対応しているので、それもインストールする。
RHEL等のyumでインストールできるGeoIPではなく、小文字のgeoipでないとrpmが認識してくれない。今回は素直にgeoipを使ったが、後述する.specファイルの修正時に大文字にしてしまえば動作するかもしれない。
# rpm -ivh geoip-devel-1.4.0-1.el4.rf.x86_64.rpm geoip-1.4.0-1.el4.rf.x86_64.rpm or # yum install -y GeoIP-devel GeoIP-data
以降は一般ユーザー権限で行う。
# su - USER $ mkdir -p ~/rpm/{BUILD,RPMS,SRPMS} $ echo "%_topdir $HOME/rpm" > ~/.rpmmacros
SRPMからそのままRPMを作りたいところだが.specファイルに多少問題があり、ビルドできなかったり、インストールされるファイルが希望のものではなかったりした。
そこでDebian testingのものを参考に修正を加え、SRPMを作り直すことにした。ちなみにDebian testing側だけでも同様だった。
$ rpm -ivh awffull-3.8.2-1.src.rpm
[rpm/SPECS/awffull.spec] %install %{__rm} -rf %{buildroot} %makeinstall +%find_lang %{name} %clean %{__rm} -rf %{buildroot} -%files +%files -f %{name}.lang %defattr(-, root, root, 0755) %doc ChangeLog COPYING INSTALL README README.FIRST README.webalizer TODO DNS.README PERFORMANCE_TIPS.txt sample.conf
Webalizerのhistoryを引き継ぐ場合はperlスクリプトもコピーさせる。
+%doc contrib/awffull_history_regen.pl
修正したらSRPMを作り直す。
$ rpmbuild -bs rpm/SPECS/awffull.spec
最後にSRPMからRPMを作る。
$ rpmbuild --rebuild rpm/SRPMS/awffull-3.8.2-1.src.rpm
前節でビルドしたrpmをインストールする。
# rpm -ivh ~USER/rpm/RPMS/x86_64/awffull-3.8.2-1.x86_64.rpm
設定のサンプルがあるのでそれを元にする。また、GeoIPのインストール場所を調べる。
# cp /usr/share/doc/awffull-3.8.2/sample.conf /etc/awffull.conf # whereis GeoIP GeoIP: /etc/GeoIP.conf /usr/include/GeoIP.h /usr/share/GeoIP # ls /usr/share/GeoIP GeoIP.dat GeoLiteCity.dat
必要な設定を追加する。ちなみに試しにコマンドラインから実行し出力を確認するため、Quiet命令は追加しない。
[/etc/awffull.conf] LogType combined Incremental yes PageType php FoldSeqErr yes GeoIP yes GeoIPDatabase /usr/share/GeoIP/GeoIP.dat FlagsLocation /usage/flags
# mkdir /var/www/usage # ln -s /usr/share/doc/awffull-3.8.2/flags /var/www/usage/
# awffull -n example.com -o /var/www/usage/ < /var/log/httpd/access_log
usage以下に解析結果が作成されればOK。
Webalizer 2.01のhistoryファイルを変換するスクリプトが用意されている。
# /usr/share/doc/awffull-3.8.2/awffull_history_regen.pl --dir /var/www/usage > /var/www/usage/awffull.hist
また自動実行スクリプトを書いていた場合は退避しておく。
VirtualHostを使っていたため、メインのVirtualHost内に設定を記述した。
[/etc/httpd/conf.d/httpd.conf] NameVirtualHost * <VirtualHost *> ServerAdmin webmaster@example.com DocumentRoot /var/www/html ServerName example.com +Alias /usage /var/www/usage +<Location /usage> + order allow,deny + allow from localhost +</Location> </VirtualHost>
メインのホストのログファイル名をaccess_logとし、後はVirtualHost毎にFQDN-access_logにログを保存しているため、メインの解析結果は/var/www/usage/、それ以外は/var/www/usage/FQDN/に保存させてみる。
[/etc/cron.daily/00awffull] #!/bin/bash if [ -e /var/log/httpd/access_log ]; then /usr/bin/awffull -qn example.com -o /var/www/usage < /var/log/httpd/access_log fi for log in /var/log/httpd/*-access_log; do host=${log##*/} host=${host%-access_log} if [ ! -d /var/www/usage/$host ]; then mkdir /var/www/usage/$host fi /usr/bin/awffull -qn $host -o /var/www/usage/$host < $log done exit 0
ちなみにport 80以外は想定していない。