小知识:Nginx配置文件实现AWStats静态页面

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状态

/var/log/nginx/*.log {   daily   missingok   rotate 7   compress   delaycompress   notifempty   create 640 www-data www-data   dateext   sharedscripts   prerotate   /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=yoursite.com   sleep 59   endscript   postrotate   if [ -f /var/run/nginx.pid ]; then   kill -USR1 `cat /var/run/nginx.pid`   fi   endscript  

7. 接下来是最关键的NGINX配置文件

#AWStatus Perl CGI server   server {   listen 80;   server_name awstats.yoursite.com;   access_log /var/log/nginx/awstats.log main;   error_log /var/log/nginx/awstats_error.log; #这可以为fail2ban留下记录   root /usr/local/awstats/wwwroot;   auth_basic “Restricted”;   auth_basic_user_file /etc/nginx/awstatus.pass;   location = / {   rewrite ^ /awstats.pl?config=freshventure.info;   }   location ~ .*(\.cgi|\.pl?)$ {   gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped   root /usr/local/awstats/wwwroot/cgi-bin;   fastcgi_pass 127.0.0.1:8000;   fastcgi_index awstats.pl;   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   include fastcgi_params;   }  

好了,测试一下http://awstats.yoursite.com,和前文一样,输入密码后,这次看到的应该就awstats的界面了

8. 如果需要配置静态页面,则可以在logrotate中替换掉上面的awstats.pl, 换成

/usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config=yoursite.com -lang=cn -dir=/usr/local/awstats/wwwroot -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl。

如果需要更频繁的更新访问情况,则可以把这句命令加入到crontab中,例如crontab -e -uwww-data。

然后nginx配置文件相应调整为显示静态网页就可以了。

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Linux 系统使用私钥登录的教程详解

2023-3-25 2:54:17

建站知识

小知识:Linux中git用https连接时不用每次输入密码的方法

2023-3-25 3:02:29

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索