问题描述
当我使用该命令重新启动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
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.conf
或httpd.conf
的新文件会更好一些。
这是个人偏好,可以让我的配置更改与分发包保持分离。所以更新不那么复杂。
我创建了文件/etc/apache2/conf.d/AAserverName
,它只包含:
ServerName myhost.mycomain.tld
其他建议当然也有效。