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.conf
或httpd.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