さくらインターネットで複数ドメインのアクセス解析(Awstats)

※以前別の場所で書いた文章を備忘的に書き記しておきます。

【投稿年月日】2011-10-21 【ジャンル】独り言

 さくらのマネージドサーバに変更して概ね満足なのだが不満もある。アクセス解析が貧弱なのだ。標準で「Webalizer」が利用できるが、素っ気ないインターフェイスの上に、ドメインごとにアクセス解析をしてくれない。せっかく専有サーバを用意し、ドメインを一元管理しているのに、これでは悲しすぎる。

 と言うことで、見やすさに定評のある「Awstats」を導入することにした。

AWStats Ver.7.0 完全日本語版
www.starplatinum.jp/awstats/awstats70/

導入手順

  1. コンパネの「アクセスログの設定」で「ホスト名の情報」が「残す」になっていることを確認する。
  2. Awstatsをダウンロード後に解凍すると「docs」「tools」「wwwroot」の3ディレクトリが現れる。この中で使うのは「wwwroot」内にある「cgi-bin」と「icon」ディレクトリ。
  3. 「cgi-bin」ディレクトリを「awstats」にリネーム。
  4. 「awstats」ディレクトリの中の「awstats.model_jp.conf」をエディタで開いて以下の箇所を編集。「SiteDomain」と「DirData」については先頭に「#」を付けて無効化することに注意。
    LogFile="/home/[ユーザー名]/log/access_log_%YYYY-24%MM-24%DD-24"
    LogFormat="%virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaqu ot"
    #SiteDomain=""
    DNSLookup=2
    #DirData="."
    DirCgi="/awstats"

  5. その上でファイルの先頭に次のものを追加した上で「awstats.[ドメイン名].conf」としてリネームして保存。
    SiteDomain="[ドメイン名]"
    DirData="/home/[ユーザー名]/log/awstats/[ドメイン名]"

  6. 4.と5.の作業をアクセス解析の対象とするドメイン(サブドメイン)ごとに繰り返し行なう。
  7. 「awstats」ディレクトリに「.htaccess」ファイルを新規作成して「AddHandler cgi-script pl」を追加。改行を忘れずに。
  8. FTPで「awstats」と「icon」ディレクトリを「/home/[ユーザー名]/www/」にアップロード。全てのperlファイル(.pl)のパーミッションを「0705」に変更。
  9. FTPで「/home/[ユーザー名]/log/」に移動して「awstats」ディレクトリを作成。さらに「awstats」ディレクトリ内に、アクセス解析の対象とするドメイン(サブドメイン)名のディレクトリを必要だけ作成。
  10. Awstatsが表示されるかを確認するために以下のページにアクセス。「http://[ユーザー名].sakura.ne.jp/awstats/awstats.pl」
  11. 無事表示されていたら次はアクセス解析データの取得。SSHで以下のコマンドを叩く。取り合えず試しにドメイン1個だけ。
    perl /home/[ユーザー名]/www/awstats/awstats.pl -config=[ドメイン名] -update

  12. 以下のページにアクセスしてアクセス解析結果が表示されるか否かを確認する。「http://[ユーザー名].sakura.ne.jp/awstats/awstats.pl?config=[ドメイン名]」
  13. 無事表示されていたら、アクセス解析の対象とするドメイン(サブドメイン)ごとにSSHで11.のコマンドを叩く。
  14. コンパネの「ファイルマネージャー (旧バージョン)」から「awstats」ディレクトリのアクセス制限を行なう。(「>> ウェブアクセスの設定」をクリックしてから設定)
  15. cronを設定する。毎日1時頃に下記のようなスクリプトを実行。
    #!/bin/sh
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
    perl /home/[ユーザー名]/www/awstats/awstats.pl -config=[ドメイン名1] -update
    perl /home/[ユーザー名]/www/awstats/awstats.pl -config=[ドメイン名2] -update

  16. 「awstats」ディレクトリに「index.html」等を設置し、フレームなどを利用してドメインごとに簡単にアクセス解析できるようにする。

実際に運用してみて

 フレーム&JavaScriptを使うことで、ドメインごとのアクセス解析結果をスムーズに切り替えることが可能になった。アクセス制限をしているので、ついでにWebメールや管理画面(コンパネ)、phpinfo、eAcceleratorへのリンクも付けた。
Awstats

全サイトのアクセス解析結果の取得方法

 全サイトの解析結果が欲しい場合の手順。大きな負荷がかかる可能性あり。
  1. 設定ファイル「awstats.[ドメイン名].conf」(※どれでもいいです)を「awstats.[ユーザー名].sakura.ne.jp.conf」にリネームして別名保存。
  2. その上でファイルの先頭を
    SiteDomain="[ユーザー名].sakura.ne.jp"
    DirData="/home/[ユーザー名]/log/awstats/[ユーザー名].sakura.ne.jp"
    に、「HostAliases」を
    HostAliases="localhost 127.0.0.1 REGEX[\.(com|net)$]"
    等に変更した上で上書き保存。「REGEX[\.(com|net)」の正規表現部分は所有するドメインによって「|jp」等を追加するなど適宜変更。
  3. FTPで「/home/log/awstats/」に移動して、「[ユーザー名].sakura.ne.jp」ディレクトリを作成。
  4. 「[ユーザー名].sakura.ne.jp」に変更した上で、SSHで導入手順11.のコマンドを叩く。
  5. 導入手順15.のcronにも追加。

注意点

 共有サーバで、かつ、アクセス数が多い場合は、cron設定に注意が必要。サーバへの負担がかかるため、他者へ迷惑がかかったり、場合によってはペナルティをくらうかもしれない。中でもawstats設定で「DNSLookup=1」にするのはマズいような気がする(規定値は2だが、日本語版設定ではなぜか1になっている)。
 導入手順11.のコマンドをSSHで叩けば負荷の度合いが分かるので、ドメイン(サブドメイン)ごとに確認した方がいいと思われる。なお、cronの実行ファイルの最初の方に
echo "`date` : Start Awstats cron." >> $HOME/log/cron.log
を、末尾に
echo "`date` : End Awstats cron." >> $HOME/log/cron.log
を加えれば、cronのログを取ることが可能。

参考サイト

さくらにAWStatsをインストール(アクセス解析ツール)
web.okanos.com/employment/awstats.shtm
AWStatsインストール – さくらインターネット
boozywoozy.net/10
さくらインターネットで複数ドメイン時のAwstats
blog.livedoor.jp/alcjp/archives/1037206.html
 

EDIUNET | PHP/MySQL | 独り言 | 提供サービス | JavaScript