CentOS6 AWStatsの設定

スポンサーリンク

■ログ解析

Webサーバを設置した場合、ログを解析したいものです。個人的には見た目が綺麗でwebanalyzerよりも詳細に解析できるawstatsがおすすめです。これはyumからインストール可能です。

# yum install awstats
# rpm -qa | grep awstats
awstats-7.1-1.el6.rf.noarch


まずapache用の設定ファイルが組み込まれますので少し編集します。

# vi /etc/httpd/conf.d/awstats.conf

Alias /awstats/icon/ /var/www/awstats/icon/

Alias /awstats/ /var/www/awstats/
<Directory /var/www/awstats/>
    DirectoryIndex awstats.pl
    Options ExecCGI
    order deny,allow
    deny from all
    allow from all
</Directory>


そしてhttpdを再起動します。

# /etc/rc.d/init.d/httpd restart


サンプルのファイルがインストールされますのでそれをコピーして編集します。また編集する箇所は以下です。

# cd /etc/awstats
# cp awstats.model.conf awstats.unix-power.net.conf
# vi awstats.unix-power.net.conf

# サイト名を設定
SiteDomain="unix-power.net"

# アクセス元の名前解決を行う
DNSLookup=1

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

# 日本語表示にする
Lang="jp"


xxxx.yyyyは自サイトのドメインに置き換えてください。そして以下のようにしてHTMLのログ解析ファイルを生成します。

# /var/www/awstats/awstats.pl -config=unix-power.net -update
# /var/www/awstats/awstats.pl -config=unix-power.net -output \
-staticlink > /var/www/awstats/index.html

ブラウザから次の画面が見れればOKです。



画像の「表示するレポート」の部分は実はそのままでは上記のように表示されません。
上記のように表示するにはawstats.plの以下の箇所を次のように編集します。

# vi /var/www/awstats/awstats.pl

9932行目
#$Message[5] $MonthNumLib{$MonthRequired} $YearRequired";
"$YearRequired $Message[6]".$MonthNumLib{$MonthRequired};

12611行目
 #       print( $MonthRequired eq 'all'
 #               ? "$Message[6] $YearRequired"
 #               : "$Message[5] "
 #                 . $MonthNumLib{$MonthRequired}
 #                 . " $YearRequired"
 #       );
 print ($MonthRequired eq 'all'? \ 
"$YearRequired $Message[6]":"$YearRequired $Message[6]".$MonthNumLib{$MonthRequired});


これで再度以下を実行します。

# /var/www/awstats/awstats.pl -config=unix-power.net -update
# /var/www/awstats/awstats.pl -config=unix-power.net -output \
-staticlink > /var/www/awstats/index.html

■日本語文字化け対策

awstatsはそのままですと検索文字列の日本語が文字化けしてしまいます。これを回避するために以下の設定を行います。

# cpan Jcode
# vi /var/www/awstats/awstats.pl

21行目追加
use Jcode;

7796行目追加
sub DecodeEncodedString {
        my $stringtodecode = shift;
        $stringtodecode =~ tr/\+/ /s;
        $stringtodecode =~ s/%([A-F0-9][A-F0-9])/pack("C", hex($1))/ieg;
        $stringtodecode =~ s/["']//g;
        Jcode::convert(\$stringtodecode, "utf8");

        return $stringtodecode;


以上の処理で検索文字列も正常に日本語表示できます。あとはcronで定期的に更新されるよう定期実行します。

# vi /etc/cron.houry/00awstats
#!/bin/bash 
if [ -f /var/log/httpd/access_log ] ; then 
# 下記はコメントアウト
# exec /usr/bin/awstats_updateall.pl now -confdir="/etc" \
-awstatsprog="/var/www/awstats/awstats.pl" >/dev/null 
# 下記を追加
/var/www/awstats/awstats.pl -config=unix-power.net -update > /dev/null 
/var/www/awstats/awstats.pl -config=unix-power.net -output -staticlink \
> /var/www/awstats/index.html
fi

exit 0

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする