我已经设置了 apache-mpm-itk + php_module,并且用户的文件夹/文件属于它们。但我想将多个帐户迁移到 nginx + php-fpm。
如果我想将 nginx/php-fpm 与属于不同用户的虚拟主机一起使用,那么文件夹/文件的正确权限应该是什么?
例如用户家:
/var/www/user/data/www/domain.com
并且权限是用户:用户
以下是主机 nginx 配置中的代码:
server {
listen 8080;
server_name domain.com;
root /var/www/user/data/www/domain.com/;
index index.php index.html index.htm;
location / {
# First attempt to serve request as file
try_files $uri $uri/index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm/domain.com.socket;
fastcgi_index index.php;
include fastcgi_params;
}
}
以下是 php-fpm 的池配置:
[domain.com]
listen = /var/run/php5-fpm/domain.com.socket
listen.backlog = -1
listen.owner = user
listen.group = user
listen.mode=0660
; Unix user/group of processes
user = user
group = user
; Choose how the process manager will control the number of child processes.
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
; Pass environment variables
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /var/www/user/data/tmp
env[TMPDIR] = /var/www/user/data/tmp
env[TEMP] = /var/www/user/data/tmp
; host-specific php ini settings here
; php_admin_value[open_basedir] = /var/www/user/data:/tmp
php_admin_value[error_log] = /var/user/data/logs/fpm-php.log
php_admin_value[realpath_cache_size] = 4096K
答案1
nginx 工作进程由来自user
指令。默认值为nobody
,但 nginx 官方包在上下文中包含一个包含的user nginx;
默认nginx.conf
配置main
。
当只指定一个用户时,同名的组将应用于 nginx worker。
PHP-FPM 的默认用户:组是 www-data:www-data。
你可以做的是让文件归谁所有,nginx:www-data
这样就可以解决问题了。那么问题就是更新文件,因为任何创建文件的用户都需要写权限。
默认情况下,目录可由其所有者(用户)写入,但不能由该用户组写入,这迫使您执行以下任一操作:
- 使用
nginx
用户更新 Web 内容 - 为该组添加写权限
www-data
,并将管理内容的用户添加到该组
对我来说,前面两种解决方案都不太理想。
我要做的是让目录树归管理内容的用户所有,用来user nginx www-data;
让 nginx 工作者用户属于 www-data 组,并允许用户读/写、组读取而其他用户则不执行任何操作(因此0640
文件的位掩码和0750
目录的位掩码允许用户和组遍历)。
更进一步,我会在目录中添加 setgid 位,以确保将正确的组自动应用于树中创建的任何目录/文件。因此,我会2640
在文件和2750
目录中使用位掩码。
您可以在操作系统级别更改特定分区的默认位掩码...或者您可以坚持使用限制较少但可以完美运行的默认设置,只需更改所有权并添加 setgid 标志即可。