1. 程式人生 > >ubuntu下php-fpm多例項執行配置

ubuntu下php-fpm多例項執行配置

php-fpm服務一般情況下我們只會配置一個php-fpm了,如果我們碰到要實現多例項php-fpm服務要如何來配置呢,下面一起來看看吧。 這裡是在LNMP環境的基礎上配置多例項的過程。因為我在使用的是LNAMP環境,所以額外編譯一份php到/usr/local/php-fpm/,配置檔案在/etc/php-fpm/,並在此基礎上做的筆記。 先修改三個值:

  1. 以static方式,也就是固定程序數量執行php-fpm。 本文仍 以dynamic方式執行
  2. 每個例項建立100個worker程序。(不宜太多,避免不穩定),本文建立25個
  3. 每個程序執行完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。。納悶