重新启动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时,我得到一个空白页。

有人可以发现我在做什么错吗?

#1 楼

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

要修复此问题,可以在任何虚拟主机之外添加ServerName指令-例如在/etc/apache2/httpd.conf中,或为您的主IP地址设置反向DNS响应-在这种情况下,为127.0.1.1

也可以忽略它。

评论


这是违反直觉的。如果我将ServerName添加到任何虚拟主机之外,如何从同一Apache服务器提供多个虚拟主机? (毕竟,这是命名虚拟服务器的要点)-除非您说我在/etc/apache2/httpd.conf中可以有多个ServerName条目。

–user35402
2010年7月17日在16:52

然后,您可以在VirtualHost块内添加ServerName / ServerAlias,以使VirtualHost仅与所需的主机名匹配。阅读httpd.apache.org/docs/2.2/mod/core.html#servername进行深入了解。

–crb
2010年7月17日在22:37

我一直在寻找这个答案一个多小时。互联网上对此有很多废话,但这解决了我的问题。谢谢

–迈克
13年3月22日在5:32

@Mike你和其他人都是天才!我一直在寻找这个答案四天。 (好的,不是满工作日。) +1,因为这是解释我可以在虚拟主机之外添加ServerName指令而不影响它们的第一个答案。考虑到这一点,ReinoutS的解决方案为我工作(对他也是+1)。

–索尼·桑托斯(Sony Santos)
13年8月8日在3:46

#2 楼

快速修复方法:

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


评论


谢谢。使用/ etc / hosts或httpd.conf的修复都没有对我有用,但是确实可以。

–瑞安
13年1月21日在18:53

在运行apache2的Ubuntu 13.04上修复了该问题,谢谢!

– dmanexe
13年5月16日在2:12

#3 楼

解决该警告的另一种方法是将完全限定的域名放在127.0.1.1/etc/hosts行上。它甚至不必一定是可以真正解析dns服务器上任何内容的fqdn。

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910


可以做到这一点,同时还保留了任何行为。不需要额外的.lan的程序。顺序很重要;应该首先指定具有更多级别的名称,如本例中.lan地址位于另一个地址之前。

#4 楼

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

背景:

Debian Linux Sid:
VirtualHost开发:我有10个服务器名称(站点内有10个virtualhost条目,可用)

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

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


如果要添加另一个虚拟主机(我有大量用于开发)将条目添加到另一个localhost IP地址,并在重新启动Apache 2.2之前启用该站点:

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

/ etc / apache2 / sites-available /

joe joomla schoo forrest store发行商工作室drupal图形wordpress

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

以抑制错误


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


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

127.0.0.11 *newhost*


然后解析查找您添加的所有名称,注释掉或禁用该行的所有名称。

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

/etc/apache2/ports.conf

ServerName 127.0.1.1


在VirtualHost条目内,不包括VirtualHost *:80

示例:virtualhost joe

**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>


#5 楼

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

我正在运行Ubuntu 12.10 Alpha3,并且在两个位置都定义了ServerName

来源:http://linuxconfig.net/手动方法/错误解决方案无法可靠地确定服务器完全合格的域名.html

评论


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

–Priyank Bolia
2012年9月13日下午13:51

#6 楼

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

将ServerName条目放入VirtualHost不能解决此问题。请参阅ServerName指令。

#7 楼

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

ServerName nameofserver


评论


你是对的!但是,此答案重复了crb答案的内容,而没有提供任何新信息或见解。我会考虑将其删除或添加更多与其他人的答案不同的细节。

–罗伊斯·威廉姆斯
2012年1月8日在16:13

#8 楼

我相信您需要为默认虚拟主机添加ServerName。由于不存在,因此它将使用默认IP地址。这是一种警告。我想您的Web服务器仍将正常运行。

评论


我不明白你的评论。我的文件中已经有ServerName: ServerName mysite.localhost请您说明一下吗?

–非晶
2010年1月16日在20:41

对于-default-虚拟主机,不仅限于特定的虚拟主机。

– Kzqai
2011年5月11日18:20

#9 楼



必须按照以下步骤在httpd.conf文件中添加ServerName。

默认情况下,httpd.conf文件为空白。现在,只需将以下行添加到文件中。

sudo gedit /etc/apache2/httpd.conf


保存文件并从gedit退出。最后重新启动服务器。

ServerName localhost



2)在Include httpd.conf的末尾添加apache2.conf

#10 楼

如果安装后您的etc / apache2目录中不存在httpd.conf文件,则主apache配置文件apache2.conf将没有引用,因此将任何内容添加到创建的httpd.conf中都不会任何东西。您可以简单地将“ ServerName hostname”行添加到apache2.conf文件中。

#11 楼

是/ etc / hosts仍然具有这些条目。 (我跳过了上面的一些答案)

127.0.0.1 localhost
127.0.0.1 testproject.localhost

两个IP地址127.0.0.1都是相同的。

从回送IP子网为testproject.localhost提供不同的IP地址。