Linux环境下配置多实例php-fpm服务

以下为复制php-fpm.conf和php-fpm服务管理脚本的命令

复制配置文件:

#cd /usr/local/php/etc/php-fpm.d

# cp www.conf  www-1.conf

#sed -i 's#listen = 127.0.0.1:9000#listen = 127.0.0.1:9001#' www-1.conf

#sed -i 's#\[www\]#\[php-fpm-pool-1\]#' www-1.conf

#sed -i 's#pid = run/php-fpm.pid#pid = run/php-fpm-1.pid#'  www-1.conf

启动第一个php实例

#/usr/local/php/sbin/php-fpm  -y /usr/local/php/etc/php-fpm.d/www-1.conf

启动第二个php实例

# cp www.conf  www-2.conf

#sed -i 's#listen = 127.0.0.1:9000#listen = 127.0.0.1:9002#' www-2.conf

#sed -i 's#\[www\]#\[php-fpm-pool-2\]#' www-2.conf

#sed -i 's#pid = run/php-fpm.pid#pid = run/php-fpm-2.pid#'  www-2.conf

#/usr/local/php/sbin/php-fpm  -y /usr/local/php/etc/php-fpm.d/www-2.conf

复制脚本:

cd /etc/init.d/

cp php-fpm  php-fpm-1

sed -i 's#/usr/local/php/etc/php-fpm.conf#/usr/local/php/etc/php-fpm.d/php-fpm-1.conf#' php-fpm-1

sed -i 's#/etc/php-fpm.conf#/usr/local/php/etc/php-fpm.d/php-fpm-1.conf#' php-fpm-1

sed -i 's#/var/run/php-fpm.pid#/var/run/php-fpm-1.pid#' php-fpm-1

启动测试:

service php-fpm-1 restart

执行完上面的命令即复制了一份php-fpm,服务名和配置文件名均为php-fpm-1。

再复制更多份,把上面的命令上的-1替换为-2,listen监听端口往上修改,然后再执行一遍就OK。

然后写一个restart_php_fpm.sh的文件,内容为

service php-fpm-1 restart

service php-fpm-2 restart

service php-fpm-3 restart

... ...

可以用来启动和重启所有的php-fpm实例。关闭用命令killall php-fpm即可。

然后是Nginx配置。

在http段加入:

upstream php-fpm-pool {

server 127.0.0.1:9000 weight=100 max_fails=10 fail_timeout=30;

server 127.0.0.1:9001 weight=100 max_fails=10 fail_timeout=30;

server 127.0.0.1:9002 weight=100 max_fails=10 fail_timeout=30;

}

修改server段:

location ~ .*\.(php|php5)?$ {

fastcgi_pass php-fpm-pool;

fastcgi_index index.php;

include fastcgi.conf;

}

重启nginx php-fpm即可~

配置结束。

多实例在效果上基本等于多台机器的负载均衡,但是我个人还是比较倾向于在单台上配置多实例(累加资源相等的情况下),在一台机器上配置、维护、使用都要方便的多。


发表评论

登录 后发表评论.