jlbhs.gif (6180 バイト) jlb.jp/hsinstail8s/aws55

TL8S に AWStats Ver5.5 を導入する。
 2003/3/12

 

<凡例>
赤字=入力する文字列
青字=表示される文字列(コンソール画面)
紫字=エディタ等で入力する文字列
  使わなくなった古い記述。


■TL7Sの時にAwstats5のインストールを記載しましたが、その後も少ずつ本家のバージョンアップについていってました。
また、RH8.0の時にはAWStats5.4でしたが、今回は5.5に上がってましたので、TL8Sに戻ってきたこともあり余計な記述を整理して、改めて書き出してみました。

1.AWStats Ver 5.5 のインストール

FTPで /usr/local/src/aws55 にファイルをコピーした後、インストールする想定で記述しています。

[root@hs8 root]# cd /usr/local/src/aws55

[root@hs8 aws55]# tar zxvf awstats-5.5.tgz

cd awstats-5.5/

[root@hs8 awstats-5.5]# which perl  <--確認のみ。
/usr/bin/perl

 

2.Apache のログファイルフォーマットを "Combined" に変更する。

vi /etc/httpd/conf/httpd.conf
---------------------------------------------------------------------------

#
# CustomLog /var/log/httpd/access_log common          <== 596行目あたり # を付ける
CustomLog /var/log/httpd/access_log combined
     <== 610行目あたり # を削除

---------------------------------------------------------------------------

3.CGIディレクトリィにNobodyが書き込めるようにする。

# chmod 757 /var/www/cgi-bin/

 

4.awstats.pl をCGIディレクトリィにコピーする。

[root@hs8 awstats-5.5]# cp wwwroot/cgi-bin/awstats.pl /var/www/cgi-bin/

(パーミッションは 555 のまま)

 

5.clock/ flags/ other/ browser/ cpu/ os/ mime/をディレクトリィごと icons へコピーする。

cd wwwroot/icon/
cp -r clock/ flags/ other/ browser/ cpu/ os/ mime/ /var/www/icons/
cd ../../

 

 

6./var/www/cgi-bin に aws/ ディレクトリーを作る。

これは、動作後に展開されるサブページ等を格納しておくために設定する。

mkdir /var/www/cgi-bin/aws/

 

 

7.wwwroot/cgi-bin/lang 他を ディレクトリーをディレクトリィごと cgi-bin へコピーする。

root@hs8 awstats-5.5]# pwd
/usr/local/src/aws55/awstats-5.5     <==今の位置
[root@hs8 awstats-5.5]#

cp -r wwwroot/cgi-bin/lang/ /var/www/cgi-bin/

cp -r wwwroot/cgi-bin/lib/ /var/www/cgi-bin/
cp -r wwwroot/cgi-bin/plugins/ /var/www/cgi-bin/

cp tools/awstats_buildstaticpages.pl /var/www/cgi-bin/
cp tools/awstats_exportlib.pl /var/www/cgi-bin/

cp tools/awstats_updateall.pl /var/www/cgi-bin/
cp tools/logresolvemerge.pl /var/www/cgi-bin/
cp tools/urlaliasbuilder.pl /var/www/cgi-bin/

 

8.以前から使っていた awstats.cron と decode.pl をCGIディレクトリィにコピーする。

 

ここは移行のため、TL7Sで使っていたファイルを、あらかじめ awstats-5.5/ に移していたという想定で説明しています。
[root@hs8 awstats-5.5]# cp awstats.cron /var/www/cgi-bin/
[root@hs8 awstats-5.5]# chmod 755 /var/www/cgi-bin/awstats.cron

[root@hs8 awstats-5.5]# cp decode.pl /var/www/cgi-bin/
[root@hs8 awstats-5.5]# chmod 755 /var/www/cgi-bin/decode.pl
[root@hs8 awstats-5.5]#

 

9.awstats.model.conf を awstats.conf と名前を変えてCGIディレクトリィにコピーする。

cd wwwroot/cgi-bin/
cp awstats.model.conf /var/www/cgi-bin/awstats.conf
cd ../../


vi /var/www/cgi-bin/awstats.conf

            以下の8箇所変更します。(目安ですが、新しい行番号にしています。)
---------------------------------------------------------------------------

LogFile="/var/www/cgi-bin/access_log.euc"<--48行目あたり

DNSLookup=1    <--159行目あたり(にしないと訪問者がIPアドレスのままとなる。)

SiteDomain="jlb.jp"    <--128行目あたり

