用AWStats统计网站访问情况
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/286)的形式标明文章原始出处和作者信息及本声明。AWStats是一款强大的日志分析工具,可以从你保存的服务器日志中分析出类似51.la统计的信息,当然,他的功能可不仅仅是web服务器的日志分析,还可以分析其他服务器比如mail服务器的日志呢。
awstats的官方安装说明繁琐了一些,其实没那么复杂的,也就下面几步。我使用的环境为ubuntu linux,apache2。
首先是awstats的安装,ubuntu直接apt就能装上了,也有用源码包或者源代码安装的,不过其实只是一些文件和perl程序而已,不用编译,放到合适的位置就可以了。/usr/share/awstats是一些语言文件、图标文件、库和插件,/etc/awstats下面是配置文件,核心程序awstats.pl放在/usr/lib/cgi-bin目录下,也就是常用的cgi程序目录,并且设置可执行权限。
然后就要对apache进行一番配置了,首先强烈建议把日志类型从默认的common更改为combined,这样日志文件会记录更详细的信息,便于分析:
如果服务器有多个虚拟主机的话,一般建议每个虚拟主机的log文件分别存放,不过awstats也能处理混合在一起的log,前提是需要使用自定义log格式,并且把在log中记录主机名,比较麻烦,不建议使用。iis系列的设定还是参照官方安装说明吧,我不熟悉。下面来设置apache,配置web访问相关的设置,根据我的环境,apache的conf中添加如下内容即可:
ScriptAlias /cgi-bin /usr/lib/cgi-bin
RewriteRule ^/awstats[/]? /cgi-bin/awstats.pl [R]
<Directory “/usr/lib/cgi-bin”>
Options +ExecCGI
</Directory>
加上那句RewriteRule我只是为了访问更方便,以前几乎没有用过cgi程序,习惯http://domain.com/awstats这样的网址了。对apache的更改其实就是cgi运行环境的设定而已。
最后,我们还要针对要统计日志的每个网站,创建配置文档。/etc/awstats/awstats.conf是默认的配置文档模板,里面所有的选项都有详细说明和例子,所以只给出我的一个配置实例(awstats.localhost.conf):
# —–
# 要分析的log文件地址
LogFile=”/var/log/apache2/access.log”
# W - web log file
LogType=W
# Log format, 1-combined, 4-common
LogFormat=1
# Separator char in log file, default is ” ”
LogSeparator=” ”
# 主机名和别名
SiteDomain=”localhost”
HostAliases=”127.0.0.1″
# DNS Lookup, 0-no, 1-full, 2-only from static dns cache
DNSLookup=2
# 结果数据存放地点
DirData=”/big2/awstats_data/localhost”
# AWStats web-access url
DirCgi=”/cgi-bin”
# 图标文件的apache虚拟目录
DirIcons=”/awstatsicons”
# Allow update state from web interface, 1 to enable
AllowToUpdateStatsFromBrowser=1
# Allow full-year view function
AllowFullYearView=3
# Optinal
# ——-
# Create a lock file when update stats result, not open when no shell priv
EnableLockForupdate=1
# Static DNS file
DNSStaticCacheFile=”/big2/awstats_data/dnscache.txt”
# 只能从以下ip地址访问
AllowAccessFromWebToFollowingIPAddresses=”127.0.0.1″
# Xhtml report file instead of html
BuildReportFormat=xhtml
# Purge log file after use
PurgeLogFile=0
# Pic, file only marked hit and not download
NotPageList=”css js class gif jpg jpeg png bmp ico swf”
# Include url parameters, but count only some param
URLWithQuery=1
URLWithQueryWithOnlyFollowingParameters=”"
# Keep param in referrer urls
URLReferrerWithQuery=1
# Show problems in setup conf file
WarningMessages=1
# Use frame
UseFramesWhenCGI=1
# Open report in new window,0-no, 1-except using frame, 2-always
DetailedReportsOnNewWindows=1
# Show language change link
ShowFlagLinks=”en cn”
常用的配置项应该就这么多,稍微重要一点的我都用中文注释上了,注意要确定log文件和储存结果的文件存在并且能够被apache用户www-data访问,配置到这里就基本上结束了,现在打开浏览器,http://localhost/awatats就可以访问了,当然默认是没有数据的,因为还没有进行分析,如果设置了相应的选项,可以从web页面直接下达更新指令,也可以使用如下命令更新:
分析完成的结果就可以通过web页面观看了。
在实际应用当中,如果apache日志是不截断的,也就是说所有时间的日志都保存在access.log文件当中,虽然awstats能够自动辨识上次处理的进度,只处理新产生的那一部分日志,但堆一个大文件在这里还是会有些不方便,所以建议把apache日志截断,linux下可以直接把access.log改名,windows下则需要改名并重启apache,不然apache会很聪明的把日志写到改名以后的文件中。这样我们的log文件名中就带有日期了,在conf文件中可以这样指定:
在这个例子中,我的log文件名类似access.20070206.log的模式,并且把awstats.pl放到cron中,每天都自动处理前一天的日志,所以用“%YYYY-24%MM-24%DD-24”来指定24小时以前日期的年、月、日,只要7号的某个时间执行更新脚本,得到的日期就肯定是6号了。
LogFile理论上还可以识别多个log文件和gz格式的log文件,不过我也不知道怎么写才合适,只有请教过路大侠了。
参考:
Configuring Awstats with Apache 2 on Ubuntu
Bookmark and Share This Page
If you like this then please subscribe to the RSS Feed.
Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BuddyMarks
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
kirtsy
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend
May 23rd, 2008 at 11:10:15
我也遇见了这样的问题。
LogFile理论上还可以识别多个log文件和gz格式的log文件,不过我也不知道怎么写才合适,只有请教过路大侠了。
[Reply]