2011年11月2日星期三

awstats auto update的方法及perl脚本


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替换成相应网站名即可。

没有评论:

发表评论

上海松善实业有限公司

    上海松善实业有限公司是一家集多品牌销售于一体的电线电缆骨干企业,公司成立于2016年。 公司拥有国内各大品牌:起帆、远东、上上、江南、胜华等。     主要产品有:高低压电力电缆、橡套电缆、控制电缆、架空绝缘电缆、塑胶电缆、电子计算机电缆、通讯电缆、...