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 

优选方法

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不需要任何ServerName指令或任何apache配置文件。

将以下内容放在/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中正确配置的主机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 16.04中:

 sudo -i echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf a2enconf server-name 

添加ServerName localhost

  sudo leafpad /etc/apache2/apache2.conf sudo leafpad /etc/apache2/httpd.conf 

这不是一个错误..这只是一个朋友提醒

在Ubuntu 11.10上,我看到了这条消息,还有一个挂起的引导,因为我的磁盘已满。 其中一个日志文件已经流氓 。 可能实际上Apache没有问题,但是这条消息是在启动挂起之前给出的最后一条线索。

要解决这个问题,我必须启动进入恢复模式并删除任意日志文件。

在虚拟主机部分之外的配置文件中指定ServerName localhost是执行此操作的方法。

其他一些答案建议你修改/etc/apache2/httpd.conf 。 当apache从apt升级时,此文件被覆盖。 对于您不希望被覆盖的Apache配置,您应该创建一个新文件。 以下是进行此配置更改的“Debian方式”:

 # create the configuration file in the "available" section echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf # enable it by creating a symlink to it from the "enabled" section sudo a2enconf servername # restart the server sudo service apache2 restart 

这与Stark的答案基本相同,但是在一个易于复制和粘贴的脚本表单中。 我最初在一个被标记为重复的问题中发布了这个: https : //askubuntu.com/a/432408

如果你正在使用bash并且想要最小的依赖关系( 如果你像我一样使用Docker ,你只想要一个单行程序用于入口点脚本 ),这两个选项应该可行。

如果你想要localhost:

echo "ServerName localhost" >> /etc/apache2/apache2.conf

如果您想要现有的主机名:

echo "ServerName $(cat /etc/hostname)" >> /etc/apache2/apache2.conf

这使用bash重定向运算符将字符串附加到文件的末尾。 Echo会自动插入换行符,因此您已完成设置。

运行以下命令:

 apachectl -t -D DUMP_INCLUDES 

确定httpd.conf配置文件的路径,然后编辑该文件并取消注释/修改指定ServerName选项值的行,例如

 ServerName localhost 

对于Web服务器,请使用已注册的DNS名称(例如example.com )。

如果您的主机没有注册的DNS名称,请在此处输入其IP地址。

Ubuntu 16.04上

使用以下命令将ServerName localhost添加到httpd.conf文件中。

 sudo vi /etc/apache2/httpd.conf 

然后在此文件的末尾包含此行Include httpd.conf

 sudo vi /etc/apache2/apache2.conf 

再次检查语法错误

 sudo apache2ctl configtest 

你现在应该得到

 Syntax OK 

您现在可以通过重新加载配置sudo service apache2 restart来正常重新启动服务器

Ubuntu 16.04上

使用以下命令将ServerName localhost添加到httpd.conf文件中。

 sudo vi /etc/apache2/httpd.conf 

然后在此文件的末尾包含此行Include httpd.conf

 sudo vi /etc/apache2/apache2.conf 

再次检查语法错误

 sudo apache2ctl configtest 

你现在应该得到

 Syntax OK 

您现在可以通过重新加载配置来正常重新启动服务器

 sudo service apache2 reload 

或者杀死进程并重新开始

 sudo service apache2 restart