Httpd: 无法可靠地确定服务器的完全限定域名,对 ServerName 使用127.0.0.1

我试图在 CentOS 5.0上重启 Apache 服务器,得到了这样一条消息:

Httpd: 无法可靠地确定服务器的完全限定域名,对 ServerName 使用127.0.0.1

这是 /etc/hosts文件:

127.0.0.1    server4-245    server4-245.com    localhost.localdomain localhost
::1        localhost6.localdomain6 localhost6

这是 /etc/sysconfig/network文件:

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=server4-245

我在 Apache httpd.conf 文件中也有这个:

ServerName localhost

但是,当我重新启动 Apache 时,仍然会收到第一个错误消息。

518004 次浏览

您的主机文件不包含有效的 FQDN,localhost也不是 FQDN。FQDN 必须包括主机名部分和域名部分。例如,下面是一个有效的 FQDN:

host.server4-245.com

选择一个 FQDN,并将其包含在您正在使用的 IPv4和 IPv6地址(在您的例子中是 localhost127.0.0.1)的 /etc/hosts文件中,然后在您的 httpd 配置中更改 ServerName以匹配。

/etc/主持人:

127.0.0.1    localhost.localdomain localhost host.server4-245.com
::1          localhost.localdomain localhost host.server4-245.com

返回文章页面

ServerName host.server4-245.com

在 httpd.conf 中搜索“ ServerName”。在 Mac 上通常默认注释掉它。取消注释,填上就行了。确保在/etc/hosts 中还设置了名称/ip 组合。

在最初安装 Apache 服务器之后,我在 Ubuntu 12.04上重新启动 Apache 服务时出现了以下错误

解决方案非常简单,只需在 /etc/apache2/httpd.conf中添加 ServerName指令:

sudo nano /etc/apache2/httpd.conf

地址: ServerName localhost

最后重新启动 Apache 服务器:

sudo /etc/init.d/apache2 restart

如果文件夹 /etc/apache2中没有 httpd.conf,那么应该使用 apache2.conf ——只需添加:

服务器名称本地主机

然后重新启动 apache2服务。

在 Apache httpd.conf文件中:

ServerName: 127.0.0.1

因此,虽然这个问题已经得到了回答和接受,但它仍然是最热门的搜索结果,尽管这些问题的答案(经过大量的研究)让我摸不着头脑,进一步挖掘了很多信息。下面是我如何解决这个问题的一个快速布局。

假设我的服务器没有 myserver.myhome.com ,我的静态 IP 地址是192.168.1.150:

  1. 编辑 < a href = “ http://en.wikipedia.org/wiki/Hosts _ (file)”rel = “ nofollow norefrer”> hosts 文件

    $ sudo nano -w /etc/hosts
    
    
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    
    
    127.0.0.1 myserver.myhome.com myserver
    
    
    192.168.1.150 myserver.myhome.com myserver
    
    
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    ::1 myserver.myhome.com myserver
    
  2. Edit httpd.conf

    $ sudo nano -w /etc/apache2/httpd.conf
    
    
    ServerName myserver.myhome.com
    
  3. Edit network

    $ sudo nano -w /etc/sysconfig/network HOSTNAME=myserver.myhome.com
    
  4. Verify

    $ hostname
    
    
    (output) myserver.myhome.com
    
    
    $ hostname -f
    
    
    (output) myserver.myhome.com
    
  5. Restart Apache

    $ sudo /etc/init.d/apache2 restart
    

It appeared the difference was including myserver.myhome.com to both the 127.0.0.1 as well as the static IP address 192.168.1.150 in the hosts file. The same on Ubuntu Server and CentOS.

有两种方法可以解决这个问题:

  1. Include /etc/apache2/httpd.conf

    在 file < strong >/etc/apache2/apache2.conf 中添加上述行

  2. 在文件 /etc/apache2/apache2.conf的末尾添加这一行:

    服务器名称本地主机

通过将服务器主机名添加到/etc/apache2/httpd.conf 文件和 /etc/apache2/apache2.conf文件,我已经在不同场合解析了完全限定域名消息。

在终端中键入 hostname -f。此查询将返回您的主机名。

然后编辑 /etc/apache2/httpd.conf文件(如果由于某种原因它不存在,则创建它)并添加 ServerName <your_hostname>

或者,我也可以通过将 ServerName <your_hostname>添加到 /etc/apache2/apache2.conf文件来消除消息。

如果一切顺利,当您重新启动 Apache 时,消息将消失。

大多数答案建议在 /etc/apache2/apache2.conf中加入 ServerName localhost

但引用 Apache 文档的话:

此错误消息的出现还表明 Apache httpd 无法通过对服务器的 IP 地址进行反向查找来获得完全限定的主机名。虽然上面的说明在任何情况下都会消除这个警告,但是修改名称解析也是一个好主意,这样这个反向映射就可以工作了。

因此,在 /etc/hosts中增加这样一条线可能是一个更强大的解决方案:

192.0.2.0  foobar.example.com  foobar

其中 192.02.0example.com域中名为 foobar的服务器的静态 IP 地址。

可以检查 FQDN,例如

hostname -A

(hostname --all-fqdn的捷径)。

确保您正在编辑正确的 httpd.conf文件,然后关于不可靠的服务器域名的错误应该消失(这是最常见的错误)。

要找到您的 httpd.conf Apache 配置文件,运行:

apachectl -t -D DUMP_INCLUDES

然后编辑该文件并取消注释或将 ServerName行更改为:

ServerName localhost

然后通过 sudo apachectl restart重新启动 Apache

原来我有这个问题,这是因为我使用“制表符”缩进行,而不是空格。只是发个帖子,以防对谁有帮助。

如果你用 ServerName localhost编辑了 /etc/apache2/httpd.conf,你可能编辑错误的文件。我找到的所有答案都指向标准的 httpd.conf。经过一番搜寻,我找到了一个不错的答案 给你

要找到正确的 httpd.conf 文件,请使用

apachectl -t -D DUMP_INCLUDES

我发现我的实际上是 /usr/local/etc/httpd/httpd.conf

使用您首选的编辑器注释掉从 ServerName 开始的行(即删除之前的 #) ,并替换适当的一个本地环境应该使用的域名

ServerName localhost

我希望这能帮助更多可能陷入困境的人。