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。。納悶

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM