因SELinux而产生的麻烦-Apache 不能启动

有时候Apache配置测路径home/网站目录 明明存在,但是还是提示该网站目录不存在,出现这个问题的原因很有可能是SELinux(Security-Enhanced Linux)引起的。

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件

SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上。
虽然SELinux很好用,但是在多数情况我们还是将其关闭,因为在不了解其机制的情况下使用SELinux会导致软件安装或者应用部署失败。

下面这个就是Red Hat Enterprise Linux上提示的 错误,主要原因是提示网站目录不存在。这个时候最有效的解决的办法就是关闭SELinux。

正在启动 httpd:Warning: DocumentRoot [/home/网站目录] does not exist
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
                                                           [失败]

下面是关闭SELinux的几个方法,供参考

方法1:永久性关闭(推荐)

如果不永久性关闭的话,在服务器重启的时候SELinux就会再次启动,进而服务器上配置的服务就又不能正常运行了。

1、查看selinux状态
查看selinux的详细状态,如果为enable则表示为开启。(这些操作都需要在root权限下执行)

# /usr/sbin/sestatus -v

查看selinux的模式

# getenforce

2、关闭selinux

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

上面的命令是不打开文件的情况下直接替换/etc/selinux/config 文件里的SELINUX=enforcing 为SELINUX=disabled ,也就是说您也可以手动打开编辑。

3、重启生效

# reboot

方法2:临时性关闭

这个方法是立即生效,不需要重启,但是重启以后配置就失效了。

1、设置selinux为permissive模式(即关闭)

# setenforce 0

2、设置selinux为enforcing模式(即开启)

# setenforce 1

这样就关闭SELinux了,当安装软件遇到问题时可以考虑关闭SELinux再进行安装