我一直习惯以用户身份在 Nginx 下运行 PHP www-data
,用于所有操作:php 服务、cron、CLI 等。不过最近,在阅读了本文进而本文,我想知道使用不同的用户运行这些服务是否有必要?这是针对服务器上的单个 Magento 2 应用程序。
创建新用户是否足够:
adduser magento2user
passwd magento2user
usermod -a -G www-data magento2user
然后在 php 中/usr/local/etc/php-fpm.d/www.conf
:
[www]
user = magento2user
group = magento2user
...
listen.owner = www-data
listen.group = www-data
最后:
chown -R magento2user:www-data /var/www/html
我的困惑来自于Magento 2 开发文档:
如果您运行自己的 Magento 服务器,我们建议使用两个用户:一个用于传输文件和运行命令行实用程序,另一个用于 Web 服务器软件。如果可能,最好这样做,因为这样更安全。
相反,您有单独的用户:
• 运行 Magento Admin(包括安装向导)和店面的 Web 服务器用户。
• 命令行用户,这是您可以用来登录服务器的本地用户帐户。此用户运行 Magento cron 作业和命令行实用程序。
那么,PHP-FPM 是否应该以 的身份运行www-data
,但文件归属magento2user
于该www-data
组的人所有?
根据 Simon Greenwood 的回答进行编辑
如果我运行,ps aux | grep nginx | grep -v grep
我会得到以下输出:
1 www-data 0:00 nginx: master process nginx -g daemon off;
7 www-data 0:00 nginx: worker process
...所以我认为我不需要'etx/nginx/nginx.conf
写这样的条目user www-data
答案1
我倾向于建议nginx
以系统用户身份运行,因此www-data
对于您而言,并php-fpm
以非特权用户身份运行,这可以与 shell 用户相同。您不必让非特权用户www-data
处于nginx
将请求传递给php-fpm
. 进行执行的组中。Magento 文档建议的设置假设apache
和mod_php
,这需要如上所述的权限设置。