Nginx 下 PHP-FPM 的正确 web 用户

Nginx 下 PHP-FPM 的正确 web 用户

我一直习惯以用户身份在 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 文档建议的设置假设apachemod_php,这需要如上所述的权限设置。

相关内容