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 具有目录 storagebootstrap/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/

参考链接

标签: CentOS, PHP, Nginx