PHP-FPM 使用
PHP-FPM
是在 Linux 环境下用来管理调度 PHP 执行的调度器,源码安装时会自动安装,PHP 安装可参考Centos 下安装 PHP (新)
查看版本
# php-fpm -v
启动
# php-fpm -c php.ini -y php-fpm.conf
重启
# php-fpm restart
或
# kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
扩展
# /etc/init.d/php-fpm { start/stop/restart/reload... }
或
# /service php-fpm { start/stop/restart/reload... }
service 命令就是调用 /etc/init.d 目录下的脚本文件,这种方式其实就是对 kill 方式的一种封装
信号
信号 | 作用 |
---|---|
INT | 立即终止 |
QUIT | 平滑终止 |
USR1 | 重新打开日志文件 |
USR2 | 重启(平滑重载所有 worker 进程并重新载入配置和二进制模块) |
如何在同一台主机下运行多个 php 配置监听多个端口
场景有 wwwroot/a.com 和 wwwroot/b.com,a.com 使用 9001 端口,b.com 使用 9002 端口。方法是
- 建立多个配置文件
# cd /usr/local/php/etc/php-fpm.d
# cp www.conf a.com.conf
# vi a.com.conf
修改进程池名,重名的话后面载入的配置会覆盖掉同名的
[www] 修改为 [a.com]
修改使用的用户名和组
user = nginx(与 nginx.con 相同)
group = nginx
修改侦听
listen = 127.0.0.1:9001
按相同方式,再复制出一个 b.com.conf
- 命令方式载入多个配置
# /etc/init.d/php-fpm restart --config-php /usr/local/php/etc/php-fpm.d/a.com.conf
# /etc/init.d/php-fpm restart --config-php /usr/local/php/etc/php-fpm.d/b.com.conf
查看一下
# ps aux|grep php-fpm
输出
# root 24425 0.0 0.1 151364 4892 ? Ss 14:14 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
# nginx 24426 0.0 0.1 151348 4448 ? S 14:14 0:00 php-fpm: pool a.com
# nginx 24427 0.0 0.1 151348 4448 ? S 14:14 0:00 php-fpm: pool a.com
# nginx 24428 0.0 0.1 151348 5380 ? S 14:14 0:00 php-fpm: pool b.com
# nginx 24429 0.0 0.1 151348 5380 ? S 14:14 0:00 php-fpm: pool b.com
# nginx 24430 0.0 0.1 151348 5380 ? S 14:14 0:00 php-fpm: pool www
# nginx 24431 0.0 0.1 151348 5380 ? S 14:14 0:00 php-fpm: pool www
# root 24433 0.0 0.0 112712 968 pts/0 S+ 14:17 0:00 grep --color=auto php-fpm
可以看到 pool 后面有三个地址,a.com、b.com是自建的两个配置,www 是 www.conf 默认的
参考
多个项目公用php的一个端口好还是一个项目使用一个php端口?
linux启动多个php-fpm
PHP-FPM多实例配置及nginx对应配置