AWStats 7.0 on CentOS 5.6

### mod_perl のインストール

yum -y install mod_perl
# Apache は http://pooh.gr.jp/?p=8140 を参考に設定済みであることを前提。

### AWStats ソースの展開

wget http://prdownloads.sourceforge.net/awstats/awstats-7.0.tar.gz
tar zxf awstats-7.0.tar.gz -C /usr/local
chown -R root:root /usr/local/awstats-7.0
ln -s /usr/local/awstats-7.0 /usr/local/awstats

### AWStats 設定ファイル

chmod 644 /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf
mv /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf.orig
cp -a /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf.orig /usr/local/awstats/wwwroot/cgi-bin/awstats.pooh.gr.jp.conf
# awstats.[SiteDomein].conf
sed -i \
    -e 's/^LogFile="\/var\/log\/httpd\/mylog.log"$/LogFile="\/var\/log\/httpd\/access_log"/' \
    -e 's/^SiteDomain=""$/SiteDomain="pooh.gr.jp"/' \
    -e 's/^HostAliases=.*$/HostAliases="REGEX[^.*allekto\\.pooh\\.gr\\.jp$]"/' \
    -e 's/^DNSLookup=2$/DNSLookup=1/' \
    -e 's/^DirCgi="\/cgi-bin"$/DirCgi="\/awstats"/' \
    -e 's/^DirIcons="\/icon"$/DirIcons="\/awstatsicons"/' \
    -e 's/^URLWithQuery=0$/URLWithQuery=1/' \
    -e 's/^StyleSheet=""$/StyleSheet="\/awstatscss\/awstats_default.css"/' \
/usr/local/awstats/wwwroot/cgi-bin/awstats.pooh.gr.jp.conf

# LAMP 系の CMS では URLWithQuery=1 が必須。URLWithQuery=0 だと “index.php?p=1” と “index.php?p=2” が同じ “index.php” ページとして集計されてしまう。

### Apache 認証

/usr/bin/htpasswd -c /etc/httpd/conf.d/.htpasswd-awstats natsu
#   New password:
#   Re-type new password:
chmod 640 /etc/httpd/conf.d/.htpasswd-awstats
chgrp apache /etc/httpd/conf.d/.htpasswd-awstats

### Apache 設定ファイル

{
    echo -e 'Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"'
    echo -e 'Alias /awstatscss "/usr/local/awstats/wwwroot/css/"'
    echo -e 'Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"'
    echo -e 'ScriptAlias /awstats "/usr/local/awstats/wwwroot/cgi-bin/"'
    echo -e ''
    echo -e '<Directory "/usr/local/awstats/wwwroot">'
    echo -e '    Options ExecCGI FollowSymLinks'
    echo -e '    Order allow,deny'
    echo -e '    Allow from all'
    echo -e '    AuthUserFile /etc/httpd/conf.d/.htpasswd-awstats'
    echo -e '    AuthName "RESTRICTED"'
    echo -e '    AuthType Basic'
    echo -e '    require valid-user'
    echo -e '    <Files ~ "\.pl$">'
    echo -e '        SetHandler perl-script'
    echo -e '        PerlResponseHandler ModPerl::Registry'
    echo -e '        PerlSendHeader On'
    echo -e '    </Files>'
    echo -e '</Directory>'
    echo -e ''
    echo -e 'RewriteEngine on'
    echo -e 'RewriteRule ^/awstatsclasses/(.*) https://%{HTTP_HOST}/awstatsclasses/$1 [R,L]'
    echo -e 'RewriteRule ^/awstatscss/(.*) https://%{HTTP_HOST}/awstatscss/$1 [R,L]'
    echo -e 'RewriteRule ^/awstatsicons/(.*) https://%{HTTP_HOST}/awstatsicons/$1 [R,L]'
    echo -e 'RewriteRule ^/awstats/(.*) https://%{HTTP_HOST}/awstats/$1 [R,L]'
} > /etc/httpd/conf.d/awstats.conf
/sbin/service httpd graceful

### AWStats の実行

# ログは古い順に読み込ませる。DNSLookup=1 を設定していると結構時間かかる。

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=pooh.gr.jp -logfile=/var/log/httpd/access_log.4
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=pooh.gr.jp -logfile=/var/log/httpd/access_log.3
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=pooh.gr.jp -logfile=/var/log/httpd/access_log.2
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=pooh.gr.jp -logfile=/var/log/httpd/access_log.1
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=pooh.gr.jp

# ブラウザから https://pooh.gr.jp/awstats/awstats.pl でアクセスする。
# -config=pooh.gr.jp とすべきところを -config=/usr/local/awstats/wwwroot/cgi-bin/awstats.pooh.gr.jp.conf 等と指定していると困ったことになる。更新処理は走るんだけどページ上では “更新なし” とか表示されて集計結果が見れない。

### Cron への登録

{
    echo -e '#!/bin/sh'
    echo -e '/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=pooh.gr.jp 1>/dev/null'
} > /etc/cron.daily/awstats.cron
chmod 755 /etc/cron.daily/awstats.cron
タイトルとURLをコピーしました