« Travel story - 云南丽江之行 - 惊险之旅、夜游古城 | Main | Mbox vs Maildir - 两者原理和区别 »

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
本文网址:http://www.hzqbbc.com/blog/arch/2005/06/awstats_auto_up.html
 

June 27, 2005

awstats auto update的方法及perl脚本

awstats是一个功能强大的日志分析工具,对于一个简单的网站而言,只需要根据awstats官方网站的帮助来安装和配置即可使用。但是如果需要服务多个网站,例如提供虚拟主机的ISP,需要统计大量的网站的话,常规的方法有点麻烦。

实现自动统计更新是一个必然的需求。实现起来也比较简单,一些shell脚本+perl脚本,配置一下crontab就差不多了。

1. 配置Apache调整日志存储方式
为每一个虚拟主机单独保存日志,这样便于统计。注意,配置的命令必须在每一个虚拟主机的配置里面,即里,简单的配置如下:(以www.hzqbbc.com为例)

CustomLog /var/log/httpd/www.hzqbbc.com_log combined

2. 配置awstats 的per Host config
为每个要进行统计的虚拟主机单独配置一个配置文件,在我的awstat安装中配置文件的目录放在/etc/awstats下,每个虚拟主机的配置文件名都有如下格式(以hzqbbc.com为例):

awstats.www.hzqbbc.com.conf

每个配置文件里只需要指定几个主要参数即可。其中如下几个参数必须指定:

LogFile="/var/log/httpd/www.hzqbbc.com_log"
SiteDomain="hzqbbc.com"
HostAliases="www.hzqbbc.com 127.0.0.1 localhost"

3. 自动更新脚本
以下是自动更新脚本,命名为cron.pl


#!/usr/bin/perl -w
use strict;
my @list = glob("/etc/awstats/*");

for(0...scalar @list-1) {
         $list[$_]=~s#.*/awstats\.([^\/]+)\.conf$#$1#;
}

foreach(@list) {
         `perl awstats.pl -config=$_ -upate`;
}
exit(0);

将这个perl脚本防止在awstats的cgi-bin目录里,即/var/www/cgi-bin/awstats/wwwroot/cgi-bin里

4. 配置crontab
以root身份登陆系统,执行crontab -e,增加一条记录:

0 */3 * * * (cd /var/www/cgi-bin/awstats/wwwroot/cgi-bin/; perl cron.pl)

这里定义了每隔3小时呼叫一次cron.pl并更新日志。如果机器的负载很高,并且虚拟主机的数量巨大,那么建议每天只更新1次,并且在深夜负载低时进行。

经过上述配置后,以后新增的虚拟主机只需要简单增加一个awstats的配置即可实现自动的日志分析。访问时,只需要将URL中的config=xxx替换成相应网站名即可。

Posted by hzqbbc at June 27, 2005 09:19 AM

Comments

我想知道如何在IIS 6 里面实现?! ^:^

Posted by: xiaoyu at July 3, 2005 06:46 PM

Post a comment




Remember Me?

(you may use HTML tags for style)