ubuntu下php-fpm多例項執行配置
php-fpm服務一般情況下我們只會配置一個php-fpm了,如果我們碰到要實現多例項php-fpm服務要如何來配置呢,下面一起來看看吧。 這裡是在LNMP環境的基礎上配置多例項的過程。因為我在使用的是LNAMP環境,所以額外編譯一份php到/usr/local/php-fpm/,配置檔案在/etc/php-fpm/,並在此基礎上做的筆記。 先修改三個值:
- 以static方式,也就是固定程序數量執行php-fpm。 本文仍 以dynamic方式執行
- 每個例項建立100個worker程序。(不宜太多,避免不穩定),本文建立25個
- 每個程序執行完200次請求即退出。(避免PHP的記憶體洩露問題,也就是記憶體越用越多)
位置: /etc/php5/fpm/pool.d/www.conf
sed -i 's#pm.max_children = 5#pm.max_children = 25#' /etc/php5/fpm/pool.d/www.conf sed -i 's#;pm.max_requests = 500#pm.max_requests = 500#' /etc/php5/fpm/pool.d/www.conf
拷貝: cp /etc/php5/fpm /etc/php5/fpm2
sed -i 's#listen = 127.0.0.1:9000#listen = 127.0.0.1:9001#' /etc/php5/fpm2/pool.d/www.conf
拷貝: cp /etc/init.d/php5-fpm /etc/init.d/php5-fpm2
修改一下幾處,其實就是把對應地方改為fpm2
NAME=php5-fpm2 ... DAEMON_ARGS="--daemonize --fpm-config /etc/php5/fpm2/php-fpm.conf" PIDFILE=/var/run/php5-fpm2.pid ... /usr/lib/php5/php5-fpm2-checkconf || return 1 ...
拷貝: cp /usr/lib/php5/php5-fpm-checkconf /usr/lib/php5/php5-fpm2-checkconf
修改對應地方改為fpm2
errors=$(/usr/sbin/php5-fpm --fpm-config /etc/php5/fpm2/php-fpm.conf -t 2>&1 | grep "\[ERROR\]" || true);
配置完畢,然後啟動
service php5-fpm2 start
毫無反應!!!!
關鍵是,連報錯提示都木有。。。
排錯中。。。。。
發現在 [ -x "$DAEMON" ] || exit 0 時已經退出執行了,解決辦法:cp /usr/sbin/php5-fpm /usr/sbin/php5-fpm2 。
同樣問題依舊出現,繼續,發現進入了 if init_is_upstart; then 條件判斷,導致退出執行,無奈之舉 註釋了exti 語句。。感覺欠妥,但一時不知更好的處理方法,如果有更好的解決辦法,,煩請告知。。在此多謝
終於,,,,可以啟動了。。
配置nginx
位置: /etc/nginx/sites-enabled/default
upstream phpbackend { server 127.0.0.1:9000 weight=50 max_fails=10 fail_timeout=30; server 127.0.0.1:9001 weight=50 max_fails=10 fail_timeout=30; } server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location ~\.php$ { try_files $uri = 404; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass phpbackend; fastcgi_index index.php; include fastcgi_params; } }
重啟nginx,ok
訪問phpinfo,可正常訪問
在這有幾點疑問,不知道大家是否有同樣疑惑,或者知道答案的小夥伴煩請共享下知識,哈哈哈哈
php-fpm明明開啟了多例項執行,9000和90001埠,但是通過訪問phpinfo看到的資訊一直訪問的配置檔案是/etc/php5/fpm下面的,即便通過日誌看到的訪問的是9001埠,配置依舊是/etc/php5/fpm。。納悶