## 配置php-fpm模板php
[root@localhost vhosts]# > /usr/local/php-fpm/etc/php-fpm.conf #清空html
[root@localhost vhosts]# vim /usr/local/php-fpm/etc/php-fpm.confmysql
[global]nginx
pid = /usr/local/php-fpm/var/run/php-fpm.pidsql
error_log = /usr/local/php-fpm/var/log/php-fpm.logvim
[www]服務器
listen = /tmp/www.sock併發
user = php-fpmtcp
group = php-fpmide
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
[www1]
listen = /tmp/www1.sock
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
解釋說明:
[global] 全局配置
pid = 進程id存放路徑,必須寫php所在路徑
error_log = 錯誤日誌路徑,必須寫php所在路徑
[www] 資源池(支持多個池子,提供給不一樣的nginx虛擬主機服務,資源平均分配)
listen = tcp、sock通訊方式(名字可自定義)
user = 用戶必須存在
group = 組必須存在
;listen = 填寫sock存在路徑,使用.sock必須設置如下兩行(/dev/shm/xxx.sock文件放入內存高併發會快)
;listen.owner = ↓
;listen.group = ↓
用來定義文件屬主屬組,由nginx配置文件中的user決定(爲了.sock文件能夠讓nginx調用。不定義默認以root用戶生成.sock文件,但運行時是由nginx設置的user運行,則會出現權限不夠報502)
pm = dynamic 進程管理方式dynamic動態,隨着訪問量的增長而增長,減小而殺死空閒的進程
pm.max_children = 最大生成子進程數
pm.start_servers = 初始生成子進程數
pm.min_spare_servers = 最小空閒子進程數
pm.max_spare_servers = 最大空閒子進程數
pm.max_requests = 子進程接受php請求數,決定子進程的生命週期(最多接受的請求數,超出自動銷燬,爲了防止進程疲勞出現異常)
rlimit_files = 文件描述符限制
更加詳細的解釋:
動態、靜態子進程pm = static/dynamic
若是選擇static,則由pm.max_children指定固定的子進程數。
若是選擇dynamic,則由如下參數決定:
pm.max_children ,子進程最大數
pm.start_servers ,啓動時的進程數
pm.min_spare_servers ,保證空閒進程數最小值,若是空閒進程小於此值,則建立新的子進程
pm.max_spare_servers ,保證空閒進程數最大值,若是空閒進程大於此值,此進行清理
對於專用服務器,pm能夠設置爲static
## 檢查語法
[root@localhost vhosts]# /usr/local/php-fpm/sbin/php-fpm -t
## 重啓
[root@localhost vhosts]# /etc/init.d/php-fpm restart
## 查看進程
[root@localhost vhosts]# ps aux | grep php-fpm
解釋說明:
出來了兩個pool,一個www,一個www1,那麼默認啓動20個,若是等一下子沒有請求過來,空閒的話,它就會一點一點地去直接銷燬、殺掉,到最後會變得愈來愈少。
啓動多個池子做用:能夠把不一樣的域名對應不一樣的池子。
## 引用php-fpm資源池
[root@localhost vhosts]# vim /usr/local/nginx/conf/vhosts/111.conf
server {
listen 80;
server_name 111.com;
index index.html index.htm index.php;
root /data/www;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/www.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
}
}
解釋說明:
fastcgi_pass 上面php-fpm.conf裏若是是sock,這就是sock文件,要一致,不然會502
注意:配置多個資源池listen不能相同,而且在虛擬主機解析.php文件的fastcgi_pass項配置
## 慢查詢日誌
mysql配置慢查詢日誌爲了最總執行緩慢、效率低的sql語句,找到後能夠針對性的調優優化;
php一樣也有執行慢的程序,能夠定位php腳本具體那一行執行效率慢;
[root@localhost vhosts]# vim /usr/local/php-fpm/etc/php-fpm.conf
[www]
slowlog = /usr/local/php-fpm/var/log/slow.log
request_slowlog_timeout = 1
解釋說明:
在某個資源池中配置
slowlog = 慢查詢日誌追蹤性能
request_slowlog_timeout = 配合slowlog設置過濾時間
## open_basedir
[root@localhost vhosts]# vim /usr/local/php-fpm/etc/php-fpm.conf
[www]
php_admin_value[open_basedir]=/data/www/:/tmp/
解釋說明:
php_admin_value[open_basedir]=dir:dir 鎖定站點訪問目錄,多目錄用:分割
一樣在某個資源池中進行配置,注意鎖定目錄時候請指定資源池對應的站點目錄