Apache错误“无法可靠地确定服务器的标准域名”


431

当我使用以下命令重新启动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吗?是什么导致此错误?

Answers:


509

6#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
Ubuntu LAMP设置文档中还提到了Apache故障排除。在那里,他们建议创建一个文件/etc/apache2/conf.d/fqdn与ServerName localhost
icc97

很好的答案-但我也建议将其放在conf.d目录中:)
cwd

3
/etc/apache2/conf.d/lamp-server^在14.04中安装后不存在
redanimalwar 2014年

@redanimalwar对于13.10及更高版本,请参见下面的@Starx答案
2014年

3
对于最后一步(在14.04中创建符号链接),我建议sudo a2enconf fqdn尽管在技术上应该是相同的。
nuala 2014年

176

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

现在,在此之后,您将看到该消息不再显示,并且问题已得到解决。


3
有谁知道如何让Apache说它具有与该问题的配置文件?我不知道为什么开发人员从不考虑将其放入错误消息中-几乎不需要太多代码!
约翰Y

如果我有用于该服务器的Internet fqdm,那么这里是放置它的地方吗?即我应该用myhost.org代替localhost吗?
CPBL

1
@CPBL这将是所有站点的默认服务器名称。如果您只有一个站点,那么这就是您需要做的。如果服务器上有多个站点,则还需要为每个站点在其各自的虚拟主机配置中添加servername指令。
2014年

1
适用于14.04 LTS。
Parto 2015年

1
您引用的链接似乎已失效,请修复。
Fredrick Gauss

28

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


5
+1为“正确配置的系统主机名”。我想正确配置服务器。这也修复了我在日志中的错误[warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!?
晶体管

您认为这应该适用于Apache 2.2.22吗?我仍然收到“无法可靠地确定服务器的完全限定域名,对于ServerName使用127.0.1.1”
David Winiecki 2015年

hostname localhost认为是myubuntuservername localhost?还是字符串文字hostname localhost?你不是在你的答案明确
乔纳森

2
这应该是公认的答案。似乎您可能需要将FQDN与静态IP地址而不是关联127.0.0.1
Skippy le Grand Gourou

1
这是在Ubuntu 18.04上对我最好的答案,我希望文档是一致的,尽管此处或任何地方的完全限定域名不是同一术语。如果我的完全限定域名是google.com,而服务器名是google,则我在/ etc / hosts中的输入将是127.0.0.1 google.com google如果我可以将localhost行和广告本地主机替换为该行的末尾希望。我用这个:digitalocean.com/community/tutorials/...
新西兰开发

26
  • 打开一个终端
  • 打开/etc/apache2/httpd.conf文件:

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • 默认情况下,它将为空白。只需添加以下行:

    ServerName localhost
    
  • 保存文件并退出

  • 重新启动服务器

    sudo service apache2 restart
    

[1]启动默认编辑器,请参见 sudo update-alternatives --config editor


执行上一条命令后,发生以下错误**重新启动Web服务器apache2 / usr / sbin / apache2ctl:87:ulimit:错误设置限制(不允许操作)/ usr / sbin / apache2ctl:87:ulimit:错误设置限制(操作无效(13)权限被拒绝:make_sock:无法绑定到地址0.0.0.0:80没有可用的侦听套接字,正在关闭无法打开日志操作“启动”失败。Apache错误日志可能包含更多信息。[失败] ** @ green7
Deepu

尝试“须藤服务的Apache2重启”
waterloo2005

20

在新版本的apache2中,您只需执行以下命令:

sudo nano /etc/apache2/apache2.conf

在文件中添加以下新行结尾:

ServerName localhost

然后重新启动apache2:

sudo service apache2 restart

完成。


6

我发现创建一个新文件/etc/conf.d来修改apache2.conf或会更好httpd.conf

个人喜好使我的配置更改与分发程序包分开。因此更新不那么复杂。

我创建了文件/etc/apache2/conf.d/AAserverName,它仅包含:

ServerName myhost.mycomain.tld

其他建议当然也可以。


2

在Ubuntu 16.04中:

sudo -i

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

1

ServerName localhost

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

这不是错误。这只是朋友的提醒


1

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

其他一些答案建议您应该进行修改/etc/apache2/httpd.conf。当从apt升级apache时,此文件将被覆盖。对于您不想被覆盖的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


1

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

0

在Ubuntu 11.10上,我看到此消息,并且由于磁盘已满而发生挂起的引导。 其中一个日志文件已损坏。Apache可能实际上没有问题,但是此消息是启动挂起之前给出的最后一条线索。

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


0

如果您正在使用bash并希望具有最小的依赖性(并且如果您像我一样使用Docker,则只想为入口点脚本添加一个衬里),那么这两个选项应该可以工作。

如果要本地主机:

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

如果要使用现有主机名:

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

这使用bash重定向运算符将字符串附加到文件末尾。Echo自动插入换行符,因此一切就绪。


0

运行以下命令:

apachectl -t -D DUMP_INCLUDES

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

ServerName localhost

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

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


0

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服务apache2 restart来正常重启服务器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.