我想知道为什么rcapache2
(重定向到systemctl restart apache2.service
)出现此错误并失败,但httpd2 -S
根本没有抱怨:
Jun 28 14:37:50 revue start_apache2[4037]: SSLCertificateFile: file '/etc/apache2/ssl.crt/pluimers.com.crt' does not exist or is empty
我知道证书应该在那里(一会儿就会有),但我总是假定httpd2 -S
会执行相同的检查systemctl restart apache2.service
。
显然不是。
SSL 已启用:
# grep APACHE_SERVER_FLAGS /etc/sysconfig/apache2
# 5. To finally enable ssl support, you need to add 'SSL' to APACHE_SERVER_FLAGS
APACHE_SERVER_FLAGS="SSL"
我的配置基于apache2-vhost-ssl.模板。模板有以下情况。我认为原因是该条件是满意apache2.service
,但是不是经过httpd2
:
<IfDefine SSL>
<IfDefine !NOSSL>
这确实是原因吗?如果是,为什么?如果不是,原因是什么?
我该如何使用 来解决这个问题httpd2 -S
?
答案1
运行service
将调用 apache2 的完整初始化脚本,该脚本将存储在 中/etc/init.d/apache2
。该脚本有很多检查,包括检查它是否已在运行,这些检查不太可能包含在 apachehttpd
本身中。您应该养成使用命令来停止和启动事物的习惯service
。这适用于大多数现代 Linux。
如果您只想检查配置而不启动或停止任何操作,那么您可以apache2ctl configtest
这样做,如果一切顺利,将会报告:
Syntax OK
答案2
解决方法(因为apache2ctl configtest
在我的系统上不起作用):
httpd2 -D SSL -S
它将定义 中的 SSLAPACHE_SERVER_FLAGS
开关/etc/sysconfig/apache2
。
有一天,我会编写一个脚本,将APACHE_SERVER_FLAGS
值分解为多个-D
参数。
请注意:现在 prefork 使用这些参数启动-f /etc/apache2/httpd.conf -D SSL -D SYSTEMD -D FOREGROUND
。