用awstats和Calendar按日分析网站日志

支付宝内搜索 9155838 即可领现金红包 每天都能领哦

公司网站换了一个新的服务器,这次我想顺便装上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代码多少有点问题,这里我贴上我修改的版本。PHP Calendar是一个最方便的可扩展PHP类包。

index.php:

<?phpinclude('calendar.php');

class
MyCalendarextendsCalendar{
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= newMyCalendar();$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>
<?phpecho$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<?phpecho$url;?>" noresize="noresize" frameborder="0" /> <frame name="mainright" src="/awstats/awstats.pl?framename=mainright<?phpecho$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>

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

作者:老王  出处:http://hi.baidu.com/thinkinginlamp/blog/item/3a571d95d716f8087bf480a4.html

推荐文章

发表新评论