「AWStats」の設定

「Apache」のログ解析には「Webalizer」がありますが、「AWStats」の方がより詳細な結果を出力してくれます。
ただ、「Perl」で動作しますので、「Webalizer」より動作が重いです。
また、「Apache」のログ形式がcombinedである必要があります。

「AWStats」のインストール

「AWStats」のソースファイルをダウンロードし、インストールします。

Solaris# mkdir /var/apache2/awstats <= 「AWStats」用のディレクトリを作成
Solaris# mkdir /usr/local/src/awstats <= 作業用ディレクトリの作成
Solaris# chmod 777 /usr/local/src/awstats <= 作業用ディレクトリのパーミッション変更
Solaris# cd /usr/local/src/awstats <= 作業用ディレクトリへ移動
Solaris# wget http://jaist.dl.sourceforge.net/sourceforge/awstats/awstats-6.4.tgz
 <= 「AWStats」のソースをダウンロード
Solaris# gunzip -c awstats-6.4.tgz | tar xf - <= ダウンロードしたファイルの展開
Solaris# cp -r /usr/local/src/awstats/awstats-6.4/wwwroot/* /var/apache2/awstats/
 <= 必要なファイルのコピー
Solaris# cp -r /usr/local/src/awstats/awstats-6.4/tools /var/apache2/awstats/
 <= ツールのコピー
ログファイルの文字化け対策

ログファイルの検索サイトからの文字列が文字化けするのを防ぐため、文字コードを変換します。
ここでは、nayuta氏が公開されている conv_weblog_to_utf8.pl を利用させて頂きました。
スクリプトの保存先は
/var/apache2/awstats/cgi-bin
としました。
また、スクリプトのperlのパスが
/usr/local/bin/perl
になっていますが、Solarisのデフォルトでは
/usr/bin/perl
にperlがあります。
その為、スクリプトの先頭でパスを変更するか、/usr/local/bin/perlにリンクをはる必要があります。
ここでは、リンクをはるようにしました。

Solaris# ln -s /usr/bin/perl /usr/local/bin/perl
 <= スクリプト用のリンクの作成
Solaris# chmod 755 /var/apache2/awstats/cgi-bin/conv_weblog_to_utf8.pl
 <= ダウンロードしたファイルに実行権限を付与

Solaris# /var/apache2/awstats/cgi-bin/conv_weblog_to_utf8.pl \
< /var/apache2/logs/access_log > /var/apache2/logs/jaccess_log
 <= ログファイルの文字コードを変換
「AWStats」の設定

「AWStats」の設定

Solaris# cp /var/apache2/awstats/cgi-bin/awstats.model.conf \
/var/apache2/awstats/cgi-bin/awstats.apache2.conf
 <= サンプル設定ファイルのコピー
Solaris# vi /var/apache2/awstats/cgi-bin/awstats.apache2.conf <= 設定ファイルの編集
LogFile="/var/log/httpd/mylog.log"
↓
LogFile="/var/apache2/logs/jaccess_log" <= 文字コードを変換したログファイルを指定

SiteDomain=""
↓
SiteDomain="crimson-snow.net" <= ドメインを指定

DNSLookup=2
↓
DNSLookup=1 <= DNSの逆引きを行う

DirData="."
↓
DirData="/var/lib/awstats"
 <= AWStatsが保持する分析結果等のファイルを格納するディレクトリを指定
 (絶対パスもしくはawstats.plからの相対パス)

DirCgi="/cgi-bin"
↓
DirCgi="/awstats/cgi-bin"
 <= awstats.plが格納されているディレクトリを指定
 (絶対URLもしくはWWWサーバのルートディレクトリからの相対URL)

DirIcons="/icon"
↓
DirIcons="/awstats/icon"
 <= アイコンファイルが格納されているディレクトリを指定
 (絶対URLもしくはWWWサーバのルートディレクトリからの相対URL)

AllowToUpdateStatsFromBrowser=0
↓
AllowToUpdateStatsFromBrowser=1 <= 更新ボタンを設置する

AllowFullYearView=2
↓
AllowFullYearView=3 <= 年間統計情報を出力出来るように許可する

Lang="auto"
↓
Lang="jp" <= 統計情報を日本語にする

日本の検索エンジンの追加

