2 votes

Apache s'arrête automatiquement chaque dimanche. Pourquoi ?

Tous les dimanches à 3 heures, les Apaches recommencent. Le problème est le suivant : il y a un certificat sur le serveur avec une clé privée cryptée. Le mot de passe n'étant pas fourni lors du redémarrage automatique, Apache s'arrête et tous mes sites web tombent en panne.

Je veux empêcher Apache de redémarrer chaque semaine. Comment ? Voici le journal d'Apache à ce moment-là. Avant [notice] caught SIGTERM, shutting down il n'y a rien de pertinent, si vous vous demandez...

[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

Informations supplémentaires :

  • Cron Jobs : /usr/sbin/raid-check C'est la seule tâche cron qui s'exécute le dimanche soir (1 heure du matin), mais si je la lance manuellement, rien ne se passe pour Apache...

0 votes

Comment vérifier quelles tâches cron sont exécutées à un moment donné ?

0 votes

@Sven J'ai installé Webmin sur le port 1000 et en me connectant en tant que root via un navigateur, je peux vérifier les tâches Cron programmées. J'ai ouvert chacun d'entre eux et regardé à quelle heure ils sont programmés.

6voto

Jakov Sosic Points 5097

La cause probable est le postscript de logrotate script. C'est le script qui s'exécute après la logrotation. Le fichier devrait s'appeler /etc/logrotate.d/apache2 ou /etc/logrotate.d/httpd (selon la distribution) et ressembler à quelque chose comme ça :

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

La partie concernée est "service httpd reload". Une façon de le résoudre est de juste supprimer les 4 dernières lignes (de sharedscripts jusqu'à endscript, y compris ces deux-là). Aussi, ajoutez l'option copytruncate, ainsi votre logrotate script devient :

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

copytruncate éliminera le besoin de redémarrer apache car il copiera le contenu d'un fichier journal, puis le mettra à zéro, ainsi le descripteur de fichier restera le même et le processus apache ne remarquera aucun changement.

Pour tester le logrotate, exécutez :

logrotate -f /etc/logrotate.d/httpd

En outre, envisagez de configurer la clé privée sans mot de passe car c'est une mauvaise pratique, et évidemment vous voyez maintenant pourquoi :)

0 votes

Oui, j'ai trouvé cette partie et je l'ai supprimée. En fait, le fichier est un peu différent... le voici, après avoir retiré la partie délicate : weekly rotate 52 compress delaycompress sharedscripts Puis-je laisser toutes ces commandes et ne mettre que copytruncate ? Ou dois-je modifier quelque chose d'autre ?

0 votes

J'ai modifié mon commentaire, vous pouvez supprimer sharedscripts également, et vous pouvez tester le rotate vous-même.

1 votes

Il convient de noter que copytruncate a une condition de course, qui peut causer la perte de certaines lignes du journal.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X