当我使用命令重新启动我的Apache服务器时
sudo /etc/init.d/apache2 restart
我得到以下错误:
Restarting web server apache2apache2: 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及以上 这只是一个友好的警告,而不是一个真正的问题(因为有些东西不起作用)。
如果你去:
/etc/apache2/apache2.conf
并插入:
ServerName localhost
然后通过输入到终端重新启动apache:
sudo systemctl reload apache2
通知就会消失。
如果你里面有名字 /etc/hostname
您也可以使用该名称而不是 localhost
.
它使用 127.0.1.1
如果它在你的 /etc/hosts
:
127.0.0.1 localhost127.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
但在Ubuntu14.04:
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf sudo a2enconf fqdn
别忘了"。conf"(没有将无法正常工作).
13.10或更新 从Apache2.4开始--默认情况下从13.10开始--你不能使用在 conf.d
目录。
Apache不再使用 conf.d
目录。 所有的配置文件都存储在里面 /etc/apache2/conf-available
目录和所有的配置文件现在应该有一个 .conf
延伸。
为了在Apache2.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
是在Apaches2.4中启用配置文件的命令。 另请注意 servername
在上面的命令是从配置文件的名称 servername.conf
. 如果您的配置文件是 ngenericserver.conf
那你就得写了 sudo a2enconf ngenericserver
.
在此之后重新加载服务器,上面的消息将不再困扰您。
sudo service apache2 reload
或
sudo apache2ctl graceful
现在在此之后,您将看到该消息不会再次显示,问题将得到解决。
Apache2还可以从正确配置的系统主机名获取FQDN,而不是硬编码到apache配置文件中。 如果主机名更改,硬编码也会导致混淆。 你其实不需要任何 ServerName
指示 httpd.conf
或任何apache配置文件。
将以下内容放入 /etc/hosts
:
# IPv4 and IPv6 localhost aliases127.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
.)
打开终端机
打开 /etc/apache2/httpd.conf
档案:
sudo editor /etc/apache2/httpd.conf # [1]
默认情况下,它将为空。 只需添加以下行:
ServerName localhost
保存文件并退出
重新启动服务器
sudo service apache2 restart
[1]启动默认编辑器,请参阅 sudo update-alternatives --config editor
Ray
July 18, 2022, 5:28pm
#6
在新版本的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
其他建议当然也有效。
在Ubuntu16.04:
sudo -iecho 'ServerName localhost' > /etc/apache2/conf-available/server-name.confa2enconf server-name
上 Ubuntu16.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
Ali
July 18, 2022, 6:03pm
#10
添加 ServerName localhost
到
sudo leafpad /etc/apache2/apache2.conf sudo leafpad /etc/apache2/httpd.conf
这不是错误。. 这只是一个朋友提醒
指定 ServerName localhost
在虚拟主机部分之外的配置文件中是执行此操作的方法。
其他一些答案建议您应该修改 /etc/apache2/httpd.conf
. 当apache从apt升级时,此文件被复盖。 对于您不想被复盖的Apache配置,您应该创建一个新文件。 以下是进行此配置更改的"Debian方式:
# create the configuration file in the "available" sectionecho "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf# enable it by creating a symlink to it from the "enabled" sectionsudo a2enconf servername# restart the serversudo service apache2 restart
这基本上与斯塔克的答案相同,但以易于复制和粘贴的脚本形式。 我最初在一个被标记为重复的问题中发布了这个: https://askubuntu.com/a/432408