Mon j'ai un serveur Debian propre avec Apache uniquement, j'ai 1 site de base sans options spéciales. Tout fonctionne bien mais tous les jours à la même heure, Apache plantera et ne démarrera pas, je dois arrêter le site et démarrer Apache manuellement. Connectez-vous depuis /var/log/syslog :

Aug 8 06:25:01 localhost CRON[8096]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))

Aug 8 06:25:17 localhost systemd[1]: Reloading LSB: Apache2 web server.

Aug 8 06:25:18 localhost apache2[8220]: Reloading web server: apache2.

Aug 8 06:25:18 localhost systemd[1]: Reloaded LSB: Apache2 web server.

Aug 8 06:25:18 localhost apache2[8237]: Stopping web server: apache2.

Aug 8 06:25:18 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.4.2" x-pid="550" x-info="http://www.rsyslog.com"] rsyslogd was HUPed

Connectez-vous depuis /var/log/apache/error.log :

[Wed Aug 08 06:25:18.467344 2018] [mpm_event:notice] [pid 7493:tid 139910286395264] AH00493: SIGUSR1 received. Doing graceful restart AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

[Wed Aug 08 06:25:18.521093 2018] [core:crit] [pid 7493:tid 139910286395264] (22)Invalid argument: AH00069: make_sock: for address [::]:80, apr_socket_opt_set: (IPV6_V6ONLY) (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80 [Wed Aug 08 06:25:18.521141 2018]

[mpm_event:alert] [pid 7493:tid 139910286395264] no listening sockets available, shutting down

[Wed Aug 08 06:25:18.521149 2018] [:emerg] [pid 7493:tid 139910286395264] AH00019: Unable to open logs, exiting

answer

D'après les messages de synchronisation et de journal, je soupçonne que la cause est logrotate.

Il y aura un fichier sur votre système appelé /etc/logrotate.d/apache2, qui configure le comportement de logrotate en ce qui concerne votre serveur Web Apache.

La version 8.4.2 de rsyslog indique que vous utilisez Debian Jessie. Voici à quoi cela ressemble sur un de mes systèmes Jessie :

/var/log/apache2/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                if /etc/init.d/apache2 status > /dev/null ; then \
                    /etc/init.d/apache2 reload > /dev/null; \
                fi;
        endscript
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi; \
        endscript
}

La partie intéressante ici est la postrotation. Il appelle le script d'initialisation apache2 avec l'option de rechargement.

Le but de ceci est qu'Apache libère les descripteurs de fichiers des fichiers journaux, afin qu'il commence à se connecter aux nouveaux fichiers, après que les anciens aient été supprimés.

Si j'étais vous, j'exécuterais manuellement l'action de postrotation, qui est probablement le même rechargement d'Apache, pendant une fenêtre de maintenance pour voir si elle plante également Apache.

Si c'est le cas, vous voudrez savoir pourquoi il se bloque ou simplement trouver une action de postrotation alternative.

Certaines options de postrotation raisonnables pour Apache2 sont /usr/sbin/apachectl gracefulou /usr/sbin/apachectl restart.

J'aime aussi beaucoup copytruncate au lieu d'utiliser une action de postrotation. Voir man 8 logrotate pour plus d'informations sur copytruncate).

Vous pouvez jouer avec ceux-ci et voir ce qui fonctionne pour vous.