题 apache2:无法使用127.0.1.1 for ServerName可靠地确定服务器的完全限定域名


当我(重新)启动Apache时,我不断收到此警告。

* 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 [ OK ]

这是我的内容 etc/hosts 文件:

#127.0.0.1  hpdtp-ubuntu910
#testproject.localhost  localhost.localdomain   localhost
#127.0.1.1  hpdtp-ubuntu910

127.0.0.1   localhost
127.0.0.1   testproject.localhost
127.0.1.1   hpdtp-ubuntu910



# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

这是我的内容 /etc/apache2/sites-enabled/000-default 文件:

<VirtualHost *:80>
  ServerName testproject.localhost
  DocumentRoot "/home/morpheous/work/websites/testproject/web"
  DirectoryIndex index.php
  <Directory "/home/morpheous/work/websites/testproject/web">
    AllowOverride All
    Allow from All
  </Directory>

  Alias /sf /lib/vendor/symfony/symfony-1.3.2/data/web/sf
  <Directory "/lib/vendor/symfony/symfony-1.3.2/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

当我去 http://testproject.localhost,我得到一个空白页面。

谁能发现我做错了什么?


72
2018-01-16 19:24






答案:


默认情况下,Ubuntu不在Apache配置中指定ServerName,因为它不知道服务器的名称是什么。它尝试对您的IP地址进行反向查找,该地址不返回任何内容,因此它只需要使用IP地址作为 服务器名称

要修复它,请添加ServerName指令 在任何虚拟主机之外  - 例如在 /etc/apache2/httpd.conf,或为您的主IP地址设置反向DNS响应 - 在本例中为127.0.1.1

忽略它也完全没问题。


53
2018-01-16 21:37



这是违反直觉的。如果我添加ServerName 外 任何虚拟主机 - 如何从同一个Apache服务器提供多个虚拟主机? (这就是命名虚拟服务器的重点) - 除非你说我在/etc/apache2/httpd.conf中可以有多个ServerName条目 - user35402
然后,您可以在VirtualHost块中添加ServerName / ServerAlias,以使VirtualHost仅匹配您想要的主机名。读 httpd.apache.org/docs/2.2/mod/core.html#servername 对于低位。 - crb
我一直在寻找这个答案超过一个小时。关于这一点,互联网上有这么多废话,但这解决了我的问题。谢谢 - Mike
@Mike你和其他人都是天才!我正在寻找这个答案 四 天。 (好吧,没有完全工作的日子。) +1因为这是第一个解释我可以在虚拟主机外部添加ServerName指令而不影响它们的答案。考虑到这一点,ReinoutS的解决方案对我有用(对他来说也是+1)。 - Sony Santos


这是一个快速修复:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn

27
2018-03-15 16:25



谢谢。使用/ etc / hosts和httpd.conf的修复程序都没有为我工作,但是这样做了。 - Ryan
很好,谢谢! - James
在运行apache2的Ubuntu 13.04上修复它,谢谢! - dmanexe
在当前的Debian Wheezy上工作得很好:)谢谢 - DominikAngerer


另一种解决方法是将完全限定的域名放在 127.0.1.1 线 /etc/hosts。它甚至不必是一个实际上解析为dns服务器上的任何东西的fqdn。

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

会做的伎俩,同时也保留任何不期望额外的程序的行为 .lan。订单很重要;应首先指定具有更多级别的名称,如此示例中所示 .lan 地址在另一个地址之前。


16
2018-03-03 04:45





此解决方案适用于我的开发需求:

背景:

Debian Linux Sid:
VirtualHost开发:我有10个服务器名称(站点内有10个虚拟主机条目 - 可用)

我为每个人分配了一个唯一的本地主机IP地址 /etc/hosts

127.0.0.1   joe   localhost.localdomain   localhost
127.0.1.1   joe
127.0.1.2   joomla
127.0.1.3   schmoo
127.0.1.4   forrest
127.0.1.5   store
127.0.1.6   publisher
127.0.1.7   studios
127.0.1.8   drupal
127.0.1.9   graphics
127.0.1.10  wordpress
...

The following lines are desirable for IPv6 capable hosts

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

如果您要添加另一个虚拟主机(我有很多用于开发),请在另一个本地主机IP地址中添加一个条目,并在重新启动Apache 2.2之前启用该站点:

127.0.0.11 *newhost*

对于要作为VirtualHost文件启用的每个条目:

在/ etc / apache2的/网站可用/

joe joomla schoo forrest商店出版商工作室drupal图形wordpress

通过a2ensite / a2dissite启用/禁用所有虚拟主机 主机名

抑制错误

重新启动Web服务器:apache2apache2:无法可靠地完全确定服务器   限定域名,使用127.0.0.1 for ServerName   ...等待apache2:无法可靠地确定服务器的完全限定域   名称,使用127.0.0.1 for ServerName''

编辑 httpd.conf文件 在 /etc/apache2/httpd.conf [Debian中的空文件]:

ServerName 127.0.1.1

然后查找所有名称的查找 评论出来 要么 禁用 下线。

如果您忘记:唯一的VirtualHost *:80条目只需要在 ports.conf 文件,

/etc/apache2/ports.conf

**NameVirtualHost *:80**
Listen 80

<IfModule mod_ssl.c>
   # If you add NameVirtualHost *:443 here, you will also have to change
   # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
   # to <VirtualHost *:443>
   # Server Name Indication for SSL named virtual hosts is currently not
   # supported by MSIE on Windows XP.
   Listen 443
</IfModule>

<IfModule mod_gnutls.c>
   Listen 443
</IfModule>

在您的VirtualHost条目中遗漏 VirtualHost *:80

示例:virtualhost joe

<VirtualHost *:80>
    **ServerAlias joe**
    **...**
</VirtualHost>

7
2018-02-15 11:43





设置 ServerName 在httpd.conf中对我不起作用。我通过设置修复它 ServerName 127.0.0.1 在 /etc/apache2/conf.d/name

我正在运行Ubuntu 12.10 Alpha3并拥有 ServerName 两个地方都有定义。

资源: http://linuxconfig.net/manual-howto/error-solution-could-not-reliably-determine-the-servers-fully-qualified-domain-name.html


6
2017-09-08 21:05



酷,这对我也有用,也有同样的问题。 - Priyank Bolia


您缺少服务器配置级ServerName条目。您需要在任何主机之外都有一个ServerName条目,以便Apache将其用作默认值。

将ServerName条目放在VirtualHost中将无法解决问题。看到 ServerName指令


5
2018-01-16 21:36





要修复它,我们需要编辑/etc/apache2/httpd.conf或/etc/apache2.conf并添加以下行:

ServerName nameofserver

3
2018-01-08 10:24



你是对的!但是这个答案重复了crb答案的内容而没有提供任何新的信息或见解。我会考虑删除它或添加更多与其他人的答案不同的细节。 - Royce Williams
这让我走了,谢谢! - Drewdin


我相信你需要补充一下 ServerName 对于默认虚拟主机。由于它不在那里,它采用默认的IP地址。这是一种警告。我猜你的网络服务器仍然可用。


1
2018-01-16 20:21



我不明白你的评论。我的文件中已经有ServerName:<VirtualHost 127.0.0.1:8080> ServerName mysite.localhost你能否澄清一下你的评论?
对于-default- virtualhost,不仅仅是特定的虚拟主机。 - Kzqai