̃Gg[͂ĂȃubN}[Nɒlj

apache :: AWStats / インストール・設定



「AWStats 6.6完全日本語版」を利用させていただきました。
http://www.bflets.dyndns.org/Tools/AWStatsJpn.html


wget & 展開

% wget http://www.bflets.dyndns.org/AWStats66_Jpn.tar.gz
% tar xvzf AWStats66_Jpn.tar.gz


今回はドキュメントルートに設置します。
ドキュメントルート:/var/www/htdocs

% cp -r AWStats66_Jpn /var/www/htdocs

(ドキュメントルートはサーバー環境により異なります)


設定ファイルの設置

% cd /var/www/htdocs/AWStats66_Jpn/wwwroot/cgi-bin
% cp awstats.model_jp.conf awstats.example.com.conf
解析対象ドメインが「example.com」の場合


設定ファイルの編集

% vi awstats.example.com.conf
SiteDomain="example.com"
DirData="./awstats_db"
DirCgi="/AWStats66_Jpn/wwwroot/cgi-bin" # ブラウザから見て(URLとしてのフルパス)
DirIcons="/AWStats66_Jpn/wwwroot/icon"  # ブラウザから見て(URLとしてのフルパス)
SkipHosts="192.168.0.1"  # マッチするクライアントからのアクセスを処理対象外とします
SkipFiles="/badpage.php" # 特定のURLへのアクセスを処理対象外とします
  • SkipHosts に複数指定する場合はスペースで区切ります。正規表現も使えます。
    • 例: “127.0.0.1 REGEX[^192\.168\.] REGEX[^10\.]”
  • SkipFiles に複数指定する場合はスペースで区切ります。正規表現も使えます。
    • 例: ”/badpage.php /page.php?param=x REGEX[^\/excludedirectory]”


#LogFormat=1
LogFormat = "%virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
  • ヴァーチャルホストで複数のサイトを運用している場合で、1つの access_log にログを書き出している時は、上記のように「LogFormat」を変更します。


データディレクトリ(作業ディレクトリ)の作成

% mkdir -m 777 /var/www/htdocs/AWStats66_Jpn/wwwroot/cgi-bin/awstats_db


utf8_decode.pl の 1行目の path を正しく設定します。

% vi /var/www/htdocs/AWStats66_Jpn/wwwroot/cgi-bin/utf8_decode.pl
#!/usr/bin/perl


Jcode.pm の設置
http://openlab.ring.gr.jp/Jcode/index-j.html

% wget http://openlab.jp/Jcode/Jcode-2.07.tar.gz
% tar xvzf Jcode-2.07.tar.gz
% cp Jcode-2.07/Jcode.pm /var/www/htdocs/AWStats66_Jpn/wwwroot/cgi-bin

検索エンジン経由アクセスの検索キーワードのデコードで必要になります。


Apacheのログフォーマットが combined であるか確認
(デフォルトのログフォーマットは common です)

% vi /path/to/httpd.conf
 :
#CustomLog /var/log/apache/access_log common
 :
CustomLog /var/log/apache/access_log combined
 :
  • common の行をコメントアウトして、combined を有効にする。


もし、設定を変更した時は、apache のリロードを行う。

% sudo apachectl graceful


以上で、設置は完了です。


例)2009年03月19日のアクセスログを処理

YYYYMMDD=20090319; \
cd /var/www/htdocs/AWStats66_Jpn/wwwroot/cgi-bin; \
./utf8_decode.pl < /var/log/apache/example.com/access_log.${YYYYMMDD} > /var/tmp/access_log.${YYYYMMDD}.utf8; \
./awstats.pl -config=example.com -update -LogFile=/var/tmp/access_log.${YYYYMMDD}.utf8; \
rm -f /var/tmp/access_log.${YYYYMMDD}.utf8

上記コマンドを cron に設定して自動化しておくと楽になります。
アクセスの少ない AM5:00 頃、前日のアクセスログを処理させます。


ブラウザから閲覧

http://example.com/AWStats66_Jpn/wwwroot/cgi-bin/awstats.pl?config=example.com

※.最低限、Bacsic認証を設定しておく。
今回の場合は AWStats66_Jpn ディレクトリ。



CGIWrap Error: Access Control

CGIWrap Error: Access Control

CGIWrap access control mechanism denied execution of this script for the following reason:

Supplementary GID of script userid less than configured minimum. 

ブラウザでアクセスした際、上記のような「Supplementary GID of script userid less than configured minimum.」のエラーが出る場合は、CGIWrap を解除してしまいましょう。
※ CGIWrap を解除しても問題ない場合ですが。


CGIWrap の解除

apache の httpd.conf や vhosts.conf(/etc/httpd/conf/vhosts/site1 等) で

AddHandler cgi-wrapper .cgi
AddHandler cgi-wrapper .pl

上記のような記述を見つけたら、コメントアウトして下記のように記述します。

#AddHandler cgi-wrapper .cgi
#AddHandler cgi-wrapper .pl
<Directory /home/.sites/28/site1/web>
    Options +ExecCGI
    AddHandler cgi-script .pl .cgi
</Directory>
  • /home/.sites/28/site1/web の箇所は環境に合わせます


修正が終わったら、apache のリロードを忘れずに

 % /etc/init.d/httpd reload



server/apache/awstats/install.txt