使用awstats分析apache日志

作者:老王

公司网站换了一个新的服务器,这次我想顺便装上awstats,用于统计数据。

tar zxvf awstats-6.6.tar.gz

然后把文件拷贝到/usr/local/awstats目录

mv awstats-6.6 /usr/local/awstats

创建awstats默认的数据存放目录(缺省是:/var/lib/awstats/)

mkdir -p /var/lib/awstats

cd /usr/local/awstats/tools
perl awstats_configure.pl

回答几个问题,就可以了。

然后我们要修改一下awstats的配置文件(位于/etc/awstats目录),让它和apache能配合起来。

我的apache日志采用的是combined格式,并用cronolog程序按天分隔,如下:

CustomLog "|/usr/local/sbin/cronolog /data/weblog/%Y/%m/%d/access" combined

所以awstats配置文件要做适当修改:

修改一下LogFile="/data/weblog/%YYYY-24/%MM-24/%DD-24/access"选项

修改一下SiteDomain和HostAliases选项

修改一下LoadPlugin="decodeutfkeys"选项

最好再装上GeoIP插件,具体步骤可以搜索

最后不要忘记了在cron里加入自动更新:

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -databasebreak=day -config=your.domain.com

这里我加入-databasebreak=day选项是为了适应大访问量,否则awstats默认是按月归档的,会很慢,修改之后就是按天归档的了,不过这样的话,浏览报表又成了问题,因为awstats按天浏览报表很不方便,解决方法是参考车东的文章:

http://www.chedong.com/blog/archives/001293.html

http://www.chedong.com/blog/archives/001292.html

附录:车东文章中提供的calendar代码多少有点问题,这里我贴上我修改的版本

index.php:

<?php
include('calendar.php');

class
MyCalendar extends Calendar
{
       function
getDateLink($day, $month, $year)
       {
        
$link = '';

           if(
mktime(0, 0, 0, $month, $day, $year) < mktime(0, 0, 0, date('m'), date('d'), date('Y')))
           {
            
$link = 'awstats.php?year=' . $year . '&amp;month=' . $month . '&amp;day=' . $day;
           }

           return
$link;
       }

       function
getCalendarLink($month, $year)
       {
           return
'?month=' . $month . '&year=' . $year;
       }
}

$cal = new MyCalendar();

$chineseMonths = array(
    
"一月",
    
"二月",
    
"三月",
    
"四月",
    
"五月",
    
"六月",
    
"七月",
    
"八月",
    
"九月",
    
"十月",
    
"十一月",
    
"十二月"
);

$chineseDays = array ("日", "一", "二", "三", "四", "五", "六");

$cal->setMonthNames($chineseMonths);
$cal->setDayNames($chineseDays);

$cal->setStartDay(1);

$month = array_key_exists('month', $_GET) ? intval($_GET['month']) : date('m');
$year  = array_key_exists('year' , $_GET) ? intval($_GET['year'])     : date('Y');

$content = $cal->getMonthView($month, $year);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Awstats统计</title>
<style>
.calendarHeader {
font-weight: bolder;
color: #CC0000;
background-color: #FFFFCC;
}

.calendarToday {
background-color: #FFFFFF;
}

.calendar {
background-color: #FFFFCC;
}
</style>
</head>

<body>
<?php echo $content; ?>
</body>
</html>

awstats.php:

<?php
$year  
= array_key_exists('year' , $_GET) ? intval($_GET['year'])     : date('Y'
);
$month = array_key_exists('month', $_GET) ? intval($_GET['month']) : date('m'
);
$day   = array_key_exists('day'  , $_GET) ? intval($_GET['day'])      : date('d'
);

$url = '&amp;databasebreak=day&amp;year=' . $year . '&amp;month=' . $month . '&amp;day=' . $day
;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang='cn'>
<head>
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="content-type" content="text/html; charset=gbk">
<title>Statistics</title>
</head>

<frameset cols="240,*">
<frame name="mainleft" src="/awstats/awstats.pl?framename=mainleft<?php echo $url; ?>" noresize="noresize" frameborder="0" />
<frame name="mainright" src="/awstats/awstats.pl?framename=mainright<?php echo $url; ?>" noresize="noresize" scrolling="yes" frameborder="0" />
<noframes><body>Your browser does not support frames.<br />
You must set AWStats UseFramesWhenCGI parameter to 0
to see your reports.<br />
</body></noframes>
</frameset>

</html>

具体链接什么的可能要改改,其他没什么了。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值