Apache 每个星期日都会自动停止。为什么?

Apache 每个星期日都会自动停止。为什么?

每周日 3 点 Apache 都会重启。问题是:服务器上有一个带有加密私钥的证书。由于自动重启时未提供密码,Apache 停止运行,我的所有网站都瘫痪了。

我想阻止 Apache 每周重新启动。怎么做?这是当时的 apache 日志。之前[notice] caught SIGTERM, shutting down没有任何相关内容,如果您想知道...

[Sun Feb 15 03:37:12 2015] [notice] caught SIGTERM, shutting down 
[Sun Feb 15 03:37:12 2015] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 

[Sun Feb 15 03:37:13 2015] [error] Init: Unable to read pass phrase [Hint: key introduced or changed before restart?] 
[Sun Feb 15 03:37:13 2015] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag 
[Sun Feb 15 03:37:13 2015] [error] SSL Library Error: 218640442 error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error 
[Sun Feb 15 03:37:13 2015] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag 
[Sun Feb 15 03:37:13 2015] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error 
[Sun Feb 15 03:37:13 2015] [error] SSL Library Error: 67710980 error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib 
[Sun Feb 15 03:37:13 2015] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag 
[Sun Feb 15 03:37:13 2015] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error 
[Sun Feb 15 11:09:41 2015] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
[Sun Feb 15 11:09:44 2015] [notice] Digest: generating secret for digest authentication ... 
[Sun Feb 15 11:09:44 2015] [notice] Digest: done 
[Sun Feb 15 11:09:44 2015] [notice] FastCGI: wrapper mechanism enabled (wrapper: /usr/sbin/suexec) 
[Sun Feb 15 11:09:44 2015] [notice] FastCGI: process manager initialized (pid 11309) 
[Sun Feb 15 11:09:44 2015] [notice] Apache/2.2.15 (Unix) mod_ssl/2.2.15 OpenSSL/1.0.0-fips mod_fastcgi/2.4.6 configured -- resuming normal operations

附加信息:

  • 计划任务: /usr/sbin/raid-check这是唯一一个在周日晚上(凌晨 1 点)运行的 cron 作业,但如果我手动运行它,Apache 不会发生任何事情......

答案1

可能的原因是 logrotate 脚本中的后记。这是在 logrotation 之后运行的脚本。文件应称为 /etc/logrotate.d/apache2 或 /etc/logrotate.d/httpd(取决于 od 发行版),并看起来像:

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

相关部分是“service httpd reload”。解决此问题的一种方法是删除最后 4 行(从 sharedscripts 到 endscript,包括这两行)。此外,添加 copytruncate 选项,这样您的 logrotate 脚本将变成:

/var/log/httpd/*log {
    copytruncate
    missingok
    notifempty
}

copytruncate 将消除 apache 重新启动的需要,因为它将复制日志文件的内容,然后将其清零,因此文件描述符将保持不变,并且 apache 进程不会注意到任何变化。

要测试 logrotate,请运行:

logrotate -f /etc/logrotate.d/httpd

另外,考虑设置没有密码的私钥,因为这是不好的做法,显然你现在明白为什么了:)

相关内容