PHP-FPM 设置多pool及配置文件重写操作示例


Posted in PHP onOctober 02, 2019

本文实例讲述了PHP-FPM 设置多pool及配置文件重写操作。分享给大家供大家参考,具体如下:

重写配置文件

1、清空php配置文件

命令:> /usr/local/php/etc/php-fpm.conf

2、重新写入php-fpm配置

命令:vim /usr/local/php/etc/php-fpm.con

配置文件

# 全局配置
[global]
# PID、可以不填
pid = /usr/local/php/var/run/php-fpm.pid
# 错误日志路径、可以不填
error_log = /usr/local/php/var/log/php-fpm.log
# www虚拟主机配置、可写多个
# pool命名:www
[www]
# 监听socket方式
# 可以写成listen = 127.0.0.1:9000
listen = /tmp/php-fcgi.sock
# 开启php-fpm的执行用户
user = php-fpm
# 开启php-fpm的所属组
group = php-fpm
# 监听listen的用户,和后面的nginx的一致
listen.owner = nobody
# 监听listen的组,和后面的nginx的一致
listen.group = nobody
# 怎样的形式启用进程
pm = dynamic
# 最大开启子进程数
pm.max_children = 50
# 一开始启动多少子进程
pm.start_servers = 20
# 空闲时保留多少个子进程
pm.min_spare_servers = 5
# 最多空闲子进程
pm.max_spare_servers = 35
# 进程处理多少个请求之后销毁重建
pm.max_requests = 500
# 限定打开最大的文件数
rlimit_files = 1024

3、测试配置文件

# 测试配置文件
/usr/local/php/sbin/php-fpm -t

测试成功:

[30-Jan-2018 23:43:32] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful

4、重启动php-fpm

命令:/etc/init.d/php-fpm start

5、查看启动状况

查看启动进程

ps -aux | grep php-fpm
root   1530 0.0 0.5 32036 2928 ?    Ss  23:45  0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
php-fpm  1531 0.0 0.4 32036 2512 ?    S  23:45  0:00 php-fpm: pool www
php-fpm  1532 0.0 0.4 32036 2512 ?    S  23:45  0:00 php-fpm: pool www
php-fpm  1533 0.0 0.4 32036 2512 ?    S  23:45  0:00 php-fpm: pool www
php-fpm  1534 0.0 0.4 32036 2512 ?    S  23:45  0:00 php-fpm: pool www

查看监听是否为nobody用户

ls -l /tmp/php-fcgi.sock
srw-rw-rw-. 1 nobody nobody 0 1月 30 23:45 /tmp/php-fcgi.sock

注:权限都需要有读写,nginx才可以访问到socket。

查看nginx是否调用了nobody

ps aux | grep nginx
root   1606 0.0 0.1  5352  640 ?    Ss  02:46  0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody  1607 0.0 0.3  6164 1568 ?    S  02:46  0:00 nginx: worker process
root   1609 0.0 0.1  5980  744 pts/0  S+  02:46  0:00 grep nginx

设置多个pool

需求:置两个pool,www1,www2

注:pool对应一个nginx的站点,这样可以提高安全,如同站点切割。

1、主配置文件下配置两个pool。

配置文件

