Nginx配置文件在有些时候需要我们不断的更新,虽然AWStats现在已经支持输出静态网页形式的分析结果,但是页面布局没有用Perl生成的动态网页方便,而且用自带的用Perl编写的转换工具稍微有点慢,在流量不大的情况下,还是在Perl+Fast CGI上运行更舒服一些。
首先要参考之前的文章,建立好PERL+FCGI的运行环境,这步准备工作就够费劲的。
然后开始切入正题: 1. 下载***版的AWStats,基本就是Perl包,所以没必要用apt-get,解压缩到/usr/local/awstats下
wget http://prdownloads.sourceforge.net/awstats/awstats-6.95.tar.gz
tar -xzf awstats-6.95.tar.gz
mv awstats-6.95 /usr/local/awstats 2. 创建一个存放awstats分析数据的目录
mkdir /var/lib/awstats
chown www-data /var/lib/awstats //这是为了让awstats页面上能直接刷新***数据 3. 自动配置awstats
cd /usr/local/awstats/tools
perl awstats_configure.pl
除了***步因为是Ngin服务器的关系,所以要选none,其他基本按照提示选默认值 4. 手工编辑Nginx配置文件
1) 修改LogFile路径
LogFile = “/var/log/Nginx/access.log”
如果是压缩格式的日志,可以用LogFile = “zcat /var/log/Nginx/%YYYY-24%MM-24%DD-24.gz|"。这里用zcat是因为其使用管道输出,对系统资源消耗比较小,千万不要忘了***的管道操作符!
假设原来/etc/Nginx/Nginx.conf中关于log部分是如此定义的:(要小心各个变量之间必须添加的空格,不能少,否则awstats就不认了)
log_format main ‘$remote_addr $remote_user [$time_local] “$request” $status ‘
‘$host $body_bytes_sent $gzip_ratio “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;
很容易知道,对应awstats配置文件中,LogFormat应该设置为
LogFormat= “%host %logname %time1 %methodurl %code %host_r %bytesd %gzipratio %refererquot %uaquot %otherquot”
***一个选%otherquot是应为$http_x_forwarded_for在AWstats 6.95中还不认识
3) 将AllowToUpdateStatsFromBrowser=1,便于浏览器中即时刷新数据 5. 更新Awstats的分析记录,测试一下刚才的配置
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=yousite.com
如果一切正常,应该看到类似以下的结果:
Create/Update database for config “/etc/awstats/awstats.yoursite.com.conf” by AWStats version 6.95 (build 1.943)
From data in log file “/var/log/Nginx/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: 1234
Found 0 dropped records,
Found 0 corrupted records,
Found 0 old records,
Found 1234 new qualified records. 6. 修改logrotate.d下的Nginx配置文件,在每天切割日志前,更新awstats状态