Nginx是一款性能很好的web服务程序,已经越来越多的被人使用。
安装方法:http://blog.s135.com/nginx_php_v6/
今天我想说说,如何分析Nginx日志,进而对用户习惯进行分析。
对用户的访问习惯进行分析,是网站运营中比较重要的环节。
我使用Awstats来分析Nginx日志。
Awstats默认支持Apache和IIS(见 http://www.chedong.com/tech/awstats.html ),需要设置一下才能分析Nginx日志。另外Nginx不支持Perl,而Awstats是Perl写的,所以需要一点变通的方法才能使用。
------------------------------------------------------------------
一 :设置Nginx日志格式、分割办法(以便后面Awstats读取)
安装过程就不介绍了,只要安装张宴同学的教程安装:http://blog.s135.com/nginx_php_v6/,就可以了。
重点说一下Nginx日志格式和分割日志的办法。
设置Nginx的日志格式为:
log_format access
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for'
;
access_log /data
1
/logs/access.log access;
|
分割日志办法:
创建脚本/usr/local/webserver/nginx/sbin/cut_nginx_log.sh
vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
|
输入以下内容:
#!/bin/bash
# This script run at 00:00
# The Nginx logs path
logs_path=
"/usr/local/webserver/nginx/logs/"
mkdir -p ${logs_path}$(date -d
"yesterday"
+
"%Y"
)/$(date -d
"yesterday"
+
"%m"
)/
mv ${logs_path}access.log ${logs_path}$(date -d
"yesterday"
+
"%Y"
)/$(date -d
"yesterday"
+
"%m"
)/access_$(date -d
"yesterday"
+
"%Y%m%d"
).log
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`
|
设置crontab,每天凌晨00:00切割Nginx日志
crontab -e
|
输入以下内容:
1
|
00 00 * * * /bin/bash /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
|
这样每天零点准时切割Nginx日志,以日期为文件名保存。
例如:/data1/logs/2010/07/access_20100721.log
------------------------------------------------------------------
二 :安装配置 Awstats
建立Software目录,下载Awstats源码,然后解压。
mkdir -p /data0/software
cd /data0/software
wget http:
//ncu.dl.sourceforge.net/project/awstats/AWStats/7.0/awstats-7.0.tar.gz
tar zxf awstats-7.0.tar.gz
|
检查Perl版本
perl –version
|
执行 awstats-7.0/tools 目录中的 awstats_configure.pl 配置向导,创建统计。
perl /data0/software/awstats-7.0/tools/awstats_configure.pl
|
因为用的是 Nginx,输入 none
-----> Check
for
web server install
Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
Config file path (
'none'
to skip web server setup):
#> none
|
输入y,创建一个新的配置文件
Your web server config file(s) could not be found.
You will need to setup your web server manually to declare AWStats
script
as
a CGI,
if
you want to build reports dynamically.
See AWStats setup documentation (file docs/index.html)
-----> Update model config file
'/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
File awstats.model.conf updated.
-----> Need to create a
new
config file ?
Do you want me to build a
new
AWStats config/profile
file (required
if
first install) [y/N] ?
#> y
|
输入要统计的域名,(以www.tele6.me为例)
-----> Define config file name to create
What
is
the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site,
virtual
server or profile name:
#> www.tele6.me
|
然后一路回车
-----> Define config file path
In which directory
do
you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter
for
default
):
#>
----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can
do
it manually by adding the following command to your cron:
/data0/software/awstats-7.0/wwwroot/cgi-bin/awstats.pl -update -config=www.tele6.me
Or
if
you have several config files and prefer having only one command:
/data0/software/awstats-7.0/tools/awstats_updateall.pl now
Press ENTER to
continue
...
A SIMPLE config file has been created: /etc/awstats/awstats.www.tele6.me.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics
for
'www.tele6.me'
with command:
> perl awstats.pl -update -config=www.tele6.me
You can also build
static
report pages
for
'www.tele6.me'
with command:
> perl awstats.pl -output=pagetype -config=www.tele6.me
Press ENTER to finish...
|
回车完成安装,然后修改awstats的配置文件:
vi /etc/awstats/www.tele6.me.conf
|
查找文件中,修改 日志格式LogFormat 和 日志目录结构LogFile :
LogFile=
"/data1/logs/%YYYY-24/%MM-24/access_%YYYY-24%MM-24%DD-24.log"
LogFormat =
"%host %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %other"
|
创建Awstats数据目录,生成静态文件的目录
mkdir -p /var/lib/awstats
mkdir -p /data0/htdocs/awstats # --- web访问的目录
|
给部分需要执行的文件赋予权限(否则会出现 permission denied 的情况)
chown root /data0/software/awstats-7.0/tools/awstats_buildstaticpages.pl
chmod 700 /data0/software/awstats-7.0/tools/awstats_buildstaticpages.pl
chmod +x /data0/software/awstats-7.0/tools/awstats_buildstaticpages.pl
chown root /data0/software/awstats-7.0/wwwroot/cgi-bin/awstats.pl
chmod 700 /data0/software/awstats-7.0/wwwroot/cgi-bin/awstats.pl
chmod +x /data0/software/awstats-7.0/wwwroot/cgi-bin/awstats.pl
|
然后执行
1
|
/data0/software/awstats-7.0/tools/awstats_buildstaticpages.pl -update -config=www.tele6.me -lang=cn -dir=/data0/htdocs/awstats/ -awstatsprog=/data0/software/awstats-7.0/wwwroot/cgi-bin/awstats.pl
|
这样,一切正常的话就会在 /data0/htdocs/awstats 目录中生成一系列静态文件
还需要把一些图片文件和js文件,copy到 /data0/htdocs/awstats 中 并赋予访问权限
cp -a /data0/software/awstats-7.0/wwwroot/icon/ /data0/htdocs/awstats/icon/
cp -a /data0/software/awstats-7.0/wwwroot/js/ /data0/htdocs/awstats/js/
chmod -R 700 /data0/htdocs/awstats/icon
chmod -R 700 /data0/htdocs/awstats/js
|
ls -lh 查看一下 /data0/htdocs/awstats 目录的情况,如下图:
完成了。
可以访问刚才生成在 /data0/htdocs/awstats 目录里的静态文件看看效果了。