当我使用以下命令重新启动 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?什么原因导致此错误?
答案1
13.04 及更高版本
这只是一个友好警告,并不是真正的问题(因为某些事情不起作用)。
如果你去:
/etc/apache2/apache2.conf
并插入:
ServerName localhost
然后通过在终端中输入以下命令重新启动 apache:
sudo systemctl reload apache2
通知将会消失。
如果里面有名字,/etc/hostname
您也可以使用该名字代替localhost
。
127.0.1.1
如果它在你的内部,它就会使用/etc/hosts
:
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”(没有它将无法工作)。
答案2
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
是用于在 Apache 2.4 中启用配置文件的命令。还请注意,servername
上述命令中的 是来自配置文件的名称servername.conf
。如果您的配置文件是,ngenericserver.conf
那么您必须写入sudo a2enconf ngenericserver
。
此后重新加载服务器,上述消息将不再困扰您。
sudo service apache2 reload
或者
sudo apache2ctl graceful
现在,您将看到该消息将不再显示,并且问题将得到解决。
答案3
Apache2 还可以从正确配置的系统主机名中获取 FQDN,而不是将其硬编码到 Apache 配置文件中。如果主机名发生变化,对其进行硬编码也会引起混淆。实际上,您不需要任何ServerName
指令httpd.conf
或任何 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
,这还将帮助您机器上的其他服务正常运行(即登录提示,显示This is hostname.domainname.com
而不是This is hostname.unknown_domain
)。
答案4
在新版本的 apache2 中,您只需执行以下操作:
sudo nano /etc/apache2/apache2.conf
在文件末尾添加以下新行:
ServerName localhost
然后重新启动apache2:
sudo service apache2 restart
完成。