我想知道为什么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/apache2的APACHE_SERVER_FLAGS中的SSL开关。
有一天,我会写一个脚本,将APACHE_SERVER_FLAGS值APACHE_SERVER_FLAGS为多个-D参数。
注意如此自我:现在prefork以这些参数启动-f /etc/apache2/httpd.conf -D SSL -D SYSTEMD -D FOREGROUND 。