按照网上的教程安装好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