Andy's Blog » » Nginx + AWStats 完整安装配置手记 21Andy.com

Nginx + AWStats 完整安装配置手记 21Andy.com

之前我写过一篇《1分钟完美安装最新 CentOS + Nginx + PHP-FPM + MySQL

今天接下来分享一下我成功安装 Nginx + AWStats 的笔记,就是用 AWStats 来分析 Nginx 的日志
OK,进入主题

1. 安装 AWStats
可以一行搞定

yum -y install awstats

如果不能 yum 安装,请运行

rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

另外,装一下 GeoIP,一会可以分析IP的国家

yum -y install GeoIP GeoIP-data GeoIP-devel perl-Geo-IP

OK!装好了!目录是在 /usr/share/awstats 下,配置文件在 /etc/awstats

现在说下手动安装 AWStats,很简单,就是下载解压,改下文件权限,建个目录而已,用 yum 的方法的话这些都帮你自动搞定了,区别在于路径不同哈

wget http://prdownloads.sourceforge.net/awstats/awstats-6.95.zip
unzip awstats-6.95.zip
mv awstats-6.95 awstats
mv awstats /usr/local/
chmod +x /usr/local/awstats/tools/awstats_configure.pl
chmod +x /usr/local/awstats/wwwroot/cgi-bin/awstats.pl
chmod +x /usr/local/awstats/tools/awstats_buildstaticpages.pl
# 这里是用来存放 AWStats 的数据库文件的
mkdir /var/lib/awstats

2. 新建 AWStats 配置文件

cd /usr/local/awstats/tools/
perl ./awstats_configure.pl

几个小问题自己选Y和填下名称,不再详述,注意用 yum 的方法安装的话路径不一样,/etc/awstats 下也有样例给你参考
主要改动以下几行,这里我添加详细说明一下

# 这日 AWStats 解析的日志格式,现在的 Nginx 默认就是这个格式了!这里删除了最后的  %otherquot
LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"

# css 和图片文件位置,对于站点根目录
StyleSheet="/awstats/css/awstats_bw.css"
DirIcons="/awstats/icon"

# 这玩意不用多说吧,就是可以显示IP国家的
LoadPlugin="geoip GEOIP_STANDARD  /usr/share/GeoIP/GeoIP.dat"

我新建的文件是 /etc/awstats/awstats.21andy.com.conf
我的 Nginx 日志文件在 /www/logs/21andy.com_access.log
在最后,我会用 awstats 根据 awstats.21andy.com.conf 来为 21andy.com_access.log 生成静态 HTML 报告

3. 改 Nginx 配置文件
vim /etc/nginx/nginx.conf
删除或替换这段,因为 Nginx 默认的格式已经是我上面设置的了,所以可以删除了,用默认的!
你也可以替换成下面这样的

log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent"';

开启 Nginx 日志记录, 看看你的 server 段里有没有这行,没有就加上

access_log  /www/logs/21andy.com_access.log;

接着在主机段配置里加上
vim /etc/nginx/server.conf

location ~ ^/awstats/ {
    access_log off;
    charset gbk;
}

4. 定时切割 Nginx 日志文件
vim /root/cut_nginx_log.sh
输入以下内容

#!/bin/bash
# 这里根据你自己的文件名来写
mv /www/logs/21andy.com_access.log /www/logs/21andy.com_access_$(date -d "today" +"%Y%m%d").log
kill -USR1 `cat /var/run/nginx.pid`

给它可执行

chmod +x /root/cut_nginx_log.sh

可以试一下运行

/bin/bash /root/cut_nginx_log.sh

/www/logs/ 里是不是多一个 21andy.com_access_20101016.log 文件出来,就OK了,一会我们再加到 cron 里执行

本文作者 Andy

5. 新建要生成 HTML 报告的目录,把图片和CSS复制进去

mkdir -p /www/21andy.com/awstats/
cp -R /usr/local/awstats/wwwroot/css /www/21andy.com/awstats/
cp -R /usr/local/awstats/wwwroot/icon /www/21andy.com/awstats/

6. 生成 AWStats 数据库

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=21andy.com

这里 -config=21andy.com 意思是说使用 /etc/awstats/awstats.21andy.com.conf 这个文件

7. 生成 AWStats 日志分析报告

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

最后你会看到告诉你生好了 awstats.21andy.com.html 打开浏览器去看看吧

8. 定时运行
最后定时切割 Nginx 日志和生成报告,我定在每天23点的最后2分钟来搞
crontab -e
输入以下内容

# AWStats + Nginx log
57 23 * * * /bin/bash /root/cut_nginx_log.sh
58 23 * * * /usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config=21andy.com -dir=/www/21andy.com/awstats -lang=cn -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

本文作者:21andy.com
大功告成!

Incoming search terms:

Tags: nginx, awstats, log

本文地址: http://blog.21andy.com/20101016/1980.html

3 评论 to “PHP开源CMS之MODx”

  1. ayanamist 于 2010-10-17 00:23:52 发表:

    有一点对你很奇怪,为什么不用现成的logrotate

  2. 拆墙部队 于 2010-10-17 16:19:39 发表:

    我刚才用手机看这篇文章,乱的要死,还是电脑爽啊。

  3. HaHa 于 2012-08-31 17:57:07 发表:

    大概看了一下,觉得非常好,因快要下班了,回家慢慢看。