按照流程安装好CentOS7系统之后,如果没注意,经常会遇到Permission denied错误,那可能需要考虑一下是不是因为SELinux配置不当导致的。
比如说下面这个Nginx日志中记录的问题:
2018/01/30 18:02:49 [crit] 951#951: *1 connect() to unix:/run/php-fpm/php-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 113.91.150.2, server: cloudbool.com, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/php-fpm.sock:", host: "cloudbool.com", referrer: "https://cloudbool.com/archive/"
配置Nginx的时候,老是报502错误,我确认我后端PHP-FPM配置没有问题,监听路径也是没问题,但是无论怎么调试,怎么重启都是报502,这下真是百思不得其姐。
想来想去还是查看Nginx日志,突然,从Nginx发现了上面那段记录,日志里很明确提示了,连接上游PHP-FPM的时候权限不允许,于是我查看了Nginx和PHP-FPM的运行用户,发现是一致的,这下只能考虑SELinux了。
说一下SELinux这东西。
都说SELinux很厉害的一个工具,但是是在配置好的情况下,我用了CentOS7这么久,就没见谁认真研究过这东西,大家都是只知其名,没见谁用过,我也一样,实在没那么多精力去研究,开着还干扰我使用服务器,只能考虑关闭了。
查看SELiunx状态:
sestatus
如果结果不是disabled,则说明当前SELinux是开着的,我们需要更改配置文件将其永久关闭:
vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled # 将这行改为disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
将上面SELINUX改为disabled,然后重启系统就好了。
之前是说有个临时关闭SELinux的命令,但是我发现,从某个系统版本开始,那个命令死活不能临时关闭,暂时发现只能这么永久关闭了。命令如下:
setenforce 0