我在 Ubuntu 16.04 上运行的 VPS 上的 Web 服务器突然随机宕机。据我所知,我没有进行任何可能导致此行为的更改。
我正在运行一个 Apache 网络服务器,我使用 letsencrypt 获取 SSL 证书,使用 sslh 以便在托管网络服务时能够在端口 443 上进行 ssh 连接。
我不太熟悉系统管理和服务维护,所以我不知道去哪里查找导致这种情况的原因。
这是 Apache 日志:
[Sun Apr 01 12:54:01.253759 2018] [mpm_prefork:notice] [pid 21594] AH00163: Apache/2.4.18 (Ubuntu) OpenSSL/1.0.2g configured -- resuming normal operations
[Sun Apr 01 12:54:01.253898 2018] [core:notice] [pid 21594] AH00094: Command line: '/usr/sbin/apache2'
[Sun Apr 01 12:54:01.389638 2018] [mpm_prefork:notice] [pid 21594] AH00169: caught SIGTERM, shutting down
$ apachectl -t
Syntax OK
$ sudo apache2 -X -f /etc/apache2/apache2.conf
[Mon Apr 02 11:18:25.990636 2018] [core:warn] [pid 30695] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Mon Apr 02 11:18:25.990930 2018] [core:warn] [pid 30695] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Mon Apr 02 11:18:25.991090 2018] [core:warn] [pid 30695] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Mon Apr 02 11:18:25.991225 2018] [core:warn] [pid 30695] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Mon Apr 02 11:18:25.991383 2018] [core:warn] [pid 30695] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 02 11:18:26.010130 2018] [core:warn] [pid 30695] AH00111: Config variable ${APACHE_RUN_DIR} is not defined
[Mon Apr 02 11:18:26.010822 2018] [core:warn] [pid 30695] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}
如果您愿意帮助我,我可以提供您想要的所有日志。我只是不知道什么有用...
如果有人能好心地给我指点迷津,我将不胜感激。
答案1
你有一个配置那取决于许多变量的负载来自另一个文件,该文件通常称为“环境变量“。
经过直接加载 apache2 而不加载环境中的 envvars,你将收到错误你做。
注意句法检查好的当您使用“apachectl“但是当您直接调用二进制文件时则不会。这是因为 apachectl 是一个脚本,它在调用 httpd 二进制文件之前会先加载 envvars 文件。
因此,如果您想直接运行 apache2,至少要先执行以下操作来在您的环境中加载 envvars 文件(确保您的系统中首先存在 envvars 或检查 apachectl 的内容以找到它的位置):
. /etc/apache2/envvars