为什么不`httpd2 -S`抓住SSL证书问题,而`systemctl restart apache2.service`呢?

我想知道为什么rcapache2 (redirect到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" 

我的configuration基于apache2-vhost-ssl.template 。 该模板具有以下条件。 我认为原因是条件满足apache2.service ,而不是 httpd2

 <IfDefine SSL> <IfDefine !NOSSL> 

这是事实吗? 如果是这样:为什么? 如果不是,原因是什么?
我怎样才能解决它使用httpd2 -S

运行service将调用apache2的完整init脚本,该脚本将存储在/etc/init.d/apache2 。 该脚本有很多检查,包括检查它是否已经运行,不太可能包含在Apache httpd本身。 你应该养成使用service命令停止和启动的习惯。 这适用于大多数现代Linux。

如果你只想检查你的configuration,而不开始或停止任何事情,那么你可以做apache2ctl configtest ,如果一切顺利,将报告:

 Syntax OK 

解决方法(因为apache2ctl configtest不能在我的系统上工作):

 httpd2 -D SSL -S 

它将定义位于/etc/sysconfig/apache2APACHE_SERVER_FLAGS中的SSL开关。

有一天,我会写一个脚本,将APACHE_SERVER_FLAGSAPACHE_SERVER_FLAGS为多个-D参数。

注意如此自我:现在prefork以这些参数启动-f /etc/apache2/httpd.conf -D SSL -D SYSTEMD -D FOREGROUND