>> HOME >> FC5 MENU >> Apache バーチャルホスト用アクセスログ解析 (AWStats)
バーチャルホストのアクセス統計をAWStatsを使用して、Webブラウザから参照できるようにします。
ここでは、メインサイトの他に、以下に示す条件でWebサイトを運用しているものとします。
バーチャルホスト名は virtual.jp
バーチャルホストのアクセスログは /var/log/httpd/virtual-access_log
バーチャルホストのドキュメントルートは /home/virtual/html/
バーチャルホストのアクセス解析結果出力先は /home/virtual/html/awstats

1. AWStats 設定
1 ) AWStats プロファイル /etc/awstats/awstats.virtual.jp.conf の作成
2 ) AWStats プロファイル /etc/awstats/awstats.virtual.jp.conf の編集
2. AWStats データベースの作成/更新
1 ) Apache のログを utf-8 にデコード
2 ) AWStats データベースの作成/更新
3. アクセスログの自動集計(本格運用のための設定)
1 ) 閲覧用レポートのディレクトリ作成
2 ) 閲覧用レポート自動生成シェルスクリプトを作成
3 ) 閲覧用レポート自動生成シェルスクリプトの実行
4 ) スケジューラ(cron)への登録
1. AWStats 設定
1 ) AWStats プロファイル /etc/awstats/awstats.virtual.jp.conf の作成
[root@linux ~]# cp -p /etc/awstats/awstats.model.conf /etc/awstats/awstats.virtual.jp.conf 
2 ) AWStats プロファイル /etc/awstats/awstats.mountainbigroad.jp.conf の編集
[root@linux ~]# vi /etc/awstats/awstats.virtual.jp.conf 

  :
  :
# You can also use a pipe if log file come from a pipe :
# Example: "gzip -d # apacheのアクセスログの場所
# 検索系サイトよりキーワードで検索されてきた場合、文字化が発生することがあります。
# これは、AWStats が utf-8 で作られているものの、キーワードが euc でログに出力される為に発生します。
# 対応として、apacheのアクセスログを utf-8にデコードした後に集計を行うようにします。
# virtual-access_log.utf8は一時的にデコードしたログを保存するファイルの名前です。
LogFile="/var/log/httpd/virtual-access_log.utf8"

  :
  :
# Example: "myintranetserver"
# Example: "www.domain.com"
# Example: "ftp.domain.com"
# Example: "domain.com"
#
# バーチャルホスト名を指定
SiteDomain="virtual.jp"

  :
  :
# 0 - No DNS Lookup
# 1 - DNS Lookup is fully enabled
# 2 - DNS Lookup is made only from static DNS cache file (if it exists)
# Default: 2
#
# アクセス元の名前解決を行う
DNSLookup=1

  :
  :
# Example: "/var/lib/awstats"
# Example: "../data"
# Example: "C:/awstats_data_dir"
# Default: "."          (means same directory as awstats.pl)
#
# データの保存先をスクリプトの場所と同じにする
DirData="."

  :
  :
# Change : Effective for new updates only
# Example: "127.0.0.1 REGEX[^192\.168\.] REGEX[^10\.]"
# Example: "localhost REGEX[^.*\.localdomain$]"
# Default: ""
#
#SkipHosts=""
# ローカルとLAN内(192.168.1.*)のアクセスは除外
SkipHosts="127.0.0.1 REGEX[^192\.168\.1\.]"

  :
  :
#  Serbian=sr, Slovak=sk, Slovenian=si, Spanish=es, Swedish=se, Turkish=tr,
#  Ukrainian=ua, Welsh=cy.
#  First available language accepted by browser=auto
# Default: "auto"
#
# 表示を日本語化
Lang="jp"

  :
  :
# Choose if you want the week report to start on sunday or monday
# Possible values:
# 0 - Week start on sunday
# 1 - Week start on monday
# Default: 1
#
# 週の始めを日曜日にする
FirstDayOfWeek=0

  :
  :
2. AWStats データベースの作成/更新
1 ) Apache のログを utf-8 にデコード
ログのデコードについては、『Apacheアクセスログ解析 (AWStats)』の「4. AWStats データベースの作成/更新」を参照してください。
# デコードの実行
[root@linux ~]# /usr/share/awstats/wwwroot/cgi-bin/conv_weblog_to_utf8.pl \
< /etc/httpd/logs/virtual-access_log \
> /etc/httpd/logs/virtual-access_log.utf8 
2 ) AWStats データベースの作成/更新
[root@linux ~]# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -update 
Update for config "/etc/awstats/awstats.virtual.jp.conf"
With data in log file "/var/log/httpd/virtual-access_log.utf8"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Jumped lines in file: 0
Parsed lines in file: 0
Found 1821 dropped records,
Found 0 corrupted records,
Found 0 old records,
Found 121226 new qualified records.
3. アクセスログの自動集計(本格運用のための設定)
1 ) 閲覧用レポートのディレクトリ作成
[root@linux ~]# mkdir /home/virtual/html/awstats 
2 ) 閲覧用レポート自動生成シェルスクリプトを作成
[root@linux ~]# vi awstats-virtual.sh 

#!/bin/sh

YEAR=`date --date '1 days ago' +%Y`
MONTH=`date --date '1 days ago' +%m`

# httpのログファイルをデコードした上で一時ディレクトリに格納します。
# access_log.utf8は一時的にデコードしたログを保存するファイルの名前です。
/usr/share/awstats/wwwroot/cgi-bin/conv_weblog_to_utf8.pl \
< /var/log/httpd/virtual-access_log \
> /var/log/httpd/virtual-access_log.utf8

# AWStats データベースの作成/更新
/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -update

# 閲覧用レポート自動生成
/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp \
-output=monthdayvalues -year=$YEAR -month=$MONTH -staticlinks > \
/var/www/html/awstats/$YEAR-$MONTH.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=allhosts -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.allhosts.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=lasthosts -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.lasthosts.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=unknownip -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.unknownip.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=alllogins -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.alllogins.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=lastlogins -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.lastlogins.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=allrobots -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.allrobots.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=lastrobots -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.lastrobots.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=urldetail -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.urldetail.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=urlentry -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.urlentry.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=urlexit -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.urlexit.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=browserdetail -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.browserdetail.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=unknownbrowsers -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.unknownbrowsers.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=unknownos -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.unknownos.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=refererse -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.refererse.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=refererpages -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.refererpages.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=keyphrases -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.keyphrases.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=keywords -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.keywords.html

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=virtual.jp -output=errors404 -staticlinks > \
/home/virtual/html/awstats/awstats.virtual.jp.errors404.html

# インデックスHTML
if [ "$YEAR$MONTH" = $(date +%Y%m) ]; then
  mv /home/virtual/html/awstats/$YEAR-$MONTH.html /home/virtual/html/awstats/index.html
fi
[root@linux ~]# chmod 700 awstats-virtual.sh 
3 ) 閲覧用レポート自動生成シェルスクリプトの実行
[root@linux ~]# ./awstats-virtual.sh 
4 ) スケジューラ(cron)への登録
[root@linux ~]# crontab -e 

# 毎日 00:00 に自動実行します。
00 00 * * * /root/awstats-virtual.sh > /dev/null 2>&1