Apache2.4 配置后重启时报错(centOS7)

按照网上的教程安装好Apache的依赖包,然后开始安装httpd:

sudo yum install mod_ssl 

sudo yum install httpd

安装完成之后,配置一下 /etc/httpd/conf.d/ssl.conf 中SSL的证书等文件,配置好之后重启https,首先记得先检查配置是否有问题

httpd -t    

### 如果配置有问题,应该会报错,并会明确指出错误的位置,将错误完全解决之后,重新输入该命令,没有问题的话就会出现提示:

Syntax OK

### 然后输入重启apache指令

sudo apachectl restart

### 正常来讲,应该能启动,但是我的却没有

如果配置没有问题,但是还是出错了,可以通过以下指令查看详细的错误信息:

sudo tail /var/log/httpd/error_log

Apache的日志记录记录的错误信息中有一些比较重要的信息如下:

 [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0

 [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)

 [error] (13)Permission denied: Init: Can't open server certificate file /etc/ssl/crt/server_selfsigned.crt

从提示上来看,是我配置的证书文件读取失败,权限不够。然后我找了其他人的给的一段提示:

This is known as an selinux issue. The certificate file can have a wrong context and will be unreadable by the httpd daemon even if the regular permissions is correct.

简单翻译一下:这是一个selinux的问题,证书文件的上下文环境不对(我的证书文件是通过某种方式上传到服务器的文件夹下的),即使改文件的权限设置没有问题,httpd守护进程也无法读取改文件。

解决的办法是输入指令将此文件的上下文环境修改一下:

chcon unconfined_u:object_r:httpd_config_t:s0 /etc/ssl/crt/server_selfsigned.crt

配置的其他证书文件肯定也需要此指令进行修改。修改完成之后,再重启:

sudo apachectl restart

就没有问题了。

解决SELinux的问题还有一个办法,就是直接把这个策略给关闭掉:

sudo vim /etc/selinux/config

将SELINUX字段改为:SELINUX=disabled (需要重启)

然后临时关闭一下,下次启动因为上面的指令配置了所以也会生效:

sudo /usr/sbin/setenforce 0

你可能感兴趣的:(Apache2.4 配置后重启时报错(centOS7))