Webalizer
Webalizerによるアクセス解析の設定にまつわるメモ。
目次 |
経緯
自分のWebサイトはさくらインターネット(以下、さくら)で運営している。さくらではWebalizerによるアクセス解析を標準で提供しているが、Webalizerそのものの設定を変更することは出来ないため、細かいところに手が届かなくて悔しい思いをしたりする。
ならば、自宅サーバにログを移送して、自宅サーバ上でログを解析すればいいだろうということで、自宅サーバへのWebalizerインストールをすることにした。
導入
導入について紹介すべきところではあるが、あいにくFedoraCore4には最初からWebalizerがインストールされているため割愛とする。導入については以下のサイトで取り扱っているので、参考がてらリンクを置いておく。
ログ取得
まずは、さくらのサーバからログを取得するのが第一段階となる。そのためにはcronからftpにてログを取得するということになるが、ftpはいかにも不便なのでlftpを使用する。
lftpスクリプト
lftpにてログファイルを取得するスクリプトを作成する。
getjslog.ftp.txt open SERVERNAME user USERNAME PASSWORD lcd /SITENAME/logs cd /home/SITENAME/log get access_log_20061231
ここで重要なのは、ログファイル名である。ログファイル名は日付が付けられたファイル名となっているため、ここは可変とする必要がある。
bashスクリプト
lftpで使用するスクリプトを毎回作成し直すようにするbashスクリプトを作成する。
getjslog.sh #!/bin/bash cd /judstyle GETX="get " GET1B="access_log_" GET1C=`date +%Y%m%d` SCRIPTFILENAME="/SITENAME/getjslog.ftp.txt" LOGFILENAME="/SITENAME/getjslog.log" echo "open SERVERNAME" > $SCRIPTFILENAME echo "user USERNAME PASSWORD" >> $SCRIPTFILENAME echo "lcd /SITENAME/logs" >> $SCRIPTFILENAME echo "cd /home/SITENAME/log" >> $SCRIPTFILENAME echo $GETX$GET1B$GET1C >> $SCRIPTFILENAME lftp -f /SITENAME/getjslog.ftp.txt >> $LOGFILENAME 2>&1 cp -f /SITENAME/logs/$GET1B$GET1C /SITENAME/today.log webalizer -c /etc/webalizer.SITENAME.conf
crontab設定
このスクリプトを、自動実行させるために、crontabにスクリプト実行を設定する。
30 5 * * * /SITENAME/getjslog.sh
さくらのログ
さくらインターネットのサーバのログは、全体的にどうかは知らないけど、毎朝5:00に更新され、それまでの24時間分が記録される。なので、毎朝5:30にダウンロードし、そのままWebalizerを起動している。
Webalizer
Webalizerの設定に関しては前述のサイトに譲るが、基本的にはあちこちの設定値を好きなように変えるだけでよい。ただし、Webalizerはそれまでの解析履歴を保存するため、テスト中に何度も繰り返し解析するためには履歴を消去する必要がある。IncrementalNameとHistoryNameを毎回消去すれば問題ないだろう。
LogFileには、前述のログファイルを指定する。出力先も設定しておくこと。
/etc/webalizer.SITENAME.conf LogFile /SITENAME/today.log OutputDir /htdocs/webalizer
フォント設定
個人的に明朝系フォントは嫌いだし、日本語と英字混在の環境ではフォントに馴染みがないということもあり、フォントを変更。また、等幅系フォントも小さすぎて目によろしくないので、そのフォントサイズも大きくしたい。
totalstyle.css
*{font-family:sans-serif;}
pre{font-family:monospace;font-size:small;}
ここで問題なのは、小さいフォントを指定している各table内では、なんとsmallタグだけではなく直接fontsizeを指定しているところもある。これは直接Webalizerを直したいところであるが、それはメンテナンスを含めて手間がもったいないので、特に小さい全referer一覧などの詳細ページのみ対応するためにpreタグへの対策のみを行う。また、全体のフォントをゴシック系に変更している。
このCSSファイルを読み込むためには、以下の設定を追加する。
/etc/webalizer.SITENAME.conf HTMLHead <link rel="stylesheet" href="./totalstyle.css" type="text/css">
詳細設定
もちろん、詳細を参照できるようにするため、以下の設定も追加。
/etc/webalizer.SITENAME.conf AllSites yes AllURLs yes AllReferrers yes AllAgents yes AllSearchStr yes AllUsers yes
グループ設定
さらに、今回の最大の目的であるグループ化も設定する。
/etc/webalizer.SITENAME.conf GroupReferrer yahoo.com/ Yahoo! GroupReferrer excite.com/ Excite GroupReferrer infoseek.com/ InfoSeek GroupReferrer webcrawler.com/ WebCrawler GroupReferrer google.co.jp/ Google.jp GroupReferrer goo.ne.jp/ Goo.ne.jp GroupReferrer livedoor.com/ Livedoor.jp GroupReferrer biglobe.ne.jp/ BIGLOBE.jp GroupReferrer search.nifty.com/ NIFTY.jp GroupReferrer infoseek.co.jp/ Infoseek.jp GroupReferrer aol.com/ aol GroupReferrer search.msn.co.jp/ MSN.jp
自サイト設定
サイト内でのリンクなど見てもしょうがないので、その設定も追加する。
/etc/webalizer.SITENAME.conf IgnoreReferrer http://www.SITENAME.jp/* IgnoreReferrer http://SITENAME.jp/* IgnoreReferrer http://SITENAME.sakura.ne.jp/* IgnoreReferrer http://blog.SITENAME.jp/*
アクセス制限
.htaccess
こんなものを他人に見られたらいやだなぁと思ってアクセス制限を設定する。ついでに、悪質な検索エンジン対策もする。.htpasswdについて、ここでは割愛。
/htdocs/webalizer/.htaccess AuthUserFile /htdocs/webalizer/.htpasswd AuthGroupFile /dev/null AuthName "Please enter your ID and password" AuthType Basic require valid-user order allow,deny allow from all deny from 85.255. deny from 60.24. deny from 60.25. deny from 60.26. deny from 60.27. deny from 60.28.17.33 deny from 60.28. deny from 60.29. deny from 60.30.
robots.txt
念のため(気休めも含めて)検索ロボットへの設定を行う。
robots.txt User-agent: * Disallow: /