基礎(chǔ)環(huán)境
centos 6.x
安裝&啟動
目前php5.4 以上需編譯安裝(或remi源安裝),本文檔只針對php5.3版本,yum安裝需配置epel的源,yum源配置詳見[LNMP]Linux的Web服務(wù)基礎(chǔ)配置
<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 配置較多,以下只列出生產(chǎn)環(huán)境需要配置的部分(檢查以下配置),文件路徑:/etc/php.ini
<pre>
;debug、error、版本顯示相關(guān)配置
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
;安全相關(guān)配置
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
;時區(qū)配置
date.timezone =Asia/Shanghai
;上傳文件大小限制
post_max_size =16M
upload_max_filesize= 16M
;腳本執(zhí)行時間限制
max_execution_time= 60
max_input_time =60
;腳本內(nèi)存限制,一般設(shè)為128M,如非必要(無可避免的上傳大文件/處理大數(shù)組)不增加
memory_limit =128M
</pre>
php-fpm配置
公共配置:/etc/php-fpm.conf,需要修改的參數(shù)如下,其余參數(shù)使用默認(rèn)值
<pre>
;設(shè)置pid
pid =/var/run/php-fpm/php-fpm.pid
;錯誤日志處理
error_log =/var/log/php-fpm/error.log
log_level = notice
;異常自啟(表示60s內(nèi)出現(xiàn) 60次 SIGSEGV orSIGBUS 異常時候,自動重啟)
emergency_restart_threshold= 60
emergency_restart_interval= 60s
;設(shè)置子進(jìn)程接受主進(jìn)程復(fù)用信號的超時時間
process_control_timeout= 0
;后臺執(zhí)行php-fpm
daemonize = yes
</pre>
資源池配置
在/etc/php-fpm.d/*.conf(每個文件代表一個資源池,機(jī)器性能足夠時候,可以區(qū)分多個資源池,隔絕不同的php應(yīng)用),默認(rèn)是 /etc/php-fpm.d/www.conf,需要修改的參數(shù)如下,其余參數(shù)使用默認(rèn)值
<pre>
[www]
;監(jiān)聽方式,用tcp方式較穩(wěn)定
listen = 127.0.0.1:9000
;backlog,排隊(duì)長度設(shè)置
listen.backlog = 4096
;php-fpm進(jìn)程的用戶&用戶組(即程序讀寫文件/目錄所使用的用戶&用戶組)
user = nobody
group = nobody
;設(shè)置php-fpm進(jìn)程,一般大于8G內(nèi)存建議用 static 模式,max_children的計算方式,每個php-fpm進(jìn)程約占 20~30M 的內(nèi)存,根據(jù)預(yù)計給php-fpm的內(nèi)存計算出合理值,例如預(yù)計給php-fpm 預(yù)留6G使用內(nèi)存,那max_children 應(yīng)設(shè)置為 200~300 之間
pm = static
pm.max_children = 300
;子進(jìn)程接收n個請求后,自動重啟
pm.max_requests = 600
;慢處理日志,表示超過45秒則記錄為慢處理
request_slowlog_timeout = 45s
slowlog = /var/log/php-fpm/www-slow.log
</pre>