ウェブサーバーアクセスログ解析:AWStats

(最終更新日時:2013-01-14 21:31:03)
ウェブサーバーのアクセスログを解析し、ブラウザ上で解析結果を確認できるツール AWStats をインストールします。

ダウンロード

AWStats official web site(http://awstats.sourceforge.net/)から次のファイルをダウンロードします。
AWStats Last stable awstats-7.1.tar.gz
 (※)下線部は 2013/01/12 現在の最新安定バージョンです。

インストール

/usr/local/src ディレクトリでアーカイブを展開し、ファイルをコピーします。
(※)AWStats の実行ディレクトリを /home/www/awstat にしています。
# cd /usr/local/src
# wget http://prdownloads.sourceforge.net/awstats/awstats-7.1.tar.gz
# tar zxvf awstats-7.1.tar.gz

# mkdir /home/www/awstats                                     # ウェブサーバー上に AWStats のディレクトリを作成します
# mkdir /home/www/awstats/icon
# cp -R awstats-7.1/wwwroot/cgi-bin/* /home/www/awstats/
# chmod 755 /home/www/awstats/awstats.pl
# cp -R awstats-7.1/wwwroot/icon/*    /home/www/awstats/icon

日本語化パッチ

検索文字列の日本語化のため 高橋誠さんの - WWWページ作成について -(http://hobbit.ddo.jp/html/index.html)から次のファイルをダウンロードします。
AWStatsをFreeBSDで動かすawstats70t_jpn.zip
 (※)2013/01/12現在 Ver.7.0用になります。

下記についてのパッチを適用します。
# cpanm Jcode                                                 # 必要なPerlモジュールをインストールします
# cpanm Unicode::Japanese

# cd /usr/local/src
# wget http://hobbit.ddo.jp/html/awstats70t_jpn.zip
# cd /home/www/awstats
# unzip -d lib -ajo /usr/local/src/awstats70t_jpn.zip AWStats70t_Jpn/wwwroot/cgi-bin/lib/search_engines.pm
# unzip -d lib -ajo /usr/local/src/awstats70t_jpn.zip AWStats70t_Jpn/wwwroot/cgi-bin/lib/robots.pm

# wget http://www.system-act.com/archives/patches/awstats-7.1.patch
# patch < awstats-7.1.patch
# rm -f awstats-7.1.patch                                     # パッチファイルを削除します

apacheの設定

apacheの各バーチャルホスト設定に AWStats の設定を追加します。
AWStatsの実行ディレクトリを全ホスト共通にしているため.htaccessを使用せず、apacheの設定で行っています。
# vi /usr/local/apache2/conf/extra/vhosts/www.system-act.com.conf
----------(vi ここから)----------Alias /awstats   "/home/www/awstats"                          # ブラウザからは /awstats でアクセスします
<Directory       "/home/www/awstats">
  BrowserMatch   "MSIE" AuthDigestEnableQueryStringHack=On    # IE6までの不具合回避です

  AuthType        Digest                                      # アクセス認証はDigest認証を使用します
  AuthName       "AWStats"
  AuthUserFile    /etc/.htdigest                              # httpユーザ認証用ファイル
  AuthGroupFile   /etc/.htgroup                               # httpグループ定義ファイル
  Require   group www.system-act.com                          # グループに存在するユーザのアクセスを許可する

  # 特定のIPアドレスやホスト名からのみアクセスを許可する場合は、以下のようにRequireを設定します(※Apache2.4)
  <RequireAll>                                                # すべてのRequire条件に一致したら許可する
    Require ip    192.168.201.0/24                            # IPアドレスで制限する例です
    Require group www.system-act.com                          # グループに存在するユーザのアクセスを許可する
  </RequireAll>

  DirectoryIndex  awstats.pl                                  # ファイル名省略時の表示ファイルを指定します
  Options         ExecCGI                                     # CGIの実行を許可します
  AddHandler      cgi-script .pl                              # .plファイルをCGIとして実行できるようにします
  SetEnv          AWSTATS_CONFIG www.system-act.com           # AWStatsのconfigファイルを当該ホストのものに強制します
</Directory>
----------(vi ここまで)----------

# vi /usr/local/apache2/conf/extra/vhosts/www.nekojara.com.conf
----------(vi ここから)----------Alias /awstats   "/home/www/awstats"
<Directory       "/home/www/awstats">
  BrowserMatch   "MSIE" AuthDigestEnableQueryStringHack=On
  AuthType        Digest
  AuthName       "AWStats"
  AuthUserFile    /etc/.htdigest
  AuthGroupFile   /etc/.htgroup
  <RequireAll>                                                # ホスト名で制限する例です
    Require host  .localnet                                   # localnetセグメントの全ホストを許可しています                
    Require group www.nekojara.com
  </RequireAll>
  DirectoryIndex  awstats.pl
  Options         ExecCGI
  AddHandler      cgi-script .pl
  SetEnv          AWSTATS_CONFIG www.nekojara.com
</Directory>
----------(vi ここまで)----------

Digest認証の設定

htdigestを使用してDigest認証用の.htdigestファイルを作成します。
-c オプションを付けると.htdigestが新規に作成されます。
また、レルム "AWStats" は、apache設定の AuthName と同じものにします。これが違っているとユーザが一致してもログインできません。
# /usr/local/apache2/bin/htdigest -c /etc/.htdigest "AWStats" user1
Adding password for user1 in realm AWStats.
New password: パスフレーズ
Re-type new password: パスフレーズ(再入力)

# /usr/local/apache2/bin/htdigest    /etc/.htdigest "AWStats" user2
Adding password for user2 in realm AWStats.
New password: パスフレーズ
Re-type new password: パスフレーズ(再入力)

# chmod 604 /etc/.htdigest

Digest認証の Require group で使用する.htgroupファイルを作成します。
.htgroupファイルでは、Require groupで指定したグループに属する .htdigest で作成したユーザー を定義します。
# vi /etc/.htgroup
----------(vi ここから)----------
www.system-act.com: user1                                     # グループに属するユーザーを指定します
www.nekojara.com:   user2 userx                               # 複数のユーザーは空白で区切って指定します
----------(vi ここまで)----------

# chmod 604 /etc/.htgroup

AWStatsの設定

AWStatsの設定ファイルを作成します。
また、検索文字列をUTF-8文字列に変換するため、日本語化でダウンロードした awstats70t_jpn.zip 内の utf8_decode.pl を使用します。
# mkdir /home/awstats                                         # 分析結果の格納ディレクトリを作成します

# mkdir /etc/awstats                                          # 設定ファイルを格納するディレクトリを作成します
# cd    /etc/awstats
# unzip -ajo /usr/local/src/awstats70t_jpn.zip AWStats70t_Jpn/tools/utf8_decode.pl
# chmod +x utf8_decode.pl

# cp /home/www/awstats/awstats.model.conf awstats.www.system-act.com.conf

# 作成するファイル名は、
#   awstats              実行CGIファイル (awstats.pl) のファイルボディ名
#   www.system-act.com   apacheのバーチャルホスト設定で指定した環境変数 AWSTATS_CONFIG の内容
#   conf                 固定
# から構成されます。

# vi awstats.www.system-act.com.conf
----------(vi ここから)----------
     :
LogFile="./utf8_decode.pl < /var/log/httpd/vhosts/system-act.com/www/access_log |"
(Apacheのログファイルを指定します。ログの記録形式は combined にしておきます)
     :
SiteDomain="www.system-act.com"                               # 分析対象ウェブサーバのドメイン名
     :
HostAliases="localhost 127.0.0.1"                             # SiteDomain以外に分析対象とするホスト名
     :
DNSLookup=1
(ドメイン/国別などの統計情報を取得するため、DNSの逆引きを行います)
     :
DirData="/home/awstats"                                       # 分析結果などのファイルを格納するディレクトリ
     :
DirCgi="/awstats"                                             # 実行CGIファイル (awstats.pl) の存在するディレクトリ
     :
DirIcons="/awstats/icon"                                      # アイコンファイルの存在するディレクトリ
     :
AllowFullYearView=3                                           # 年間統計の表示を許可します----------(vi ここまで)----------

# cp /home/www/awstats/awstats.model.conf awstats.www.nekojara.com.conf
# vi awstats.www.nekojara.com.conf
----------(vi ここから)----------
     :
LogFile="./utf8_decode.pl < /var/log/httpd/vhosts/nekojara.com/www/access_log |"
     :
SiteDomain="www.nekojara.com"
     :
HostAliases="localhost 127.0.0.1"
     :
DNSLookup=1
     :
DirData="/home/awstats"
     :
DirCgi="/awstats"
     :
DirIcons="/awstats/icon"
     :
AllowFullYearView=3----------(vi ここまで)----------

分析ファイルの作成

初回のみ、logrotate されたファイルから分析ファイルを作成します。
# cd /etc/awstats
# for HOST in \
>   "system-act.com" \
>   "nekojara.com"
> do
>   echo "\$Myhost = \"www\.${HOST//\./\.}\";" > awstats_host.pl
>   for NUM in $(seq 4 -1 1)
>   do
>     ./utf8_decode.pl < /var/log/httpd/vhosts/$HOST/www/access_log.$NUM > access_log_utf8
>     nice -n 19 /home/www/awstats/awstats.pl -config=www.$HOST -update -LogFile=access_log_utf8
>   done
>   nice -n 19 /home/www/awstats/awstats.pl -config=www.$HOST -update
> done

cron に登録し、1時間ごとに分析ファイルが更新されるようにします。
# vi /etc/cron.hourly/awstats
----------(vi ここから)----------
#!/bin/sh

cd /etc/awstats
for HOST in \
  "www.system-act.com" \
  "www.nekojara.com"
do
  echo "\$Myhost = \"${HOST//\./\.}\";" > awstats_host.pl
  nice -n 19 /home/www/awstats/awstats.pl -config=$HOST -update > /dev/null
done
----------(vi ここまで)----------

# chmod +x /etc/cron.hourly/awstats

logrotate 時に分析ファイルが更新されるようにします。
# vi /etc/logrotate.d/httpd
----------(vi ここから)----------
     :
  postrotate
    /usr/local/apache2/bin/apachectl graceful || true
    cd /etc/awstats
    for HOST in \
      "system-act.com" \
      "nekojara.com"
    do
      echo "\$Myhost = \"www\.${HOST//\./\.}\";" > awstats_host.pl
      ./utf8_decode.pl < /var/log/httpd/vhosts/$HOST/www/access_log.1 > access_log_utf8
      nice -n 19 /home/www/awstats/awstats.pl -config=www.$HOST -update -LogFile=access_log_utf8 > /dev/null
    done----------(vi ここまで)----------

ブラウザからのアクセス

ブラウザから インストールしたウェブサーバーのホスト名/awstats/ にアクセスすると、認証ダイアログが表示されます。
Digest認証ファイルの作成で指定したユーザー名とパスワードを入力すると、AWStatsの解析結果画面が表示されます。

フィードバック

記事の内容についてのご質問、ご指摘、その他ご意見等は、Weblog/Twitter にて受け付けております。

System House ACT 公式ブログ内記事 : ウェブサーバーアクセスログ解析 AWStats

トラックバックまたはコメントにてお寄せください。

Twitter では .@systemact 宛につぶやいてください。
また、こちら から、この記事についてつぶやくことができます。
a System House to build an Accounting system by the Computer Technology