自(己満足)宅サーバー

このページの最終更新日
2009”N08ŒŽ15“ú
| HOME | 新着情報 | リンク集 | 管理人へメール |
サイト内検索

Awstats でアクセス解析

アクセス解析にはいろいろな方法があるみたいですがじんたろうは Awstats を導入してみました。
ただ本家版をそのまま使うのではなく Awstats完全日本語版 というのを導入してみました。
導入したバージョンは AWStats 6.6完全日本語版 です。
基本的に こちらのページを参考にやってみました。
webからは更新処理はさせずにcronによって定時処理させるようにしました。
webから見れるのは静的htmlのみにする設定です。
出来上がったページはこちらです

Awstats 6.6 完全日本語版 のダウンロードとディレクトリ配置

例として「jintaro」のpublic_htmlディレクトリを解析対象にする事とします。
jintaroでログインして実行します。

[jintaro@jintaro ~]$ wget http://www.bflets.dyndns.org/AWStats66_Jpn.tar.gz

00:13:12 (1.21 MB/s) - `AWStats66_Jpn.tar.gz' を保存しました [708617/708617]

[jintaro@jintaro ~]$ tar xzvf AWStats66_Jpn.tar.gz
[jintaro@jintaro ~]$ rm -f AWStats66_Jpn.tar.gz 
[jintaro@jintaro ~]$ mv AWStats66_Jpn  awstats66_jpn
[jintaro@jintaro ~]$ mkdir public_html/awstats

[jintaro@jintaro ~]$ cp -r awstats66_jpn/wwwroot/icon  public_html/awstats
[jintaro@jintaro ~]$ cd awstats66_jpn
[jintaro@jintaro awstats66_jpn]$ cp awstats.cron  awstats.jintaro.cron
[jintaro@jintaro awstats66_jpn]$ cd wwwroot/cgi-bin
[jintaro@jintaro cgi-bin]$ cp awstats.model_jp.conf awstats.jintaro.conf
Awstats完全日本語版を
ダウンロード


ダウンロードしたファイルを展開
ダウンロードしたファイルを削除
紛らわしいので小文字の名前に変更
Awstats用にwebからアクセスできる
ディレクトリを作成
上記ディレクトリにiconをコピー
ディレクトリ移動
定時更新スクリプトを別名でコピー
ディレクトリ移動
Awstats本体の設定ファイルを
別名でコピー

Awstats本体の設定ファイルの編集

Awstats本体の設定ファイル awstats.jintaro.conf をUTF-8が読み書きできるエディタで開きます。
設定どうりなら /home/jintaro/awstats66_jpn/wwwroot/cgi-bin にあります。
(サーバーの文字コードがEUC-JPの場合 vi で開くと文字化けします。)
以下の箇所を修正します。

LogFile="/var/log/httpd/mylog.log"
↓変更
LogFile="/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/access_log.utf8"

SiteDomain=""
↓変更
SiteDomain="jintaro.com"

DirCgi="/cgi-bin"
↓変更
DirCgi="."

DirIcons="/icon"
↓変更
DirIcons="./icon"

AllowFullYearView=3
↓変更
AllowFullYearView=1

DetailedReportsOnNewWindows=1
↓変更
DetailedReportsOnNewWindows=0

定時更新用スクリプトの編集

定時更新用スクリプトファイル awstats.jintaro.cron をUTF-8が読み書きできるエディタで開きます。
設定どうりなら /home/jintaro/awstats66_jpn にあります。
(サーバーの文字コードがEUC-JPの場合 vi で開くと文字化けします。)
以下の箇所を修正します。
修正したファイル全文をここに置いてます。(UTF-8です)

system("/var/www/cgi-bin/AWStats66/utf8_decode.pl < /var/log/httpd/access_log > /var/www/cgi-bin/AWStats66/access_log.utf8");
↓変更
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/utf8_decode.pl < /home/jintaro/httpd_logs/access.log > /home/jintaro/awstats66_jpn/wwwroot/cgi-bin/access_log.utf8");
                                      

open(LOG,"+</var/log/httpd/access_log");
truncate(LOG,0);
close(LOG);
↓変更(注1)
#open(LOG,"+</home/jintaro/httpd_logs/access.log");
#truncate(LOG,0);
#close(LOG);

system("/var/www/cgi-bin/AWStats66/awstats.pl -config=awstats.conf -update > /dev/null");
↓変更
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -update > /dev/null");

system("/var/www/cgi-bin/AWStats66/awstats.pl -config=awstats.conf -output > /var/www/html/AWStats66.html");
↓変更(↑1行を↓の21行に)
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=alldomains -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.alldomains.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=allhosts -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.allhosts.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=lasthosts -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.lasthosts.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=unknownip -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.unknownip.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=alllogins -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.alllogins.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=lastlogins -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.lastlogins.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=allrobots -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.allrobots.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=lastrobots -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.lastrobots.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=urldetail -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.urldetail.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=urlentry -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.urlentry.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=urlexit -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.urlexit.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=browserdetail -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.browserdetail.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=osdetail -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.osdetail.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=unknownbrowser -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.unknownbrowser.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=unknownos -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.unknownos.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=refererse -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.refererse.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=refererpages -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.refererpages.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=keyphrases -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.keyphrases.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=keywords -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.keywords.html");
system("/home/jintaro/awstats66_jpn/wwwroot/cgi-bin/awstats.pl -config=jintaro -output=errors404 -staticlinks > /home/jintaro/public_html/awstats/awstats.jintaro.errors404.html");

system("chgrp ryu /var/www/html/AWStats66.html");
system("chown ryu /var/www/html/AWStats66.html");
↓変更(↑の2行を↓の1行に)
system("chown -R jintaro:jintaro /home/jintaro/public_html/awstats");

このスクリプト内容は

  1. Apacheのログを utf_decode.pl によって access_log.utf8 というログに変換
  2. Apacheのログを切り詰める(消去)
  3. Awstatsの更新処理を走らせる(解析するログは access_log.utf8)
  4. Awstatsで21個のhtmlファイルを作成
  5. 作成したhtmlファイルの所有者変更

という感じです。

(注1)Apacheが作るオリジナルのログを切り詰めたい場合は先頭の # を外します。
切り詰めを行ったほうが処理が早くなるようです。

utf8_decode.plの編集

utf8_decode.pl をUTF-8が読み書きできるエディタで開きます。
設定どうりなら /home/jintaro/awstats66_jpn/wwwroot/cgi-bin にあります。
(サーバーの文字コードがEUC-JPの場合 vi で開くと文字化けします。)
以下の箇所を修正します。

$Myhost = "bflets\.dyndns\.org";
↓変更
$Myhost = "jintaro\.com";

Jcode.pmのインストール

yumでjcode.pmをインストールします。
rootで作業します。

[root@jintaro ~]# yum -y install perl-Jcode
中略
Installed: perl-Jcode.noarch 0:2.06-5.fc8
Complete!

[root@jintaro ~]# rpm -qa | grep Jcode
perl-Jcode-2.06-5.fc8
Jcodeをインストール




インストールされているか確認
←インストールされている

定時更新スクリプトの実行

修正したスクリプトを実行してみます。(当サーバーの環境で2分ぐらいかかります。)

[jintaro@jintaro ~]$ awstats66_jpn/awstats.jintaro.cron

public_html/awstats に 21個のhtmlファイルが出来ていたら成功です。
public_html/awstats/awstats.jintaro.html に Webからアクセスしてみましょう。

このスクリプトを自動実行するようにcron.hourlyからスクリプトへリンクを張ります。(1日に1回の場合はcron.daily)
rootで作業します。

[root@jintaro ~]# cd /etc/cron.hourly
[root@jintaro cron.hourly]# ln -s /home/jintaro/awstats66_jpn/awstats.jintaro.cron
ディレクトリ移動
cron.hourlyにリンク作成

備考

Apacheのログ形式がcombinedになっている必要があるようです。
httpd.conf でログ形式を
CustomLog /home/jintaro/httpd_logs/access.log combined
としておきます。

Apacheがつくる元のログをloglotateにて切り詰めている場合は
/etc/logrotate.dにあるApache用loglotateの内容を次の様にしておきます。
こうしておかないとawstatsが処理前のログをloglotateにローテーションされると
awstatsはその分を解析しなくなってしまいます。

/home/jintaro/httpd_logs/access.log 
{
    missingok
    notifempty

    prerotate
        /home/jintaro/awstats66_jpn/awstats.jintaro.cron
    endscript

    sharedscripts

    postrotate
        /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}





ローテーション前に
awstats定時更新用スクリプトを実行
このページの上へ
HOMEへ
Copyright (C) 2007 じんたろう
全ページリンクフリーです