分类存档: 系统管理 - 第4页

Nginx日志切割脚本

使用logrotate:

vi /etc/logrotate.d/

/usr/local/nginx/logs/*.access.log error.log{
daily
missingok
#保留365个log
rotate 365
compress
#延后压缩
delaycompress
#无文件不压缩
notifempty
#创建的文件权限设置为644,用户组nobody:root
create 644 nobody root
#多个文件脚本轮换只执行一次
dateext
#在文件末尾添加当前日期
olddir /usr/local/nginx/logs/backlog/
#把备份文件拷贝到老目录,防止再次备份
sharedscripts
prerotate
#rotate之前sleep59秒
sleep 59
endscript
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
/usr/local//tools/_buildstaticpages.pl -update -config=www.sasacity.com -dir=/app/public//data/ -lang=cn -configdir=/usr/local//wwwroot/cgi-bin/ -awstatsprog=/usr/local//wwwroot/cgi-bin/.pl
endscript
}
调试脚本用
/usr/sbin/logrotate -d /etc/logrotate.d/nginx
使用无误后执行一下看看
/usr/sbin/logrotate -f /etc/logrotate.d/nginx
如果执行没有问题,编辑 /etc/crontab,把cron.daily的运行日期改到每天晚上23点59分执行(注意到我们在脚本中sleep了59秒):
59 23 * * * root run-parts /etc/cron.daily

这个方法的缺点是dateext无法自动定制格式,如果文件很多,我们需要放在2008/05/, 2008/06/, 2008/07/这样的目录结构,因此我编写了以下脚本,供参照:
vi /usr/local/nginx/sbin/cut_nginx_log.sh
logs_path="/usr/local/nginx/logs/"
logfiles="www.access.log blog.access.log host.access.log error.log"

server=`hostname`
date=$(date -d "yesterday" +"%Y%m%d")
save_path=${logs_path}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
mkdir -p ${save_path}

for log in ${logfile};
do mv ${logs_path}/${log} ${save_path}/${log}.${date}.${server};
done

kill -USR1 `cat /var/run/nginx.pid`

for log in ${logfile};
do gzip ${save_path}/${log}.${date}.${server};
done

添加cronjob
crontab -e
0 0 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh

VN:F [1.9.14_1148]
Rating: 8.5/10 (2 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

Nginx下设置运行Awstats

还没有安装awstats的先安装配置awstats。由于Nginx目前的稳定版本0.6.34对perl和fastcgi的支持还不是很好。所以有2种方案在nginx下使用awstats. 1. 用awstats静态发布;2. 安装nginx的perl fastcgi。推荐第一种方式。
无论使用那种方式,首先必须先要把nginx的默认log格式改成和apache的combine格式相同:

log_format main ‘$remote_addr – $remote_user [$time_local] ‘
‘”$request” $status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

然后在awstats的配置文件中加入以下:

LogFormat=”%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %otherquot”

建立logrotate,这个部分我们假设用静态生成的方式

vi /etc/logrotate.d/

/usr/local/nginx/logs/access.log {
daily
missingok
rotate 52
compress
delaycompress notifempty
create 644 nginx root sharedscripts
prerotate
/usr/local//tools/_buildstaticpages.pl -update -config=www.abc.com -dir=/app/public//data/ -lang=cn -configdir=/usr/local//wwwroot/cgi-bin/ -awstatsprog=/usr/local//wwwroot/cgi-bin/.pl
#/usr/local/awstats/wwwroot/cgi-bin/awstats.pl --config=www.abc.com -update
endscript
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}

logrotate由cron执行, 需要编辑 /etc/crontab
将cron.daily的执行时间设置为0 0 * * *分
使用nginx的cgi配置

需要先让perl的fastcgi方式运行并在后台侦听socket或端口,nginx的官方wiki中有一篇介绍如何编写这个脚本,其中需要把/opt/nginx/fcgi/cgi.sock修改成/var/run/fcgi.sock。这里很重要的一点是设置/var/run/fcgi.sock,我有一次就是因为这个问题,没有能运行起来

chown nobody:nobody /var/run/fcgi.sock
/usr/local/bin/cgiwrap-fcgi.pl &

如果不能运行,先安装perl的FCGI和FCGI::ProcManager模块
perl -MCPAN -e 'install FCGI'
perl -MCPAN -e 'install FCGI::ProcManager'

如果可以运行了,那perlfastcgi已经在后台运行了,现在配置nginx.conf来支持perl
location ~ .*\.pl$ { 
        gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped 
        fastcgi_pass  unix:/var/run/fcgi.sock; 
        fastcgi_index awstats.pl; 
        include fastcgi_params; 
        }

据nginx wiki的说明,现在这段代码,但是还是很ugly,可见还并不stable。英文不好的网管可以看这篇中文翻译,只要按着一步执行就可以了。下面给出完整nginx.conf中awstats的server配置:

server {
        listen       80;
        server_name  wa.mysite.com;
        access_log   logs/wa.access.log main;
        root /usr/local/awstats/wwwroot/cgi-bin/;
        auth_basic            “Restricted”;
        auth_basic_user_file  sasabrand.pass;

        location / {
            index awstats.pl?config=www.mysite.com;
        }

        location ~ .*\.pl?$ {
            gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped
            fastcgi_pass  unix:/var/run/fcgi.sock;
            fastcgi_index awstats.pl;
            fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_read_timeout 60;
            include        fastcgi_params;
        }

        location ~ .*\.?$ {
            fastcgi_pass   127.0.0.1:1026;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

Web日志分析

打印所有IP, 并按IP排序
cat 1.log |awk ‘{print $1}’| sort | uniq -c |sort -nr |less
然后用 ip地址查询or ip-adress.cm,决定是否 deny 掉。在 ubuntu 下直接使用
whois xxx.xxx.xxx.xxx

统计网站被Google和百度索引的情况:
#!/bin/sh
YESTERDAY=`date -d yesterday +%y%m%d`
LOG_PATH=’/home/apache/logs’
grep -i Googlebot $LOG_PATH/access_log|awk ‘{print $7}’ |sort -u>spider/$YESTERDAY.googlebot.txt
grep -i baiduspider $LOG_PATH/access_log|awk ‘{print $7}’ |sort -u>spider/$YESTERDAY.baiduspider.txt

awk ‘$4 ~/^\[08\/Jan\/2008/(print $0}’ 1.log 打印2008年1月4日的日志
awk ‘$9 == “200″ || $10 < 20 && $1 != 58\.37\.170\.231′ 1.log 如果返回代码不是200或者返回数据少于20并且非内网用户,则返回log
awk学习笔记awk编程学习笔记

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

Awstats安装和配置

目前我同时使用awstat和google analytics,他们各有优劣:GA的报表相对全面而美观但是定制麻烦,而awstats由于是基于网站日志的分析,所以相对来说比较准确; 另外awstats能比较有效的获得搜索引擎bots的最近访问时间,这对seo也是很有帮助的,由于GA是用js方式的,而搜索引擎的bot都会忽略js, 因而GA是无法获得搜索引擎bots相关信息的。

安装

下载安装最新的awstats

cd /home/software
wget http://prdownloads.sourceforge.net//awstats-6.9.tar.gz
tar -xvzf awstats-6.9.tar.gz
mv awstats-6.9 /usr/local/awstats
cd /usr/local/awstats
mkdir -m 755 data

配置Awstats
cd /usr/local/awstats/tools
perl awstats_configure.pl

我们这里假设conf文件配置在/usr/local/awstats目录下。

更新数据库
perl awstats.pl -config=www.jefflei.com -update
如果成功看到结果,可以将以上命令放到crontab中执行,每天8点10分执行更新:
10 8 * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.xyz.com >/dev/null 2>&1

Awstats的高级配置

安装GeoIP
编译安装GeoIP的C应用库:
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
tar -xvzf GeoIP.tar.gz
cd GeoIP
./configure
make;make install

安装Perl下的Geo IP应用
perl -MCPAN -e 'install "Geo::IP"'

然后下载GeoIP数据库,具体介绍如何自动下载ip数据库和纯真国内数据库请见我另外一篇博文:

cd /usr/local/share/GeoIP/
wget -t 5 http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget -t 5 http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget -t 5 http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz
gzip -d *
修改awstats的配置文件,添加如下几行:
LoadPlugin="decodeutfkeys"
LoadPlugin="toolstips"

LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoLiteCity.dat"
LoadPlugin="geoip_org_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoIPASNum.dat"
#百万级以上网址使用:LoadPlugin="hashfiles"

更新搜索引擎定义
对于中文网页,参照车东blog中介绍的中文搜索引擎定义:
wget http://www.chedong.com/tech/lib.tgz
解压后将search_engine.pm, robots.pm覆盖/usr/local/awstats/wwwroot/cgi-bin/lib/目录下的原文件

使用多awstats配置文件
多个站点很多配置选项是重复的,如果每个配置文件都修改维护起来会很麻烦,AWStats提供了配置文件包含的功能,我们使用一个通用配置:awstats.common.conf。这样每个配置文件只要include这个common设置就可以了:
awstats.www.abc.com.conf:
Include "awstats.common.conf"
LogFile="/usr/local//logs/access_log.store.%NS"
#压缩文件用 LogFile="zcat /home/www/logs/%YYYY/%MM/www.access.log.%YYYY-24%MM-24%DD-24.gz|" 效率比gzip高

SiteDomain="www.abc.com"
HostAliases="abc.com www.abc.com 127.0.0.1 localhost"

awstats.help.abc.com.conf:
Include "awstats.common.conf"
LogFile="/usr/local/apache/logs/access_log.help.%NS"
SiteDomain="help.abc.com"

AWStats自带了批处理工具tools/awstats_updateall.pl,可以批量地遍历一个目录下所有地配置文件并运行统计, 更新cron脚本如下:
10 8 * * * /usr/local/awstats/tools/awstats_updateall.pl now -configdir=/usr/local/awstats/wwwroot/cgi-bin/ >>/usr/local/awstats/logs/cronaw.log 2>>/usr/local/awstats/logs/cronaw.err

Awstats, Google Analytics, WebAlizer访问统计数据相差很大的问题

这种情况一般是由于被统计的数据不同所造成的,

首先,在awstats配置文件中设置不被统计的文件:
NotPageList="css js class gif jpg jpeg png bmp ico swf pdf txt zip arj rar gz z bz2 wav mp3 wma mpg avi"
webAlizer中,可以修改PageType 配置。

另外,Awstats的页面数包括了ajax请求的页面和include页面,而一般这些页面并不会种GA代码,因此这部分的差异也许会很大, 参见我另一篇如何更精确统计awstats差异页面的文章。

使用准确的中国ip数据库

见刘晖博客,awstats安装QQip数据库。安装后如果还有问题可以安装perl的Net::XWhois

perl -MCPAN -e ‘install Net::XWhois’

安装无误后可根据需要设定系统自动更新IP数据库

extra的编写

推荐几个有用的AWStats Extra扩展统计, 包括获取搜索引擎最近访问时间,抓取地图,还有RSS的访问等,对我们了解搜索引擎bot的动向和RSS用户很有帮助。参见车东关于RSS的一些说明

调整Bots定义

这里介绍了在哪里找robots的定义,参见 DBANotes的这篇关于114的说明

多服务器的日志合并分析

只要你的文件系统没有使用NFS,就需要把不同服务器上的log文件同步到一台上合并分析,合并之前还需要排序以提高awstats的效率

第一步,用rsync同步文件
#!/bin/sh
rsync -avz --progress -e "ssh -p 22" www@10.0.0.1/data/logs/`date --date "1 days ago" +*.\%Y\%m\%d` /data/logs/

在原服务器上删除前一天的日志:
50 4 * * * /bin/rm -f /data/logs/`date --date "1 days ago" +*.\%Y\%m\%d`

第二步,分析日志,假设我们有3台服务器的日志传到第四台服务器上合并日志:
-rw-r--r-- 1 nobody root 1538516677 Oct 29 05:20 www.access.log.1.gz
-rw-r--r-- 1 nobody root 1507444445 Oct 29 04:12 www.access.log.2.gz
-rw-r--r-- 1 nobody root 1507444445 Oct 29 04:43 www.access.log.3.gz

我们利用logresolvemerg.pl配置文件中配置日志处理
LogFile="/usr/local/awstats/tools/logresolvemerge.pl /usr/local/nginx/logs/www.access.log.* |"
logresolve可以合并、排序日志文件,它还自动检测文件格式,只要zcat或bzcat在PATH中,它会自动调用zcat

nginx下的awstats设置

千万级日志的awstats设置

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

ZF Compatible Suhosin Setup

需要使用ZendFramework,建议在php.ini中对suhosin的设置如下:

suhosin.mail.protect = 0
suhosin.memory_limit = 128M
suhosin.post.max_vars = 500
suhosin.post.max_value_length = 325000
suhosin.request.max_vars = 500
suhosin.session.cryptua = off

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

软件使用和目录设置规范

常用系统程序操作

mysql关闭和启动
/bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql &
FastCGI启动和关闭
ulimit -SHn 51200
/usr/local/sbin/-fpm start|stop|restart|reload|quit|logrotate

NGINX启动和关闭
/usr/local/webserver//sbin/
重载nginx配置
kill -HUP 'cat /var/run/nginx.pid'
调试配置文件
nginx -t -c /etc/nginx/nginx.conf
nginx接受的信号
TERM, INT 快速关闭
QUIT 从容关闭
HUP 重载配置,用新的配置开始新的工作进程从容关闭旧的工作进程
USR1 重新打开日志文件
USR2 平滑升级可执行程序。
WINCH 从容关闭工作进程

memcached启动和关闭
/usr/local/bin/memcached -m 64m -l 127.0.0.1 -p 11211 -d -u root -P /var/run/memcached.pid -c 128 -vv
kill 'cat /var/run/memcached.pid'

配置开机自启时执行程序:修改/etc/rc.local

系统程序文件目录规范



mysql目录             /usr/local/mysql
mysql数据文件         /usr/local/data
mysql soketfile       /tmp/
mysql配置文件         /etc/my.cnf

php目录              /usr/local/
php-config目录        /usr/local/bin/php-config
php.ini              /etc/php.ini
eAccelorator Cache    /var/cache/eaccelerator_cache
php fastcgi执行文件   /usr/local/sbin/php-fpm
php fastcgi配置文件   /usr/local/etc/php-fpm.conf
php fastcgi日志    /usr/local/logs/php-fpm.log
php fastcgi pid文件  /usr/local/logs/php-fpm.pid
fastcgi接口(TCP方式) /tmp/php-cgi.sock
php扩展文件目录 /usr/local/lib/php/extensions/no-debug-non-zts-20060613/

nginx目录             /usr/local/nginx
nginx                 /var/log/nginx
nginx配置文件     /usr/local/nginx/conf/nginx.conf
nginx pid文件     /var/run/nginx.pid
nginx logrotate文件  /usr/local/nginx/sbin/cut_nginx_log.sh
web文件目录           /app/
系统启动执行文件      /etc/rc.local 
sysctl文件        /sbin/sysctl
sysctl配置文件     /etc/sysctl.conf

memcached       /usr/local/bin/memcached
memcached PID文件   /var/run/memcached.pid

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

Memcached安装和使用

Memcached安装

Memcached需要libevent,所以需要先安装libevent

wget "http://www.monkey.org/~provos/libevent-1.4.9-stable.tar.gz"
./configure --prefix=/usr/
make;make install

安装后libevent在/usr/libs目录下

wget http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz
./configure --with-libevent=/usr/
make;make install

安装后memcached默认在/usr/local/bin/目录下

Memcached使用

这篇memcache的使用是介绍不错,下面简介一下启动和关闭:

启动

/usr/local/bin/memcached -m 64m -l 127.0.0.1 -p 11211 -d -u root -P /var/run/memcached.pid -c 128 -vv

选项 说明
-p 使用的TCP端口。默认为11211
-m 最大内存大小。默认为64M
-vv 用very vrebose模式启动,调试信息和错误输出到控制台
-d 作为daemon在后台启动
-c 最大运行的并发连接数,默认是1024,按照服务器的负载量来设定
-P 设置保存Memcache的pid文件
-l 监听的服务器IP地址,如果有多个地址的话
-u 运行Memcache的用户,默认不能用root启动,所以当前用户为root用户时,需要用-u参数来指定

关闭
kill 'cat /var/run/memcached.pid'

测试连接
$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set foo 0 0 3     (保存命令)
bar               (数据)
STORED            (结果)
get foo           (取得命令)
VALUE foo 0 3     (数据)
bar               (数据)

这里有PHP的memcached库安装说明

VN:F [1.9.14_1148]
Rating: 3.0/10 (1 vote cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

安装phpMyadmin3.1.1

wget http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-3.1.1-all-languages.tar.gz?download

tar -xvzf phpMyAdmin-3.1.1-all-languages.tar.gz
cp phpMyAdmin-3.1.1-all-languages  /app/public/data/pma311
cp config.sample.inc. config.inc.

vi config.inc.php找到 blowfish_secret, 设置加密秘钥. 然后可以直接设定$cfg['Servers'][$i]['controluser'] ,$cfg['Servers'][$i]['controlpass'] ;也可以由第一次登陆后由phpMyadmin自动设置。

在webserver中为pma目录建立密码 
htpasswd -c /usr/local//conf/.htpasswd  
输入两遍密码后创建密码文件.htpasswd,然后在nginx的server中增加如下两行
auth_basic ‘Restricted’;
auth_basic_user_file .htpasswd;

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

nginx简单配置文件

user nobody;
worker_processes 1;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /var/run/.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 60;
tcp_nodelay on;
gzip_static on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_proxied any;
# Some version of IE 6 don't handle compression well on some mime-types,
# so just disable for them
gzip_disable "MSIE [1-6].(?!.*SV1)";
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
include             /usr/local/nginx/conf/vhosts/*;
server {
listen 80;
server_name www.leizhenfang.com;
root /app/public/www;
#charset koi8-r;
access_log logs/host.access.log main;
location / {
root /app/public/www;
index index.html index.htm index.;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .*\.(php|php5)?$ {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1d;
}
}
server {
listen 80;
server_name admin.leizhenfang.com;
root /app/public/www;
access_log logs/host.access.log main;
auth_basic "Restricted";
auth_basic_user_file webadmin.pass;
location / {
root /app/public/www;
index index.html index.htm index.php;
}
location ~ .*\.(php|php5)?$ {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
server {
listen 80;
server_name status.leizhenfang.com;
location / {
stub_status on;
access_log off;
}
}
}

其中webadmin.pass是在conf目录下的htpasswd生成的文件

VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)

php-fpm配置

<?xml version="1.0" ?> 
<configuration> 
 
  All relative paths in this config are relative to 's install prefix  
 
  <section name="global_options"> 
 
    Pid file  
    <value name="pid_file">/usr/local/logs/php-fpm.pid</value> 
 
    Error log file  
    <value name="error_log">/usr/local/logs/php-fpm.log</value> 
 
    Log level  
    <value name="log_level">notice</value> 
 
    When this amount of php processes exited with SIGSEGV or SIGBUS ...  
    <value name="emergency_restart_threshold">10</value> 
 
    ... in a less than this interval of time, a graceful restart will be initiated.  
    Useful to work around accidental curruptions in accelerator's shared memory.  
    <value name="emergency_restart_interval">1m</value> 
 
    Time limit on waiting child's reaction on signals from master  
    <value name="process_control_timeout">5s</value> 
 
    Set to 'no' to debug fpm  
    <value name="daemonize">yes</value> 
 
  </section> 
 
  <workers> 
 
    <section name="pool"> 
 
      Name of pool. Used in logs and stats.  
      <value name="name">default</value> 
 
      Address to accept fastcgi requests on.  
      Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'  
      <value name="listen_address">127.0.0.1:9000</value> 
 
      <value name="listen_options"> 
 
        Set listen(2) backlog  
        <value name="backlog">-1</value> 
 
        Set permissions for unix socket, if one used.  
        In Linux read/write permissions must be set in order to allow connections from web server.  
        Many BSD-derrived systems allow connections regardless of permissions.  
        <value name="owner"></value> 
        <value name="group"></value> 
        <value name="mode">0666</value> 
      </value> 
 
      Additional php.ini defines, specific to this pool of workers.  
      <value name="php_defines"> 
        <value name="sendmail_path">/usr/sbin/sendmail -t -i</value> 
        <value name="display_errors">1</value> 
      </value> 
 
      Unix user of processes  
        <value name="user">nobody</value> 
 
      Unix group of processes  
        <value name="group">nobody</value> 
 
      Process manager settings  
      <value name="pm"> 
 
        Sets style of controling worker process count.  
        Valid values are 'static' and 'apache-like'  
        <value name="style">static</value> 
 
        Sets the limit on the number of simultaneous requests that will be served.  
        Equivalent to Apache MaxClients directive.  
        Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi  
        Used with any pm_style.  
        <value name="max_children">128</value> 
 
        Settings group for 'apache-like' pm style  
        <value name="apache_like"> 
 
          Sets the number of server processes created on startup.  
          Used only when 'apache-like' pm_style is selected  
          <value name="StartServers">20</value> 
 
          Sets the desired minimum number of idle server processes.  
          Used only when 'apache-like' pm_style is selected  
          <value name="MinSpareServers">5</value> 
 
          Sets the desired maximum number of idle server processes.  
          Used only when 'apache-like' pm_style is selected  
          <value name="MaxSpareServers">35</value> 
 
        </value> 
 
      </value> 
 
      The timeout (in seconds) for serving a single request after which the worker process will be terminated  
      Should be used when 'max_execution_time' ini option does not stop script execution for some reason  
      '0s' means 'off'  
      <value name="request_terminate_timeout">0s</value> 
 
      The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file  
      '0s' means 'off'  
      <value name="request_slowlog_timeout">0s</value> 
 
      The log file for slow requests  
      <value name="slowlog">logs/slow.log</value> 
 
      Set open file desc rlimit  
      <value name="rlimit_files">51200</value> 
 
      Set max core size rlimit  
      <value name="rlimit_core">0</value> 
 
      Chroot to this directory at the start, absolute path  
      <value name="chroot"></value> 
 
      Chdir to this directory at the start, absolute path  
      <value name="chdir"></value> 
 
      Redirect workers' stdout and stderr into main error log.  
      If not set, they will be redirected to /dev/null, according to FastCGI specs  
      <value name="catch_workers_output">yes</value> 
 
      How much requests each process should execute before respawn.  
      Useful to work around memory leaks in 3rd party libraries.  
      For endless request processing please specify 0  
      Equivalent to PHP_FCGI_MAX_REQUESTS  
      <value name="max_requests">500</value> 
 
      Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.  
      Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)  
      Makes sense only with AF_INET listening socket.  
      <value name="allowed_clients">127.0.0.1</value> 
 
      Pass environment variables like LD_LIBRARY_PATH  
      All $VARIABLEs are taken from current environment  
      <value name="environment"> 
        <value name="HOSTNAME">$HOSTNAME</value> 
        <value name="PATH">/usr/local/bin:/usr/bin:/bin</value> 
        <value name="TMP">/tmp</value> 
        <value name="TMPDIR">/tmp</value> 
        <value name="TEMP">/tmp</value> 
        <value name="OSTYPE">$OSTYPE</value> 
        <value name="MACHTYPE">$MACHTYPE</value> 
        <value name="MALLOC_CHECK_">2</value> 
      </value> 
 
    </section> 
 
  </workers> 
 
</configuration>

如果内存较小,可以考虑使用以下修改:
将启动的php-cgi进程数由原来的128个改为5个:
<value name=”max_children”>5</value>
将TCP模式改为Unix Socket模式:

<value name=”listen_address”>/tmp/php-cgi.sock</value>

VN:F [1.9.14_1148]
Rating: 10.0/10 (2 votes cast)
VN:F [1.9.14_1148]
Rating: 0 (from 0 votes)
Page 4 of 6« First...23456