用AWStats统计网站访问情况

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,这样日志文件会记录更详细的信息,便于分析:

CustomLog /var/log/apache2/access.log combined

如果服务器有多个虚拟主机的话,一般建议每个虚拟主机的log文件分别存放,不过awstats也能处理混合在一起的log,前提是需要使用自定义log格式,并且把在log中记录主机名,比较麻烦,不建议使用。iis系列的设定还是参照官方安装说明吧,我不熟悉。下面来设置apache,配置web访问相关的设置,根据我的环境,apache的conf中添加如下内容即可:

Alias /awstatsicons “/usr/share/awstats/icon” 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):

# Basic # —– # 要分析的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页面直接下达更新指令,也可以使用如下命令更新:

perl /usr/lib/cgi-bin/awstats.pl -config=localhost -update

分析完成的结果就可以通过web页面观看了。

在实际应用当中,如果apache日志是不截断的,也就是说所有时间的日志都保存在access.log文件当中,虽然awstats能够自动辨识上次处理的进度,只处理新产生的那一部分日志,但堆一个大文件在这里还是会有些不方便,所以建议把apache日志截断,linux下可以直接把access.log改名,windows下则需要改名并重启apache,不然apache会很聪明的把日志写到改名以后的文件中。这样我们的log文件名中就带有日期了,在conf文件中可以这样指定:

LogFile=”/var/log/apache2/access.%YYYY-24%MM-24%DD-24.log”

在这个例子中,我的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

2 thoughts on “用AWStats统计网站访问情况”

  1. 我也遇见了这样的问题。

    LogFile理论上还可以识别多个log文件和gz格式的log文件,不过我也不知道怎么写才合适,只有请教过路大侠了。

Leave a Reply

Your email address will not be published. Required fields are marked *