DirData= "
/var/www/cgi-bin/aws"   <--171行目あたり

DirIcons="/icons"    <--193行目あたり  を追加する。

SkipHosts="192.168.1." <--395行目あたりに追加(ローカルのアクセスを記録しない

SkipFiles="robots.txt$ favicon.ico$ /cgi-bin /icons"     <--423行目あたり /cgi-bin 「記録しない」に追加する。(臨時に「cgi-bin を記録する」設定にすることが有ります) /icons 追加しました。


Lang="auto" <--742行目あたり。  "auto" が初期値。( auto のまま使用)


---------------------------------------------------------------------------

 

10.decode.pl  の設定。 

 

前項No8.で移行(TL7Sから)したファイルを使います。(新規でもOK)

TL7Sで使用した記述でも問題無いと思いますが、ここではRH8.0で、修正したファイルを使っています。


cd /var/www/cgi-bin/

[root@hs8 cgi-bin]# vi decode.pl 
#!/usr/bin/perl -w

#
# 日本語版AWStats用検索キーワードデコードスクリプト
# Perl5.8 にあわせて、13−17行目付近を修正した。 (2003/02/11 13:40)
use Jcode;


while(<STDIN>){
        if (/http.*(biglobe|infoweb|yahoo|search\.goo|google|nifty|infoseek|msn|
odn|lycos|ocn|excite\.co\.jp)/){
                s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1)/eg;

        if (length (getcode(\$_)) >= 3){
                Jcode::convert(\$_,"euc");
        }else{
                Jcode::convert(\$_,"euc","utf8");
        }

          s/ /+/g;             #全角スペースを"+"に置換
          s/\+\|\+/+/g;         #"+|+"を"+"に置換
          s/\|/+/g;             #"|"がまだあったら"+"に置換
                s/(Windows\s98.)\s(Win\s9x)/$2/g;       # jlb 追加
                print jcode(\$_)->tr('0-9', '0-9')->tr('A-Z','A-Z')->tr('a-
z','a-z')->h2z;


        } else {
                s/(Windows\s98.)\s(Win\s9x)/$2/g;       # jlb 追加
                print;
        }
}


このスクリプト実行には、 Jcode.pm のインストールが必要です。

Jcode.pm の配布場所は
http://search.cpan.org/search?dist=Jcode
になるようです。
Jcode.pmのインストールは
[root@hs8 aws55]# tar zxvf Jcode-0.82.tar.gz
[root@hs8 aws55]# cd Jcode-0.82
perl Makefile.PL
make

make install

11.自動起動(1時間毎)の設定をする。 

cd /var/www/cgi-bin/

[root@hs8 cgi-bin]# vi awstats.cron
        ここでも以下のように RH8.0で使っていた awstats.cron を使いました。

#! /usr/bin/perl -w

# AWStats Ver.5.4用サンプルcronファイル
#
# ファイルパス等は自分の環境に合わせて書き直して下さい。

# httpのログファイルをデコードした上で一時ディレクトリに格納します。
# access_log.eucは一時的にデコードしたログを保存するファイルの名前です。

system("/var/www/cgi-bin/./decode.pl < /var/log/httpd/access_log > /var/www/cgi-bin/access_log.euc");

# awstats.plが切り詰めないオリジナルのログを切り詰めます。
open(LOG,"+</var/log/httpd/access_log");
truncate(LOG,0);
close(LOG);

# awstats.plを走らせ、htmlファイルを出力します。
# 必須ではありませんが、awstats.plを直接参照させるよりも、htmlに出力して表示す
# る方が、良好なパフォーマンスが得られます。
# 上記に書いてある awstats_buildstaticpages.pl を使うクローンだと、
# 時間がかかるため awstats.pl に変更した。2003/02/11
# awstats_buildstaticpages.pl は、初回のみ実行でよいはず。
# AWS の doc にも、そのように書いてあるみたい。
#
# system("/var/www/cgi-bin/awstats_buildstaticpages.pl -config=jlb.jp -update -awstatsprog=/var/www/cgi-bin/awstats.pl -dir=/var/www/cgi-bin/aws > /var/www/cgi-bin/awstats.1h.log");

system("/var/www/cgi-bin/awstats.pl -config=jlb.jp -update -dir=/var/www/cgi-bin/aws > /var/www/cgi-bin/awstats.1h.log");

# アクセス可能になるように出力したhtmlファイルの権限を変更
#system("chgrp apache /var/www/cgi-bin/aws/awstats.jlb.jp.html");
#system("chown apache /var/www/cgi-bin/aws/awstats.jlb.jp.html");


---------------------------------------------------------------------------

試しに、動作させて見ます。

[root@hs8 cgi-bin]# ./awstats.cron

後、クライアントから、最新のアクセス記録ができているか確認する。

クライアントからのアクセスは、 http://jlb.jp/cgi-bin/awstats.pl と成ります。
また、関連ファイルは、 /var/www/cgi-bin/aws/ に作られます。

次に、修正したファイルを、コピーしてこのスクリプトが動き出します。

[root@hs8 cgi-bin]# cp awstats.cron /etc/cron.hourly/


12.画面の文字化けを修正する。

 

Ver4.0 以降は日本語にも対応していると言うことですが、一部文字化けする部分があります。




左のPageのところは、本来は「ページ/訪問」ですが「ぺーへ/北問」と成るため、暫定で 「 Page 」 に変えてみたところです。中と右は、修正前の画面出力で、北問に化けています。


vi awstats.pl

文字化け修正に関係有りませんが、左フレームサイズを縮小しました。

$FRAMEWIDTH=200               <=== 35行目 260を200に


6392行目あたりに文字化けの原因(lc:ロワーケース)があります。


print "<TD><b>$TotalPages</b><br>($RatioPages&nbsp;".
lc($Message[56]."/" .$Message[12]).")</TD>";
print "<TD><b>$TotalHits</b><br>($RatioHits&nbsp;".
lc($Message[57]."/".$Message[12]).")</TD>";
print "<TD><b>".Format_Bytes(int($TotalBytes))."</b><br>($RatioBytes&nbsp;$Message[108]/".
lc($Message[12]).")</TD>";
print "</TR>\n";

lc(  )  部分を削除します。


root の書き込み権を設定していない(555)ので、 [ESC] : w ! で書き込みして  : q  で終了。

 

次に表現の気になるところを修正します。(思いつきで増やしていきます)

 

vi /var/www/cgi-bin/lang/awstats-jp.txt

--------------------------------------------

PageCode=
EUC-JP

message11=
一意な訪問者数

message13=
異なるキーワード

message35=最終のUpdate
 もし、1時間以上経過していましたら、<br>「最新の情報に更新」(IEの場合)を選択してください。 ==><br>インストールの経過は<a href="http://jlb.jp/hsinstall7/aws5/" target="_blank"><b>こちら</b></a>

message43=検索エンジンのキーフレーズ
message44=
検索エンジンのキーワード

message54=
高度なWeb統計のフリーリアルタイムログファイル分析

message57=
ヒット

message103=
異なったキーフレーズ

message108=K
B
message109=M
B
message110=G
B
------------------------- 以下は awstats-en.txt から引用し、日本語を追記した
                                                 message999= は連番で続けること -------------
message111=Grabber
message112=Yes
message113=No
message114=WhoIs info
message115=OK
message116=
Exit pages
message117=
接続時間
message118=
ウインドウを閉じる
message119=Bytes
message120=
検索&nbsp;キーフレーズ
message121=
検索&nbsp;キーワード
message122=
異なった参照&nbsp;検索エンジン
message123=
異なった参照&nbsp;サイト
message124=
他のフレーズ
message125=
匿名のユーザー
message126=
参照&nbsp;検索エンジン
message127=
参照&nbsp;サイト

--------------------------------------------

これも、root の書き込み権を設定していない(555)ので、 [ESC] : w ! で書き込みして終了。

Awstats Ver5(Ver4.0から?)は、日本語コードが「MS_Kanji」に成っています。
IE等からの検索キーワードの文字化けがそのまま発生したので、 EUC-JP として処理するように変更しています。

その他には、マウスカーソルが項目の上に行ったときに、説明のウィンドウが出現しますが、それは英語のままです。
あまり不自由はしませんが変更する場合は、 vi /var/www/cgi-bin/lang/awstats-tt-jp.txt を開いて書き換えれば、日本語表記にできます。

 

13.Logの設定。

これもTL7Sの時と同じように、プライベートアドレスからのアクセスを Apache のログに記録しない設定にします。(192.168.1.xxx の場合)

[root@hs8 /root]# vi /etc/httpd/conf/httpd.conf


SetEnvIf Remote_Addr 192.168.1. no_log       <==609行目に追加
CustomLog /var/log/httpd/access_log combined
env=!no_log


 

--以上--