了解 Apache 為什麼每週日早上停止運行

了解 Apache 為什麼每週日早上停止運行

我在 Ubuntu 16.04.4 LTS 上設定了 Apache。

由於某種原因,大約在每個星期日早上的同一時間,Apache 停止運作。

當它停下來時,我跑過去systemctl status apache2看到:

Mar 04 06:25:24 xxxxxx apache2[11178]:  * Stopping Apache httpd web server apache2

所以不知何故阿帕契被阻止了。當它停止時,裡面什麼都沒有/var/log/apache2/error.log。當我再次啟動 Apache 時,我看到:

[Sun Mar 04 09:44:10.875444 2018] [core:warn] [pid 22442:tid 140355746498432] AH00098: pid file /var/run/apache2/apache2.pid overwritten -- Unclean shutdown of previous Apache run?

看來/var/log/syslogApache 已重新載入(也是 ProFTPD),然後停止在06:25:24

Mar  4 06:25:11 xxxxxx systemd[1]: Reloading LSB: Apache2 web server.
Mar  4 06:25:11 xxxxxx apache2[11014]:  * Reloading Apache httpd web server apache2
Mar  4 06:25:11 xxxxxx apache2[11014]:  *
Mar  4 06:25:11 xxxxxx systemd[1]: Reloaded LSB: Apache2 web server.
Mar  4 06:25:18 xxxxxx systemd[1]: Stopping LSB: Starts ProFTPD daemon...
Mar  4 06:25:18 xxxxxx proftpd[11083]:  * Stopping ftp server proftpd
Mar  4 06:25:18 xxxxxx proftpd[11083]:    ...done.
Mar  4 06:25:18 xxxxxx systemd[1]: Stopped LSB: Starts ProFTPD daemon.
Mar  4 06:25:18 xxxxxx systemd[1]: Starting LSB: Starts ProFTPD daemon...
Mar  4 06:25:18 xxxxxx proftpd[11094]:  * Starting ftp server proftpd
Mar  4 06:25:18 xxxxxx proftpd[11094]: 2018-03-04 06:25:18,666 xxxxxx proftpd[11104]: mod_dso/0.5: module 'mod_tls.c' already loaded
Mar  4 06:25:18 xxxxxx proftpd[11094]: 2018-03-04 06:25:18,667 xxxxxx proftpd[11104]: mod_dso/0.5: module 'mod_sftp.c' already loaded
Mar  4 06:25:19 xxxxxx proftpd[11094]:    ...done.
Mar  4 06:25:19 xxxxxx systemd[1]: Started LSB: Starts ProFTPD daemon.
Mar  4 06:25:24 xxxxxx apache2[11178]:  * Stopping Apache httpd web server apache2
Mar  4 06:25:24 xxxxxx apache2[11178]:  *

如何找出 Apache 停止的原因,或者哪個進程正在停止 Apache(出於什麼原因),以便我可以防止它再次發生?

答案1

該問題是由 引起的logrotate,它在旋轉日誌時停止 Apache。

/etc/logrotate.d/apache2透過編輯、修改reload為解決了問題graceful

原來的:

postrotate
            if /etc/init.d/apache2 status > /dev/null ; then \
                /etc/init.d/apache2 reload > /dev/null; \
            fi;
endscript

編輯:

postrotate
            if /etc/init.d/apache2 status > /dev/null ; then \
                /etc/init.d/apache2 graceful > /dev/null; \
            fi;
endscript

相關內容