[单机多实例配置分享]
以下为复制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即可~
配置结束。
多实例在效果上基本等于多台机器的负载均衡,但是我个人还是比较倾向于在单台上配置多实例(累加资源相等的情况下),在一台机器上配置、维护、使用都要方便的多。