作者:老王
公司网站换了一个新的服务器,这次我想顺便装上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 . '&month=' . $month . '&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 = '&databasebreak=day&year=' . $year . '&month=' . $month . '&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>
具体链接什么的可能要改改,其他没什么了。