阿帕奇AH00558: Could not reliably determine the server's fully qualified domain name
当 Apache 未配置全局变量时,会生成消息ServerName
指示。该消息主要用于提供信息,AH00558 错误不会阻止 Apache 正确运行。
在本教程中,您将学习如何使用中描述的方法检测 AH00558 消息如何排除常见的 Apache 错误教程位于本系列的开头。您还将学习如何设置ServerName
指令来解决该消息。
如果您已经确定您的 Apache 服务器受到 AH00558 消息的影响并且您想跳过故障排除步骤,则设置全局ServerName
指示本教程末尾的步骤解释了如何解决该消息。
排除故障时的第一步AH00558: Could not reliably determine the server's fully qualified domain name
消息是使用以下命令检查 Apache 的状态systemctl
。输出来自systemctl
在许多情况下将包含解决消息所需的所有信息。
在 Ubuntu 和 Debian 衍生的 Linux 发行版上,运行以下命令来检查 Apache 的状态:
Ubuntu 和 Debian 系统
-
sudosystemctl 状态 apache2.service-l--无寻呼机
在 Rocky Linux、Fedora 和 Red Hat 衍生系统上,使用以下命令检查 Apache 的状态:
Rocky 和红帽系统
-
sudosystemctl 状态 httpd.service-l--无寻呼机
The -l
标志将确保systemctl
输出一行的全部内容,而不是替换为省略号 (…
)对于长线。这--no-pager
flag 会将整个日志输出到屏幕上,而无需调用类似的工具less
一次只显示一个屏幕内容。
您应该收到类似于以下内容的输出:
Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2020-07-29 14:30:03 UTC; 33min ago
Process: 34 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 46 (apache2)
Tasks: 55 (limit: 2344)
CGroup: /system.slice/apache2.service
├─46 /usr/sbin/apache2 -k start
├─47 /usr/sbin/apache2 -k start
└─48 /usr/sbin/apache2 -k start
Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Starting The Apache HTTP Server...
Jul 29 14:30:03 68e2cf19f3f1 apachectl[34]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Started The Apache HTTP Server.
包含 AH00558 消息的突出显示行是重要的一行。本质上,它通知您 Apache 无法找到有效的ServerName
指令在其配置文件中,因此它将使用它检测到的第一个 IP 地址。在此示例中,它是服务器的公共 IP 地址:172.17.02
。如果您对 AH00558 消息进行故障排除,则检测到的 IP 地址可能不同,或者可能是人类可读的 DNS 名称。
If your systemctl
输出包含任何 IP 地址或主机名的自动检测值,请跳到本教程的最后一部分,设置全局ServerName
指示解决问题。在该部分中,您将使用安全的默认值配置 ApacheServerName
使用 IP 地址的值localhost
: 127.0.0.1
.
If your systemctl
输出不指示可用于的值ServerName
指令,本教程的下一部分将解释如何检查systemd
记录使用journalctl
找到 AH00558 消息。
要检查systemd
Apache 的日志,您将使用journalctl
命令。调用时journalctl
,有两个特定标志可以帮助您在存在大量日志条目时找到特定消息。
您将添加到的第一个标志journalctl
调用是--since today
旗帜。它将限制命令的输出,仅记录从当天 00:00:00 开始的条目。使用此选项将有助于限制检查错误时需要检查的日志条目的数量。
您将使用的第二个标志是相同的--no-pager
您使用的选项systemctl
,它将立即将整个日志输出到您的屏幕上。
在 Ubuntu 和 Debian 衍生系统上,运行以下命令:
-
sudo日志控制-uapache2.service--since今天——没有寻呼机
在 Rocky Linux、Fedora 和 Red Hat 衍生系统上,使用以下命令检查日志:
-
sudo日志控制-uhttpd.服务--since今天——没有寻呼机
如果您的 Apache 服务器正在生成 AH00558 消息,请查看journalctl
命令输出如下所示:
Output
-- Logs begin at Wed 2020-07-29 14:30:02 UTC, end at Wed 2020-07-29 14:45:03 UTC. --
. . .
Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Starting The Apache HTTP Server...
Jul 29 14:30:03 68e2cf19f3f1 apachectl[34]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Started The Apache HTTP Server.
输出的第二行是 AH00558 消息。该行包含服务器的公共 IP 地址,这是 Apache 在运行时自动检测并设置为默认值的地址。通过此消息确认 AH00558 错误,您可以继续执行设置全局ServerName
指示解决问题。
否则,下一节将解释如何使用以下命令诊断 AH00558 错误消息:apachectl
命令。
An AH00558: Could not reliably determine the server's fully qualified domain name
可以使用 Apache 检测到错误apachectl
公用事业。和apachectl
您可以在重新加载或重新启动 Apache 之前捕获此类消息,并且可以避免搜索systemctl
and journalctl
日志来定位错误。
要检查 Apache 配置中是否有 AH00558 消息,请运行以下命令:
如果您的服务器受到 AH00558 错误消息的影响,您应该会收到如下输出:
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
Syntax OK
与本教程前面的部分一样,使用了systemctl
and journalctl
要查找 AH00558 消息,包含 AH00558 消息的行(在上一示例中突出显示)是重要的。再次注意IP地址172.17.0.2
此示例中的内容可能与您的服务器上的有所不同。
本教程的下一部分将解释如何设置ServerName
指令来解决 AH00558 错误消息。
解决一个AH00558: Could not reliably determine the server's fully qualified domain name
错误消息,您需要添加ServerName
指令到您的 Apache 配置。阿帕奇使用ServerName
指令将传入的 HTTP 请求映射到 IP 地址或 DNS 主机名,使用VirtualHost指令为了使用单个服务器处理多个站点的请求。
错误消息指出全局ServerName
还应该设置指令。这样做将确保 Apache 可以优雅地处理未映射到某个映射的传入请求。VirtualHost
不会产生额外的错误。
为了最大程度地兼容各种 Apache 配置,请使用以下值127.0.0.1
为您的全球ServerName
指示。如果需要,您可以使用与服务器配置相对应的不同 IP 地址或 DNS 名称,但使用它是最安全的127.0.0.1
.
在 Ubuntu 和 Debian 衍生系统上,打开/etc/apache2/apache2.conf
使用root权限的文件nano
或您喜欢的文本编辑器:
-
sudo nano/etc/apache2/apache2.conf
添加一行包含ServerName 127.0.0.1
到文件末尾:
/etc/apache2/apache2.conf
. . .
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
ServerName 127.0.0.1
在 Rocky Linux、Fedora 和 Red Hat 衍生系统上,打开/etc/httpd/conf/httpd.conf
使用root权限的文件nano
或您喜欢的文本编辑器:
-
sudo nano/etc/httpd/conf/httpd.conf
Add the ServerName 127.0.0.1
行到文件末尾:
/etc/httpd/conf/httpd.conf
. . .
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
ServerName 127.0.0.1
完成后保存并关闭文件。如果你用过nano
,按CTRL + X
, Y
, 进而ENTER
.
添加后ServerName
指令到您的配置,运行apachectl
测试配置是否有效。
一个成功的apachectl configtest
调用应该产生如下输出:
Output
Syntax OK
您现在可以使用适当的方法重新加载 Apache 的配置systemctl reload
适用于您的 Linux 发行版的命令。
在 Ubuntu 和 Debian 衍生系统上,运行以下命令:
-
sudosystemctl 重新加载 apache2.service
在 Rocky Linux、Fedora 和 Red Hat 衍生系统上,使用此命令重新加载 Apache 的配置:
-
sudosystemctl 重新加载 httpd.service
重新加载 Apache 后,AH00558 错误消息将不再出现在日志中。您可以通过运行这三个命令中的任何一个来确认消息已被静音systemctl
, journalctl
, or apachectl
本教程中演示的命令。
在本教程中您了解了AH00558: Could not reliably determine the server's fully qualified domain name
错误消息。虽然这些消息不会阻止 Apache 运行,但可以通过设置全局变量来解决ServerName
指示。
您学习了如何使用以下命令搜索 AH00558 错误消息systemctl
, journalctl
, and apachectl
命令。最后,您学习了如何在各种 Linux 发行版上编辑 Apache 配置以静默消息。
如果您想了解有关 Apache 如何使用的更多信息ServerName
指令,Apache 文档关于基于名称的虚拟主机更详细地解释了该指令。