Назад | Перейти на главную страницу

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

Дополнительная информация:

Вероятная причина - постскриптум в скрипте logrotate. Это сценарий, который запускается после ротации журнала. Файл должен называться /etc/logrotate.d/apache2 или /etc/logrotate.d/httpd (в зависимости от дистрибутива) и выглядеть примерно так:

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

Соответствующая часть - «перезагрузка httpd службы». Один из способов решить эту проблему - просто удалить последние 4 строки (от общих скриптов до конечных, включая эти две). Кроме того, добавьте параметр copytruncate, чтобы ваш сценарий logrotate стал:

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

copytruncate устранит необходимость перезапуска apache, поскольку он скопирует содержимое файла журнала, а затем обнулит его, поэтому дескриптор файла останется прежним, а процесс apache не заметит никаких изменений.

Чтобы проверить logrotate, запустите:

logrotate -f /etc/logrotate.d/httpd

Кроме того, подумайте о настройке закрытого ключа без пароля, потому что это плохая практика, и, очевидно, теперь вы понимаете, почему :)