注释:awstats.pl 会到 /etc/awstats目录下搜索,根据读取到的配置文件运行程序,去读取-config中的参数,把扩展成 awstats.
分析日志:运行后将这样的日志统计结果归档到一个awstats的数据库(纯文本)里;
然后是输出:分两种形式
1、一种是通过cgi程序读取统计结果数据库输出;
2、一种是运行后台脚本将输出导出成静态文件;
统计分析完成后,结果还在 Awstats 的数据库中。在 Apache 上,可以直接打开 Perl 程序的网页查看统计。 但Nginx 对 Perl 支持并不好,所以要换个方法,利用 awstats 的工具将统计的结果生成静态文件,这里方便我们还是用脚本来实现
vim /server/scripts/awstats.sh
输入以下内容
#!/bin/sh
Awstats_Dir="/usr/local/awstats"
[ -d /www/awstats ]||mkdir /www/awstats
$Awstats_Dir/wwwroot/cgi-bin/awstats.pl -update -config=www.linuxidc.com
$Awstats_Dir/tools/awstats_buildstaticpages.pl -update -config=www.linuxidc.com -awstatsprog=$Awstats_Dir/wwwroot/cgi-bin/awstats.pl -lang=cn -dir=/www/awstats
脚本内容讲解:
/usr/local/awstats/tools/awstats_buildstaticpages.pl Awstats 静态页面生成工具
-update -config=www.linuxidc.com 更新配置项
-awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl Awstats 日志更新程序路径
-lang=cn 语言为中文
-dir= /www/awstats 统计结果输出目录
awstats_buildstaticpages.pl会根据-config的参数去读取里面的DirData路径下的数据库配置文件,然后生成静态的html文件,生成的文件重定向到/www/awstats目录下。
三、配置nginx实现安全访问
接下来我们要配置nginx使其能安全的访问到分析的数据
vim /usr/local/nginx/conf/nginx.conf
在server{}内添加如下内容:
server {
listen 80;
server_name ;
location / {
root /www/linuxidc;
index index.html index.htm;
access_log /app/logs/www_access.log commonlog;
}
location ~ ^/awstats/ {
root /www/;
index awstats.; #根据自己的网站域名进行更改首页文件
autoindex on;
access_log off;
charset gb2312;
auth_basic "Restricted"; #有些网站不愿意公开网站流量信息,所以加个认证
auth_basic_user_file /usr/local/nginx/htpasswd.pass; #该文件由apache的加密认证工具htpasswd创建
}
location ~ ^/icon/ {
root /usr/local/awststs/wwwroot;
index index.html;
access_log off;
charset gb2312;
}
}
由于nginx没有好的加密认证工具,需要借助apache的htpasswd来实现加密认证功能
htpasswd -c -m /usr/local/nginx/htpasswd.pass linuxidcadmin #用户名为linuxidcadmin
配置完毕之后,检查nginx语法,然后优雅重启之后,用游览器访问,输入账号密码之后即可查看统计信息了。
至此,awstats已经可以实现对Nginx的日志统计及静态化的安全访问功能了。
四、配置awstats自动运行
为了让整个日志的统计过程可以实现自动化,将awstats.sh脚本加入crontab定时任务中去,此时结合上面的定时切割任务,我们的crontab里面会有多出来两条定时任务
1 0 * * * /bin/sh /server/scripts/cut_nginx_log.sh >/dev/null 2>&1
0 1 * * * /bin/sh /server/scripts/awstats.sh >/dev/null 2>&1