如果我的術語不符合標準,請提前道歉。
所以我剛剛在有 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 使這一切正常工作。
所以我的問題是:
- 我的配置中有什麼不正確導致 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