必须自定义新服务器的 php-fpm 池配置,我想知道是否有可能/允许/建议有一个新的池文件,其名称按字母顺序排列在原始文件之后,该文件仅具有覆盖初始配置的值。
原始配置在/etc/php/7.0/fpm/pool.d
named中www.conf
。
看来,根据安装相关的页面,工程师直接修改原件(保存一份初始值)。例如
[www]
...
user www-data
group www-data
pm.max_children 2
修改后给出
[www]
...
user myapp ; was www-data
group myapp ; was www-data
pm.max_children 8 ; was 2
但似乎这可能是在下次升级 php-fpm 后重复的任务(此外配置在7.0
路径中,这令人担忧)。
而不是修改原始文件,我想保持它不变,并添加另一个,说wwwmyapp.conf
这将声明同一个池,并且只有已更改的值
在wwwmyapp.conf
[www] ; same pool!
user myapp
group myapp
pm.max_children 8
in pool.d
, 文件列表
www.conf
wwwmyapp.conf
因为在php-fpm.conf
所有池 conf 文件中加载,值wwwmyapp
将在www
( 在同一个www
池中) 之后读取,并且应该覆盖第一个值。
- 它似乎在一些测试中有效并且没有报告错误,但它会一直有效,并且适用于所有值吗?
- 我们应该直接覆盖配置文件吗?
即使在 php.net 上,也无法在任何文档中找到答案。
无法从其他来源找到“官方”确认,但经过一些研究,这里有一些结果:
分析
php7.0-fpm
和更具体的源代码fpm-conf.c
,似乎php-fpm.conf
[ fpm_conf_load_ini_file () ],include
指令都按顺序读取,由于glob ()给出了文件列表,include
的都将对包含处理函数进行递归调用,并且GLOB_NOSORT
选项)因此我们可以假设——至少在这个版本中,考虑到目前的代码,这不太可能很快改变——
pool.d
按字母顺序排列目录配置文件是安全的;任何先前记录的值被之后读取的具有相同名称的条目覆盖。我们有一种干净的方式来处理配置文件
php-fpm
,保持分发文件不变,并添加名称按字母顺序大于打包文件的自定义文件,其中包含必须更改的少数选项。如果你有一些像 php-overrides.ini 这样的文件,你应该把它复制到
/etc/php/7.0/fpm/conf.d/99-overrides.ini
99前缀是由于执行顺序
.conf
通过自定义文件覆盖 [www] 池值:这是可能的,@break-not-so-bad关于如何加载配置文件的解释很棒,我建议你先阅读它。
但绝对值得强调配置文件命名的重要性(因为它可能很棘手):
z-www-overrides.conf
,它是覆盖[www]
池选项 - @istranger一个例子:
创建文件
/etc/php/7.0/fpm/conf.d/z-www-overrides.conf
将覆盖以下设置php-fpm.conf
: