[
背景
]
给公司同事装了个
nginx
的平台,想监控下来自那里的人访问,就想到了
awstats
。可也让我头疼了一会
,awstats
跑的是
perl cgi
,而我按照张宴的配置是不可以跑
perl
的
cgi
的。就有了现在这篇文章。本文章是借助coolerfeng兄弟的大作
[url]http://coolerfeng.blog.51cto.com/133059/97723[/url]
的延续,也可以说是完整版吧
!
呵呵
!
[
过程
]
Perl
的
cgi
配置按照
coolerfeng
大哥的就可以了。不过有几点注意,在这里要说明下
(1)
location ~ ^/cgi-bin/.*\.cgi$ {
gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped
fastcgi_pass unix:/var/run/nginx/cgi.sock;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME /var/www/cgi-bin$fastcgi_script_name;
此处要修改为
:
fastcgi_param SCRIPT_FILENAME
$document_root
$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
(2)
./cgiwrap-fcgi.pl >/dev/null 2>&1 &
执行后,需要再执行
Chown �CR www:www /usr/local/webserver/perl/nginx/fcgi/cgi.sock
每次运行一个后台进程后,都要再执行下
chown
(3)
/var/log/nginx { #
说真的,我一开始就被这个搞晕了,修改为
/home/wiki/www/logs/wikilogs.log,
这样就可以轮替
wikilogs.log
了。
/home/wiki/www/logs/wikilogs.log {
daily
missingok
rotate 7
compress
delaycompress notifempty #
如果日志为空,延时压缩
create 644 nginx root #
注意,这个要修改与你的
nginx
运行的用户权限一样,如我的是
www,
那么就要改成
create 644 www root
sharedscripts
prerotate
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl --config=www.mysite.com -update #
改成你在执行
awstats_configure.pl
时配置的
website
名称,如我的
wikiob.xxxx.com
,那么就是
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl --config=wikiob.xxxx.com -update
endscript
postrotate
if [ -f /usr/local/nginx/nginx.pid ]; then
kill -USR1 `cat /usr/local/nginx/nginx.pid` #
要修改成自己的
nginx.pid
的路径,如我的
/usr/local/webserver/nginx/nginx.pid
fi
endscript
}
注意
:可以用
logrotate -vf /etc/logrotate.d/nginx
调试,用这个来排除错误
!
(4)
只需要修改
nginx
的
logformat
,不需要更改
awstats
的
logformat
,保留为
1
便可,如果按照
cooler
兄的更改,我这便报这个问题,
Found 6 corrupted records, ==
》显示不了数据
.
几点注意后,我们来安装
awstats
(
1
)下载,解压
如:
/usr/local/awstats
这个路径很重要,因为
awstats
的配置默认路径就是这个,我曾将
tools
下的工具移到其他目录下,再去执行配置时,会报一些问题给你的,并且告诉你,他的默认路径就是这个。
(
2
)
cp -r /usr/local/awstats/wwwroot/* /home/wiki/www/awstats/
这样,就把
css,classes,icon ,js
文件夹移到了
/home/wiki/www/awstats/
(
3
)修改
/
添加
nginx
原先:
location ~ ^ /cgi-bin/.*\.cgi$ {
修改为:
location ~ ^/awstats/cgi-bin/.*\.(cgi|pl)?$ {
追加
:
location /classes/ {
alias /home/wiki/www/awstats/classes/;
}
location /css/{
alias /home/wiki/www/awstats/css/;
}
location /icon/ {
alias /home/wiki/www/awstats/icon/;
}
(4)
生成
awstats
配置文件
Cd /usr/local/awstats/tools
Perl awstats_configure.pl
按照提示做,基本没问题。(配置文件会生成在
/etc/awstats
下)
为什么不将
tools
目录也移走呢?
答案:因为
awstats
的默认目录在
/usr/local/awstats
,如果我移走了这个,在生成配置文件时,需要从
wwwroot
下读取一个默认的配置文件,可惜我改了名字,所以不能移动了。除非我将有这样的一个目录
/usr/local/webserver/awstats/wwwroot/cgi-bin
等在第二步拷过来的目录,可惜我只有
/usr/local/webserver/awstats/ cgi-bin
,这样,我需要修改
nginx.cfg
那样,我访问的时候就要
[url]http://wikiob.xxxx.com/awstats/wwwroot/cgi-bin/awststs.pl[/url]
,这样不容易记忆,也不习惯。曾想用
alias
来实现,
location /awstats/ {
alias /home/wiki/www/awstats/wwwroot/;
}
Location ~ ^/awstats /cgi-bin/.*\.(cgi|pl)?${
但后面还是出现了很多问题,
所以,只能不移了。
(
5
)修改
awstats
的配置文件
Vi /etc/awstats/awstats.wikiob.xxxx.com
Logfile=”/home/wiki/www/logs/wikilogs.log”
Mkdir /var/lib/awstats
Chown �CR www:www /var/lib/awstats
(6)
添加
crontab
Crontab �Ce
*/5 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=wikiob.xxxx.com
[
完成
]
[url]http://wikiob.xxxx.com/awstats/cgi-bin/awstats.pl[/url]
便可以正常访问了。
[
总结
]
朋友的力量是无穷的
…….
天助自助者。嘻嘻。。。。本文仅供参考
.