Webalizer

提供:JUDSTYLE Wiki
移動: 案内, 検索

Webalizerによるアクセス解析の設定にまつわるメモ。

目次

経緯

自分のWebサイトはさくらインターネット(以下、さくら)で運営している。さくらではWebalizerによるアクセス解析を標準で提供しているが、Webalizerそのものの設定を変更することは出来ないため、細かいところに手が届かなくて悔しい思いをしたりする。

ならば、自宅サーバにログを移送して、自宅サーバ上でログを解析すればいいだろうということで、自宅サーバへのWebalizerインストールをすることにした。

導入

導入について紹介すべきところではあるが、あいにくFedoraCore4には最初からWebalizerがインストールされているため割愛とする。導入については以下のサイトで取り扱っているので、参考がてらリンクを置いておく。

WebalizerによるWebアクセスログ解析

ログ取得

まずは、さくらのサーバからログを取得するのが第一段階となる。そのためには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: /

外部リンク

テンプレート:stub

個人用ツール
名前空間
変種
操作
案内
ツールボックス