# 全局配置
[global]
# PID、可以不填
pid = /usr/local/php/var/run/php-fpm.pid
# 错误日志路径、可以不填
error_log = /usr/local/php/var/log/php-fpm.log
# www虚拟主机配置、可写多个
[www1]
# 监听socket方式 可以写成127.0.0.1:9000 TCP的。
listen = /tmp/php-fcgi1.sock
# 开启php-fpm的执行用户
user = php-fpm
# 开启php-fpm的所属组
group = php-fpm
# 监听listen的用户,和后面的nginx的一致
listen.owner = nobody
# 监听listen的组,和后面的nginx的一致
listen.group = nobody
# 怎样的形式启用进程、static static静态、pm dynamic动态
pm = dynamic
# 最大开启子进程数
pm.max_children = 50
# 一开始启动多少子进程
pm.start_servers = 20
# 空闲时保留多少个子进程
pm.min_spare_servers = 5
# 最多空闲子进程
pm.max_spare_servers = 35
# 进程处理多少个请求之后销毁重建
pm.max_requests = 500
# 限定打开最大的文件数
rlimit_files = 1024
# 定义慢日志
slowlog = /tmp/xxx_slow.log
# 处理延迟多少秒记录一次慢日志
request_slowlog_timeout = 1
# 配置隔离网站
php_admin_value[open_basedir]=/usr/local/url1:/usr/local/url2
# www虚拟主机配置、可写多个
[www2]
# 监听socket方式 可以写成127.0.0.1:9000 TCP的。
listen = /tmp/php-fcgi2.sock
# 开启php-fpm的执行用户
user = test
# 怎样的形式启用进程、static static静态、pm dynamic动态
pm = dynamic
# 最大开启子进程数
pm.max_children = 50
# 一开始启动多少子进程
pm.start_servers = 20
# 空闲时保留多少个子进程
pm.min_spare_servers = 5
# 最多空闲子进程
pm.max_spare_servers = 35
# 进程处理多少个请求之后销毁重建
pm.max_requests = 500
# 限定打开最大的文件数
rlimit_files = 1024
# 定义慢日志
slowlog = /tmp/xxx2_slow.log
# 处理延迟多少秒记录一次慢日志
request_slowlog_timeout = 1
# 配置隔离网站
php_admin_value[open_basedir]=/usr/local/url1:/usr/local/url2

2、查看两个pool的启动进程

查看进程

ps -aux | grep php-rpm
root   2486 0.4 0.6 32240 3136 ?    Ss  09:31  0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
php-fpm  2487 0.0 0.4 32036 2532 ?    S  09:31  0:00 php-fpm: pool www1
php-fpm  2488 0.0 0.4 32036 2532 ?    S  09:31  0:00 php-fpm: pool www1
php-fpm  2489 0.0 0.4 32036 2532 ?    S  09:31  0:00 php-fpm: pool www1
php-fpm  2490 0.0 0.4 32036 2532 ?    S  09:31  0:00 php-fpm: pool www1
php-fpm  2491 0.0 0.4 32036 2532 ?    S  09:31  0:00 php-fpm: pool www1
php-fpm  2492 0.0 0.4 32036 2532 ?    S  09:31  0:00 php-fpm: pool www1
test   2507 0.0 0.4 32036 2536 ?    S  09:31  0:00 php-fpm: pool www2
test   2508 0.0 0.4 32036 2536 ?    S  09:31  0:00 php-fpm: pool www2
test   2509 0.0 0.4 32036 2536 ?    S  09:31  0:00 php-fpm: pool www2
test   2510 0.0 0.4 32036 2536 ?    S  09:31  0:00 php-fpm: pool www2
test   2511 0.0 0.4 32036 2536 ?    S  09:31  0:00 php-fpm: pool www2
test   2512 0.0 0.4 32036 2536 ?    S  09:31  0:00 php-fpm: pool www2

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php 常用类整理
Dec 23 PHP
PHP中将数组转成XML格式的实现代码
Aug 08 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
Laravel 5 框架入门(三)
Apr 09 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
通过PHP设置BugFree获取邮箱通知
Apr 25 PHP
PHP获取当前时间不准确问题解决方案
Aug 14 PHP
php实现大文件断点续传下载实例代码
Oct 01 #PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 #PHP
基于Laravel-admin 后台的自定义页面用法详解
Sep 30 #PHP
Laravel-admin之修改操作日志的方法
Sep 30 #PHP
laravel 字段格式化 modle 字段类型转换方法
Sep 30 #PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
Sep 30 #PHP
laravel-admin的图片删除实例
Sep 30 #PHP
You might like
php.ini 中文版
2006/10/28 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
PHP中__get()和__set()的用法实例详解
2013/06/04 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
JS 控件事件小结
2012/10/31 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
Python线性方程组求解运算示例
2018/01/17 Python
python redis 删除key脚本的实例
2019/02/19 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
python中time包实例详解
2021/02/02 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
档案接收函范文
2014/01/10 职场文书
表决心的诗句大全
2014/03/11 职场文书
产品质量承诺范本
2014/03/31 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
个人四风问题整改措施
2014/10/24 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书