一天内,Apache 会自动重启几次并失败。我的服务器正在监听端口 81。当我检查其日志时,它显示端口绑定到 80 的错误,无法打开日志。
每次失败后,我都必须手动重新启动服务,然后它才能开始工作直到下一次。
我的系统是 Ubuntu 16.04
日志文件的条目/var/log/apache2/error.log
:
[Fri Apr 17 04:27:50.713641 2020] [mpm_prefork:notice] [pid 7037] AH00171: Graceful restart requested, doing restart
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
[Fri Apr 17 04:27:50.842111 2020] [mpm_prefork:alert] [pid 7037] no listening sockets available, shutting down
[Fri Apr 17 04:27:50.842117 2020] [:emerg] [pid 7037] AH00019: Unable to open logs, exiting
[Fri Apr 17 04:28:16.608563 2020] [core:warn] [pid 14789] AH00098: pid file /var/run/apache2/apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Fri Apr 17 04:28:16.612506 2020] [mpm_prefork:notice] [pid 14789] AH00163: Apache/2.4.18 (Ubuntu) OpenSSL/1.0.2g mod_wsgi/4.3.0 Python/3.5.2 configured -- resuming normal operations
[Fri Apr 17 04:28:16.612538 2020] [core:notice] [pid 14789] AH00094: Command line: '/usr/sbin/apache2'
[Fri Apr 17 04:28:16.993356 2020] [mpm_prefork:notice] [pid 14789] AH00169: caught SIGTERM, shutting down
答案1
您需要弄清楚是什么发送了优雅重启请求。我遇到了完全相同的错误和行为,并认为这可能是日志轮换,但事实并非如此。在我的情况下,结果是 Let's Encrypt 的“Certbot”。
我从使用 Certbot 刷新和更新 Apache 切换到在 Apache 上使用纯 http 并在其前面使用 Caddy 进行 SSL 终止。因此,我不需要直接为 Apache 获取 Certbot/LE 证书;但是,在 Caddy 配置之后,Certbot 无法重新验证,并且在上次验证过期后约 30 天后,Certbot 开始每天多次尝试刷新,放弃,但仍尝试重新启动 Apache,无论出于什么原因,它都无法成功完成,从而导致此问题。
因此,请检查您是否正在运行 Certbot(当您不再需要它时)。您可以使用以下信息禁用 Certbot:如何从 ubuntu 中彻底删除“certbot”?