如果我的术语不符合标准,请提前道歉。
所以我刚刚在带有 Nginx 和多个 PHP 版本的 Fedora Workstation 上成功设置了我的工作开发机器(使用 Remi Collet 的 Software Collection)。我有 PHP-5.6.30 监听端口 9056,PHP-7.0.19 监听端口 9070。这工作得很好。
今天早上,我决定尝试使用 FPM 套接字运行两个 PHP 实例,最初它一直有效,直到我重新启动 PHP-FPM 服务(这导致了502错误的网关在浏览器中,以及(13) 拒绝许可nginx error.log 中出现错误)。
因此以 PHP5.6 为例...当我第一次启动php56-php-fpm
生成的服务时/opt/remi/php56/root/var/run/php-fpm/www.sock
,我将生成www.sock
文件的用户和组更改为nginx:nginx
。重新启动后,php56-php-fpm
我得知www.sock
正在重置为root:root
.现在我不会不断地重新启动 FPM,但必须有一种方法可以在.sock
文件上设置一些默认值?我的 fpm conf 文件如下所示:
- /opt/remi/php56/root/etc/php-fpm.d/www.conf:https://pastebin.com/EasyHyEs
- /etc/opt/remi/php70/php-fpm.d/www.conf:https://pastebin.com/dhT8AEJK
- /etc/nginx/nginx.conf:https://pastebin.com/tMuAFnGM
- /etc/nginx/conf.d/default.conf:https://pastebin.com/UjkrcaYw
我意识到这听起来像是一个痛苦的正确工作,考虑到我这样做只是为了本地开发,和我确实使用端口 9056 和 9070 使这一切都正常工作。但我读到,使用套接字与 TCP 相比有一些速度优势,任何可以加快我的本地开发环境的事情都值得付出努力。
所以我的问题是:
- 我的配置中有什么不正确导致 www.sock
root:root
在重新启动相应的 FPM 服务后重置为? - 放弃端口而转向套接字真的值得吗?
- [稍微偏离主题]:使用 Remi Collet 的软件集合,我看到 2 个 PHP 软件包安装到不同的位置:
/opt/remi/php56
并且/etc/opt/remi/php70
......为了保持一致性,我是否应该考虑将其中一个移动到更常见的位置?
谢谢
答案1
有几件事需要检查...
1) 默认情况下,CentOS 下的 PHP 目录中不包含配置文件php-fpm.d
,请确保include=/opt/remi/php56/root/etc/php-fpm.d/*.conf
该文件中包含配置文件php-fpm.conf
。
2) 您需要确保在 php-fpm 池配置中设置套接字所有权,例如:
[www]
listen = /opt/remi/php56/root/var/run/php-fpm/$pool.sock
listen.owner = someuser
listen.group = somegroup
listen.mode = 0600
答案2
就我自己的 remi 而言php80-php-fpm
,我必须将listen.acl_users
变量更改../php-fpm.d/www.conf
为我的网络服务器的用户。例如:
;comment: replace mywebserveruser with your own user
listen.acl_users = mywebserveruser