当前位置: 首页>>技术问答>>正文


Apache错误“无法可靠地确定服务器的完全限定的域名”

, ,

问题描述

当我使用该命令重新启动Apache服务器时

sudo /etc/init.d/apache2 restart

我收到以下错误:

Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2:
Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

服务器是否使用127.0.1.1而不是127.0.0.1?什么导致这个错误?

最佳解决思路

13.04及以上

这只是一个友好的警告,并不是一个真正的问题(因为有些东西不起作用)。

如果你插入一个

ServerName localhost   

httpd.conf/etc/apache2中的apache2.conf中重新启动apache,通知将消失。

如果你在/etc/hostname里有一个名字,你也可以用这个名字代替localhost


如果它位于/etc/hosts中,则它使用127.0.1.1

127.0.0.1 localhost
127.0.1.1 myhostname

Preferred method

Troubleshooting Apache

如果你得到这个错误:

apache2: Could not determine the server's fully qualified domain name, 
using 127.0.0.1 for ServerName

然后使用文本编辑器(如命令行中的”sudo nano”或桌面上的”gksudo gedit”)创建新文件,

sudo nano /etc/apache2/conf.d/fqdn

要么

gksu "gedit /etc/apache2/conf.d/fqdn"

然后加

ServerName localhost

到文件并保存。这可以通过以下命令在一个命令中完成:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

但在Ubuntu 14.04上:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
 sudo a2enconf fqdn

不要忘记”.conf”(不会失效)。

次佳解决思路

13.10或更新

从Apache 2.4开始 – 从13.10开始默认可用 – 不能使用在conf.d目录中添加配置文件的方法。

Apache不再使用conf.d目录。所有配置文件存储在/etc/apache2/conf-available目录中,所有配置文件现在都应具有.conf扩展名。

为了在Apache 2.4中解决这个消息,我们必须在conf-available目录中创建一个配置文件。例如servername.conf

sudo vi /etc/apache2/conf-available/servername.conf

在这里面我们只需要添加一行

ServerName localhost

您可以将之前的两个命令合并为一个:

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf

如果您想根据要求使用域名或任何其他名称,只需将localhost替换为您需要的任何名称即可。接下来你必须启用这个配置。为此,您需要运行以下命令:

sudo a2enconf servername

a2enconf是在Apaches 2.4中启用配置文件的命令。另请注意,上述命令中的servername来自配置文件servername.conf的名称。如果你的配置文件是ngenericserver.conf,那么你将不得不编写sudo a2enconf ngenericserver

在重新加载服务器之后,上面的消息不会再出现问题。

sudo service apache2 reload

要么

sudo apache2ctl graceful

现在,您将看到该消息将不会再显示,问题将得到解决。

第三种解决思路

  • 打开一个终端

  • 打开/etc/apache2/httpd.conf文件:

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • 默认情况下,它将是空白的。只需添加以下行:

    ServerName localhost
    
  • 保存该文件并退出

  • 重新启动服务器

    sudo service apache2 restart
    

[1]启动默认编辑器,请参阅sudo update-alternatives --config editor

第四种思路

Apache2也可以从正确配置的系统主机名获得FQDN,而不是硬编码到Apache配置文件中。如果主机名改变,对其进行硬编码也会造成混淆。实际上,您不需要httpd.conf或任何apache配置文件中的任何ServerName指令。

将以下内容放在/etc/hosts中:

# IPv4 and IPv6 localhost aliases
127.0.0.1 hostname.domainname.com  hostname  localhost
::1       hostname.domainname.com  hostname  localhost

hostname.domainname.com是您机器的FQDN。

除了/etc/hostname/hostnamectl中正确配置的主机名之外,还可以帮助您的机器上的其他服务正常运行(即登录提示符,显示This is hostname.domainname.com而不是This is hostname.unknown_domain)。

第五种思路

在新版本的apache2中,您只需执行如下命令:

sudo nano /etc/apache2/apache2.conf

添加以下新行结束文件:

ServerName localhost

然后重新启动apache2:

sudo service apache2 restart

完成。

第六种思路

我发现在/etc/conf.d中创建一个修改apache2.confhttpd.conf的新文件会更好一些。

这是个人偏好,可以让我的配置更改与分发包保持分离。所以更新不那么复杂。

我创建了文件/etc/apache2/conf.d/AAserverName,它只包含:

ServerName myhost.mycomain.tld

其他建议当然也有效。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/63.html,未经允许,请勿转载。