基础环境
centos 6.x
安装&启动
目前php5.4 以上需编译安装(或remi源安装),本文档只针对php5.3版本,yum安装需配置epel的源,yum源配置详见[LNMP]Linux的Web服务基础配置
<pre>
yum install -y phpphp-fpm php-cli php-common php-pdo php-mysql php-mbstring php-mcrypt php-gdphp-xml php-pear php-pecl-apc php-pecl-memcache
chkconfig php-fpm on
service php-fpm start
</pre>
配置
php配置
由于php 配置较多,以下只列出生产环境需要配置的部分(检查以下配置),文件路径:/etc/php.ini
<pre>
;debug、error、版本显示相关配置
error_reporting =E_ALL & ~E_DEPRECATED
display_errors =Off
display_startup_errors= Off
log_errors = On
track_errors = Off
html_errors = Off
mysqlnd.collect_memory_statistics= Off
session.bug_compat_42= Off
session.bug_compat_warn= Off
;安全相关配置
short_open_tag =Off
expose_php = Off
enable_dl = Off
disable_functions= eval,passthru,exec,system,chroot,scandir,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,ini_set,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru
;时区配置
date.timezone =Asia/Shanghai
;上传文件大小限制
post_max_size =16M
upload_max_filesize= 16M
;脚本执行时间限制
max_execution_time= 60
max_input_time =60
;脚本内存限制,一般设为128M,如非必要(无可避免的上传大文件/处理大数组)不增加
memory_limit =128M
</pre>
php-fpm配置
公共配置:/etc/php-fpm.conf,需要修改的参数如下,其余参数使用默认值
<pre>
;设置pid
pid =/var/run/php-fpm/php-fpm.pid
;错误日志处理
error_log =/var/log/php-fpm/error.log
log_level = notice
;异常自启(表示60s内出现 60次 SIGSEGV orSIGBUS 异常时候,自动重启)
emergency_restart_threshold= 60
emergency_restart_interval= 60s
;设置子进程接受主进程复用信号的超时时间
process_control_timeout= 0
;后台执行php-fpm
daemonize = yes
</pre>
资源池配置
在/etc/php-fpm.d/*.conf(每个文件代表一个资源池,机器性能足够时候,可以区分多个资源池,隔绝不同的php应用),默认是 /etc/php-fpm.d/www.conf,需要修改的参数如下,其余参数使用默认值
<pre>
[www]
;监听方式,用tcp方式较稳定
listen = 127.0.0.1:9000
;backlog,排队长度设置
listen.backlog = 4096
;php-fpm进程的用户&用户组(即程序读写文件/目录所使用的用户&用户组)
user = nobody
group = nobody
;设置php-fpm进程,一般大于8G内存建议用 static 模式,max_children的计算方式,每个php-fpm进程约占 20~30M 的内存,根据预计给php-fpm的内存计算出合理值,例如预计给php-fpm 预留6G使用内存,那max_children 应设置为 200~300 之间
pm = static
pm.max_children = 300
;子进程接收n个请求后,自动重启
pm.max_requests = 600
;慢处理日志,表示超过45秒则记录为慢处理
request_slowlog_timeout = 45s
slowlog = /var/log/php-fpm/www-slow.log
</pre>