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

TL8S に AWStats Ver5.7 を導入する。
 2003/7/21

2003/8/03:upd

 

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


■ほとんど AWStats Ver 5.5 と同じですが、 build が40以上も進んだため、最新版に入れ替えることにしました。
ここの記述は、新規からでも導入できるようにしたつもりです。
何か、気づいていない不具合があるかもしれませんが、ご了承ください。
また、新しい機能についても把握していません。 わかれば、追記していきます。

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

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

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

[root@hs8 aws57]# tar zxvf awstats-5.7.tgz

cd awstats-5.7/

[root@hs8 awstats-5.7]# 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.7]# 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 ../../

 

もし、旧ファイルを消去する場合は、
cd /var/www/icons/
rm -rf  clock/ flags/ other/ browser/ cpu/ os/ mime/

 

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

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

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

 

 

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

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

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/


cp tools/maillogconvert.pl /var/www/cgi-bin/

 

もし、旧ファイルを消去する場合は、
cd /var/www/cgi-bin/
rm -rf  lang/ lib/
plugins/

tools のファイルは少ないので一行ずつコピーし、そのまま上書き確認をします。

 

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

 

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

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

 

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    <--161行目あたり(にしないと訪問者がIPアドレスのままとなる。)

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

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

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

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

SkipFiles="REGEX[^/cgi-bin]"     <--437行目 (build 1.558) あたり /cgi-bin を追加する。Awstats5.5までの記述(下記)では、通用しませんでした。 (2003/08/04)

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



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


---------------------------------------------------------------------------
追加修正個所です。 (2003/07/24)
#LoadPlugin="tooltips"    <==1060行目あたり 先頭の # を取ります。(12項で追記)


 

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 aws57]# tar zxvf Jcode-0.82.tar.gz
[root@hs8 aws57]# 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/ に作られます。

AWStats5.5までは、 awstats.cron ファイルを /etc/cron.hourly/ に移して定時(01分)に実行していましたが、AWStats 5.7 から、 crontab を使って毎00分にスクリプトを動かすことにしました。



[root@hs8 cgi-bin]# crontab -e

0 * * * * /var/www/cgi-bin/./awstats.cron


12.画面のフレームおよび日本語化の修正と設定。

 

以前に、「訪問」が「北問」に化けていましたが、下記の修正をしなくても大丈夫なようです。


awstats.pl の7670行目あたりに以前文字化けしていた原因(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(  )  部分を削除します。


以前から、フレームは使っていませんが修正するのが習慣となっている個所を直します。


vi awstats.pl

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

$FRAMEWIDTH=200               <=== 34行目 230を200に


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;サイト

現在 (2003/07/24) 、 147 まで連番が続いています。
--------------------------------------------

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

Awstats Ver 5.7 (Ver 5.5 から?)は、日本語コードが「 UTF-8 」に成っています。
IE等からの検索キーワードの文字化けがそのまま発生したので、以前からの EUC-JP として処理するように変更しています。(本当は、旧 awstats-jp.txt をそのまま引き継いで使っています。)

その他には、マウスカーソルが項目の上に行ったときに、説明(助言)のウィンドウが出現しますが、そのままでは表示されなくなっていました。

以下に、追記します。 (2003/07/24)

手順1: awstats-tt-jp.txt をUTF−8からEUCにコード変換します。(私はWin上のエディタで変換しFTPで戻しました)
手順2: awstats.conf ファイルの1060行目辺りに、
vi awstats.conf 
#LoadPlugin="tooltips"

が有るので、先頭の # を取ります。

その他の追加項目は、項14に追加。

 

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


 

 

14.国名の表示不具合を修正。 (2003/08/03)

AWStats Ver5.7 (build 1.555) を導入して 月が変わると、「訪問者・ドメイン/国名」のところが全て不明扱いにされていることがわかりました。

そこで、 build 1.556  1.557 と毎日のように上げていき、その他 awstats.conf の設定も色々変えて見ましたが変化無く、やっと build 1.558 で解消しました。 2003.08.03 10:00 以降より復旧)

 

以下は、9項以外に追加した awstats.conf (build 1.558) の修正箇所です。(一部重複)

# Plugin: Tooltips
# Perl modules required: None
# Add some tooltips help on HTML report pages.
# Note that enabled this kind of help will increased HTML report pages size,
# so server load and bandwidth.
# (jlb)
#LoadPlugin="tooltips"      <=== (Line 1061) 先頭の # を取ります。



# Plugin: UserInfo
# Perl modules required: None
# Add a text (Firtname, Lastname, Office Department, ...) in authenticated user
# reports for each login value.
# A text file called userinfo.myconfig.txt, with two fields (first is login,
# second is text to show) separated by a tab char. must be created in plugins
# directory.
# (jlb)
#LoadPlugin="userinfo"      <=== (Line 1107) 先頭の # を取ります。