Solaris# vi /var/apache2/awstats/cgi-bin/lib/search_engines.pm <= 設定ファイルの編集
@SearchEnginesSearchIDOrder_list1=(
以下を追加
'66\.249\.(89\.99|93\.104)',
'66\.102\.(7\.104|9\.104|11\.104)',
'64\.233\.(161\.104|179\.104|167\.104|183\.104|187\.104)',
'72\.14\.(203|207|209|221|235|253)\.104',
'209\.85\.(173|175)\.104',
'216\.239\.(39\.104|41\.104|51\.104|57\.104|59\.104)',
'search\.biglobe\.ne\.jp',
'goo\.ne\.jp',
'nifty\.com',
'search\.msn\.co\.jp',
'search\.odn\.ne\.jp',
'naver\.co\.jp',
'fresheye\.com',
'tocc\.co\.jp',
'infoseek\.co\.jp',
'cache\.yahoofs\.jp',
'ask\.jp',
'search\.livedoor\.com',
'www\.ceek\.jp',
ここまで

%SearchEnginesHashID = (
以下を追加
'66\.249\.(89\.99|93\.104)','google',
'66\.102\.(7\.104|9\.104|11\.104)','google',
'64\.233\.(161\.104|179\.104|167\.104|183\.104|187\.104)','google',
'72\.14\.(203|207|209|221|235|253)\.104','google',
'209\.85\.(173|175)\.104','google',
'216\.239\.(39\.104|41\.104|51\.104|57\.104|59\.104)','google',
'search\.biglobe\.ne\.jp','biglobe',
'goo\.ne\.jp','goo',
'nifty\.com','nifty',
'search\.msn\.co\.jp','msn',
'search\.odn\.ne\.jp','odn',
'naver\.co\.jp','naver',
'fresheye\.com','fresheye',
'tocc\.co\.jp','tocc',
'infoseek\.co\.jp','infoseek',
'cache\.yahoofs\.jp','yahoocache',
'ask\.jp','askjp',
'search\.livedoor\.com','livedoor',
'www\.ceek\.jp','ceek',
ここまで

%SearchEnginesKnownUrl=(
以下を追加
'biglobe','q=',
'goo','MT=',
'nifty','Text=',
'msn','(q|MT)=', <= 「'msn','q=',」の部分を変更
'odn','Querystring=',
'naver','query=',
'fresheye','kw=',
'tocc','QRY=',
'yahoocache','w=',
'askjp','q=',
'livedoor','q=',
'ceek','q=',
ここまで

%SearchEnginesHashLib=(
以下を追加
'biglobe','Biglobe',
'goo','Goo',
'nifty','Nifty',
'odn','ODN',
'naver','Naver',
'fresheye','Fresheye',
'tocc','TOCC/Search',
'yahoocache','Yahoo (Cache)',
'askjp','Ask Jeeves Japan',
'livedoor','Livedoor',
'ceek','CEEK.JP',
ここまで

修正した内容が正しいかの確認をします。

Solaris# perl -c /var/apache2/awstats/cgi-bin/lib/search_engines.pm
/var/apache2/awstats/cgi-bin/lib/search_engines.pm syntax OK

ブラウザの追加

日本独自のブラウザである「Sleipnir」と「Lunascape」を追加します。

Solaris# vi /var/apache2/awstats/cgi-bin/lib/browsers.pm <= 設定ファイルの編集
@BrowsersSearchIDOrder = (
以下を追加
'sleipnir',
'lunascape',
ここまで

%BrowsersHashIDLib = (
以下を追加
'sleipnir','Sleipnir',
'lunascape','Lunascape',
ここまで

%BrowsersHashIcon = (
以下を追加
'sleipnir','sleipnir',
'lunascape','lunascape',
ここまで

上記の設定の「%BrowsersHashIcon」で指定したアイコンを
/var/apache2/awstats/icon/browser
に用意します。
なお、アイコンの形式は「png」にします。
次に、「awstats.pl」を修正します。

Solaris# vi /var/apache2/awstats/cgi-bin/awstats.pl <= 設定ファイルの編集
my $regnotie=qr/webtv|omniweb|opera/i;
↓
my $regnotie=qr/webtv|omniweb|opera|sleipnir|lunascape/i; <= 「Sleipnir」と「Lunascape」の追加

修正した内容が正しいかの確認をします。

Solaris# perl -c /var/apache2/awstats/cgi-bin/lib/browsers.pm <= 「browsers.pm」ファイルの確認
/var/apache2/awstats/cgi-bin/lib/browsers.pm syntax OK

Solaris# perl -c /var/apache2/awstats/cgi-bin/awstats.pl <= 「awstats.pl」ファイルの確認
/var/apache2/awstats/cgi-bin/awstats.pl syntax OK

ロボットの追加

日本のロボットを追加します。

Solaris# vi /var/apache2/awstats/cgi-bin/lib/robots.pm <= 設定ファイルの編集
@RobotsSearchIDOrder_list1 = (
以下を追加
'hatena',
'naver',
'bookmark',
ここまで

%RobotsHashIDLib   = (
以下を追加
'hatena','Hatena Bookmark',
'naver','NaverBot',
'bookmark','Bookmark Renewal Check Agent',
ここまで

修正した内容が正しいかの確認をします。

Solaris# perl -c /var/apache2/awstats/cgi-bin/lib/robots.pm
/var/apache2/awstats/cgi-bin/lib/robots.pm syntax OK

出力結果の表示の修正

出力結果の表示で年月の表示がおかしい部分がありますので、修正します。

Solaris# vi /var/apache2/awstats/cgi-bin/awstats.pl <= plファイルの修正
else { print "$Message[5] $MonthNumLib{$MonthRequired} $YearRequired"; }
↓
else { print "$YearRequired"."$Message[6]".$MonthNumLib{$MonthRequired}; } <= 変更

print ($MonthRequired eq 'all'?"$Message[6] $YearRequired":"$Message[5] ".$MonthNumLib{$MonthRequired}." $YearRequired");
↓
print ($MonthRequired eq 'all'?"$YearRequired $Message[6]":$YearRequired."$Message[6] ".$MonthNumLib{$MonthRequired});
 <= 変更

ディレクトリの作成

AWStatsが保持する分析結果等のファイルを格納するディレクトリを作成します。

Solaris# mkdir /var/lib/awstats

オーナの変更

「AWStats」の設定で AllowToUpdateStatsFromBrowser を 1 にしましたが、
これは、出力結果に更新ボタンを設置し、ブラウザから最新のログの情報に更新します。
ただ、Apacheのユーザ権限で更新しますので、パーミッションエラーが起きます。
そこで、必要なディレクトリのオーナを変更します。
この作業は AllowToUpdateStatsFromBrowser を 0 のままに設定していれば必要ありません。
ただし、当サイトでは文字コードを変換したログファイルを用いている為、
更新ボタンを押しても最新のログファイルを参照してはくれません。

Solaris# chown webservd /var/lib/awstats <= 分析結果等の格納先のオーナをwebservdに変更
「Apache」の設定

「AWStats」の設置されているディレクトリにアクセスできるように設定します。

Solaris# vi /etc/apache2/httpd.conf <= 設定ファイルの編集
以下を追加
Alias /awstats "/var/apache2/awstats/"

<Directory "/var/apache2/awstats">
    AllowOverride None
    Options Includes ExecCGI FollowSymLinks
    Order allow,deny
    Allow from all
    AddHandler php5-script .php
    AddHandler image/gif .gif
    AddHandler image/jpeg .jpeg .jpg
    AddHandler image/png .png
    AddHandler text/html .html .htm
</Directory>

「Apache」を再起動し、設定を反映させます。

Solaris# svcadm restart svc:/network/http:apache2
「AWStats」の実行
Solaris# /var/apache2/awstats/cgi-bin/awstats.pl -config=apache2 -update

http://サーバのIPアドレス/awstats/cgi-bin/awstats.pl?config=apache2
でアクセスできれば問題ありません。

出力結果のHTML化

上記のままの設定で問題ありませんが、アクセスするたびにCGIスクリプトが実行されますので、 表示が遅く、サーバにも負荷がかかります。
そこで、出力結果をHTML化します。

Solaris# /var/apache2/awstats/tools/awstats_buildstaticpages.pl \
-awstatsprog=/var/apache2/awstats/cgi-bin/awstats.pl \
-config=apache2 -update -lang=jp \
-dir=/var/apache2/awstats

http://サーバのIPアドレス/awstats/awstats.apache2.html
でアクセスできれば問題ありません。

HTML化の自動実行

出力結果のHTML化を行うスクリプトを作成し、cronに登録して自動的に実行するようにします。
また、トップページをindex.htmlとなるようにします。

Solaris# vi awstats.sh <= スクリプトファイルの新規作成
#!/sbin/sh

MV='/usr/bin/mv'
AWSTATS='/var/apache2/awstats/cgi-bin/awstats.pl'
BUILDSTATIC='/var/apache2/awstats/tools/awstats_buildstaticpages.pl'
CONV='/var/apache2/awstats/cgi-bin/conv_weblog_to_utf8.pl'
DATADIR='/var/apache2/awstats'

$CONV < /var/apache2/logs/access_log > /var/apache2/logs/jaccess_log
$AWSTATS -config=apache2 -update > /dev/null
$BUILDSTATIC -awstatsprog=$AWSTATS \
-config=apache2 -update -lang=jp \
-dir=$DATADIR > /dev/null
$MV $DATADIR/awstats.apache2.html $DATADIR/index.html


Solaris# chmod 755 awstats.sh <= スクリプトファイルに実行権限を付加
Solaris# crontab -e <= cronの編集
00 00 * * * /root/awstats.sh <= 追加
▲ページのトップへ