centos 7 合理设置 nginx、php-fpm 和网站目录权限
Nginx 和 PHP 安装请参考:CentOS 7 Laravel 环境 LNMP (Nginx + PHP 7.3 + MySQL 5.7)安装
创建网站所需要的用户
useradd -s /sbin/nologin www
useradd mysite
用户说明 www 为 web 运行用户,mysite 为网站项目所用者。
更改 nginx 和 php-fpm
打开 /etc/nginx/nginx.conf
文件, 把运行用户改成 user www;
打开 /etc/php-fpm.d/www.conf
文件, 把运行用户改成 user = www
,运行用户组改成 group = www
更改 php-fpm 用户后问题:
无法写入 session,原因是 /var/log/php 目录没有权限
chown root.www /var/lib/php/opcache/
chown root.www /var/lib/php/session/
chown root.www /var/lib/php/wsdlcache/
更改 log 目录所有者
chown -R www /var/log/nginx/
chown -R www /var/log/php-fpm/
PHP 文件上传 nginx 权限错误 open() "/var/lib/nginx/tmp/client_body/" failed (13: Permission denied)
解决方法:chown www -R /var/lib/nginx/
更改网站根目录用户和用户组
更改网站根目录用户为 myite 和用户组为 www,用户组需要与 nginx 和 php-fpm 一致。
chown -R mysite:www /wwwroot/
更改网站目录和文件权限
所有者拥有对目录的读、写、执行权限,对文件有读、写权限
所有组拥有对目录的读、执行权限,对文件有读权限
其他用户不允许有任何权限。
find /wwwroot/ -type d -exec chmod 750 {} \;
find /wwwroot/ -type f -exec chmod 640 {} \;
需要给 www 用户写入的目录权限则,只需要给组添加写权限
find ./uploads -type d -exec chmod 770 {} \;
find ./uploads/ -type f -exec chmod 660 {} \;
Laravel 项目权限设置
Laravel 项目需要 nginx 和 php-fpm 具有目录 storage
和 bootstrap/cache
有读写权限。
进入到 Laravel 项目根目录后,执行以下命令
方法一(不推荐)
chmod -R 770 ./storage
chmod -R 770 ./bootstrap/cache
chmod -R 770 ./public/uploads
方法二(推荐)
find ./storage -type d -exec chmod 770 {} \;
find ./storage -type f -exec chmod 660 {} \;
find ./bootstrap/cache -type d -exec chmod 770 {} \;
find ./bootstrap/cache -type f -exec chmod 660 {} \;
find ./public/uploads -type d -exec chmod 770 {} \;
find ./public/uploads -type f -exec chmod 660 {} \;
执行 composer install
后需要更改 vendor 目前所属组
chown -R mysite.www vendor/