Awstats的安装基本配置
1. AWSTATS 简介
AWStats,全名为 Advanced Web Statistics,是一套免费功能强大并支援多国语言的工具程式,专门用来分析Web.Streaming.FTP或Mail伺服器的统计资料,并可产生统计图表,显示用户端连线至网站存取网页的纪录资讯。
它可以分析许多主要伺服器的日志档,如 Apache 的日志档 (NCSA combined/XLF/ELF log format or common/CLF log format)、WebStar、IIS (W3C log format) 以及许多其它的 Web、Proxy、Wap、Streaming 伺服器、Mail 伺服器及部份 FTP 伺服器。
AWStats 与其它统计分析软体(Analog、Webalizer、HitBox…)相较之下,可以产生更多样的纪录,并做更详细的分析。你可以到这里检视比较着名的分析工具 (AWStats、Analog、Webalizer…)的功能及差异性:功能比较表。
AWStats 是免费的 GPL (GNU General Public License) 授权软体,你可以检视 license chart 看哪些是可以或不能做的。
AWStats 是以 Perl 透过指令列的方式执行,但也可以从浏览器透过 CGI 的方式来做即时更新的动作,因为请确定系统中已安装 Perl 程式或套件,并启动 CGI 的执行权限。
2. 安装 AWSTATS
下载
首先需先下载 AWStats 软体,请到官方网站查看最新版本,或直接进入下载页面。 目前我使用的是 6.7 版,使用Windows的话可以下载zip或exe档;使用Linux的话可以下载 rpm 或 tar.gz 档。
安装
目前使用的环境是 CentOS 5(RHEL),所以直接下载 rpm 档安装即可:
可以到如下的地址下载
https://awstats.sourceforge.net/files/awstats-6.8.tar.gz
# rpm -ivh https://jaist.dl.sourceforge.net/sourceforge/awstats/awstats-6.7-1.noarch.rpm
或下载rpm档后执行
# rpm -ivh awstats-6.7-1.noarch.rpm
安装后检查
安装后 AWStats 的相关资料位置如下(以rpm版本安装):
.主目录:/usr/local/awstats
.网站设定档目录:/etc/awstats
.网站设定档范例:/etc/awstats/awstats.model.conf
.其它路径说明:
/usr/local/awstats/wwwroot 预设awstats网站根目录
/usr/local/awstats/tools awstats 工具
/usr/local/awstats/docs 说明文件,索引页为 index.html
/usr/local/awstats/wwwroot/cgi-bin awstats.pl 主程式所在目录
/usr/local/awstats/wwwroot/cgi-bin/lang 语系档目录
…………. (其它请参阅说明文件)
若你使用的是 Windows 系统,请先安装 Perl (安装后可能需要重新开机),再安装 AWStats 程式。
3. 使用 AWSTATS 提供的工具设定
若你是初次设定 awstats,建议可以使用它本身所提供的工具,您可以下以下的指令:
#chown apache:apache wwwroot/ -R
最好改变一下这个文件夹的权限
# cd /usr/local/awstats/tools
# perl awstats_configure.pl
接下来就会问您一些问题,如 Apache 主目录、设定档、网域(主机)名称……等,目的是为了帮您修改 apache 的设定资讯以及基本的 awstat.conf 档。
若不执行这个步骤也是可以,就手动来编辑 awstats for apache 的设定资讯。
详细介绍见本文后半部分
4. APACHE 中的 AWSTATS 设定
使用工具产生的设定
若您使用上述的方式,在您的 httpd.conf 设定档的文件尾会被加上这样的资讯:
#
# Directives to add to your Apache conf file to allow use of AWStats as a CGI.
# Note that path “/usr/local/awstats/” must reflect your AWStats Installation path.
#
Alias /awstatsclasses “/usr/local/awstats/wwwroot/classes/”
Alias /awstatscss “/usr/local/awstats/wwwroot/css/”
Alias /awstatsicons “/usr/local/awstats/wwwroot/icon/”
ScriptAlias /awstats/ “/usr/local/awstats/wwwroot/cgi-bin/”
#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory “/usr/local/awstats/wwwroot”>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
手动设定
若您不想使用工具,那么可以手动将上面的设定值加入 httpd.conf 档中,或者是直接编辑一个 awstats.conf 档放入 /etc/httpd/conf.d/ 目录下:
# vi /etc/httpd/conf.d/awstats.conf
内容为
Alias /awstatsclasses “/usr/local/awstats/wwwroot/classes/”
Alias /awstatscss “/usr/local/awstats/wwwroot/css/”
Alias /awstatsicons “/usr/local/awstats/wwwroot/icon/”
ScriptAlias /awstats/ “/usr/local/awstats/wwwroot/cgi-bin/”
#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory “/usr/local/awstats/wwwroot”>
Options None
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>
验证机制
不管如何,建议 AllowOverride 设定成 AuthConfig,针对统计资料目录做验证的动作,避免网站细部日志被有心人士利用。另外必需在欲保护的网页目录下(即/usr/local/awstats/wwwroot)建立 .htaccess 档案,并设定适当权限:
# cd /usr/local/awstats/wwwroot
# vi .htaccess
内容为
AuthName “Private Web Site”
Authtype Basic
AuthUserFile /etc/httpd/conf/.htpasswd
require valid-user
设定适当权限
# chown apache:apache .htaccess
# chmod 700 .htaccess
建立密码档
# htpasswd -c /etc/httpd/conf/.htpasswd yourname
输入2次密码即可
关于Apache详细验证机制的流程与作法,请参考相关教学文章。
日志设定
另外,在 httpd.conf 中有关日志部份的设定建议设定为:
将
CustomLog /yourlogpath/yourlogfile common
更改为
CustomLog /yourlogpath/yourlogfile combined
虚拟站点日志设定
或者是你有架设虚拟站点,可以针对不同的站台设定不同的日志记录档,未来也可以分析各个虚拟站点的细部统计:
# 虚拟站台(Name-based)范例
NameVirtualHost 192.168.1.100
# === domain1.com.cn ===
<VirtualHost 192.168.1.100>
ServerAdmin webadm@domain1.com.cn
DocumentRoot /var/www/domain1
ServerName www.domain1.com.cn
ErrorLog logs/domain1.com.cn-error_log
CustomLog logs/domain1.com.cn-access_log combined
</VirtualHost>
# === domain2.com.cn ===
<VirtualHost 192.168.1.100>
ServerAdmin webadm@domain2.com.cn
DocumentRoot /var/www/domain2
ServerName www.domain2.com.cn
ErrorLog logs/domain2.com.cn-error_log
CustomLog logs/domain2.com.cn-access_log combined
</VirtualHost>
# === domain3.com.cn ===
<VirtualHost 192.168.1.100>
ServerAdmin webadm@domain3.com.cn
DocumentRoot /var/www/domain3
ServerName www.domain3.com.cn
ErrorLog logs/domain3.com.cn-error_log
CustomLog logs/domain3.com.cn-access_log combined
</VirtualHost>
这样可以提供更详细的日志记录,日志内容如:
xx.xxx.xx.xx – - [dd/mmm/yyyy:hh:mm:ss +0000] “GET / HTTP/1.1″ 200 1234 “https://www.php-oa.com/from.html” “Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)”
重新启动 Apache
更改完 apache 的设定档后,记后重新启动让设定值生效:
# /etc/init.d/httpd restart
5. 建立网站的 AWSTATS 设定档
当您使用 perl awstats_configure.pl 指令来建立起 awstats.mysite.conf 设定档后,接下来我们就要来修改设定档中部份的设定内容,因为设定资料繁多,在这里只要针对重点部份设定即可。
复制/修改设定档
# cd /etc/awstats
# cp awstats.model.conf awstats.domain1.conf
# vi awstats.domain1.conf
找到底下这几行,并且修改内容:
# 日志档位置
LogFile=”/var/log/httpd/domain1.com-access_log”
# 日志档类型:W – WEB,S – Streaming,M – Mail,F – FTP
LogType=W
# 日志格式 缺省值是1:Apache日志,2是IIS日志
LogFormat=1
# 主机名称或网域
SiteDomain=”www.domain1.com”
# 主机别名
HostAliases=”www.domain1.com domain1.com localhost 127.0.0.1 \
REGEX[domain1\.com\.cn$] ”
# 存放 awstats 分析完成的资料库档案存放目录
# 这边修改成 “.” 表示跟 awstats.pl 相同目录,即 /usr/local/awstats/wwwroot/cgi-bin
DirData=”.”
# 执行 awstats 的目录:更改成之前在 httpd.conf 或 awstats.conf 中设定 ailas 的路径
DirCgi=”/awstats”
# 图示目录:更改成之前在 httpd.conf 或 awstats.conf 中设定 ailas 的路径
DirIcons=”/awstatsicons”
# 设定语系:预设为 GB2312,可依需求修改为 UTF8 (请参考下面更改语系档设定)
Lang=”cn”
若您希望更细部的设定,请参考安装后 awstats 所提供文件,或参考设定档内容说明。
6.Awstats的中文问题(补丁)
GB2312 码转UTF8 码
中文部份预设为GB2312码,但由于现在许多网站都使用UTF-8的编码方式,这会造成部份统计网页内容会有乱码出现,可以用以下方式来将原语系档转换成UTF-8的编码使用。
解决方法不详细写了,下一个下面的补丁,就能解决问题
中文等的补丁在:https://www.chedong.com/tech/lib.tgz
#cd /usr/local/awstats/wwwroot/cgi-bin
#wget https://www.chedong.com/tech/lib.tgz
#cp -r /usr/local/awstats/wwwroot/cgi-bin/lib /usr/local/awstats/wwwroot/cgi-bin/lib.bak
# tar zxvf lib.tgz
7. 测试设定档
产生统计报表档
接下来就要测试设定档是否设定正确,以便顺利产生相关档案:
# cd /usr/local/awstats/wwwroot/cgi-bin
# perl awstats.pl -config=domain1 -update
这里的 -config=domain1 指的就是 awstats.domain1.conf 的设定档
Update for config “/etc/awstats/awstats.domain1.conf”
With data in log file “/var/log/httpd/domain1.com.-access_log”…
Phase 1 : First bypass old records, searching new record…
Searching new records from beginning of log file…
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)…
Jumped lines in file: 0
Parsed lines in file: 225730
Found 122 dropped records,
Found 87 corrupted records,
Found 0 old records,
Found 225521 new qualified records.
# ls -l
awstats012007.domain1.txt (这就是awstats建立的domain1 2007年01月的统计资料档)
awredir.pl
awstats.pl
如果有看到以上的资料,表示您的awstats设定档正确,而且awstats可以正确分析您apache所产生的log 档。
AWStats的运行模式是这样的:
1.分析日志:运行后将这样的日志统计结果归档到一个AWStats的数据库(纯文本)里;
2.然后是输出:分两种形式
?一种是通过cgi程序读取统计结果数据库输出;
?一种是运行后台脚本将输出导出成静态文件;
动态:
https://localhost/cgi-bin/awstats/awstats.pl?config=www.php-oa.com
添加定时分析指令
crontab -e
* */1 * * * (cd /var/www/awstats/cgi-bin/; ./awstats.pl -update -config=www.php-oa.com)
例:静态生成
若要建立个别站点的统计资料,并且汇出个别的网页(html)档,可以编辑一个script档:
# vi /usr/local/awstats/wwwroot/cgi-bin/upawstats.sh
内容为
#!/bin/bash
cd /usr/local/awstats/wwwroot/cgi-bin
perl awstats.pl -config=domain1 -output > domain1.html
perl awstats.pl -config=domain2 -output > domain2.html
perl awstats.pl -config=domain3 -output > domain3.html
如果还有其它的网站,可依此类推;另外您也可以参考awstats原厂文件的做法。
记得顺便将权限修改为700:
# chmod 700 /usr/local/awstats/wwwroot/cgi-bin/upawstats.sh
权限设定完之后,先将这个script执行一次,若无任何问题,接下来就是将它放入排程工作即可。
检视统计图表
刚才上面执行过的script所产生的档案,我们就可以透过浏览器看查看统计资料了,您可以连到伺服器上的相关网址查看,例如“https://你的IP/awstats/domain1.html”:
统计资料很多,也可以选择指定的月份报表,这部份就不多做介绍了。
8. 设定排程
设定排程让 awstats 定时分析 log 即可:
# crontab -e 或 vi /etc/crontab
内容为
0 3,15 * * * /usr/local/awstats/wwwroot/cgi-bin/upawstats.sh
上面安排在凌晨3点及下午3点执行更新,如果不会设定排程,请参考排程相关教学文章。
9. 结语
有了这样的日志记录分析统计软体,看网站日志真的方便多了,但是日志还是要保留一段时间,毕竟若有恶意攻击事件,还是得分析LOG档内容才行。
最后更新:2017-01-04 22:34:31