当我使用命令

sudo /etc/init.d/apache2 restart
重新启动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


是服务器使用127.0.1.1而不是127.0.0.1?是什么原因导致此错误?

#1 楼

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


但是在Ubuntu 14.04上:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn


别忘了“ .conf”(不起作用)。

评论


Ubuntu LAMP设置文档中还提到了Apache故障排除。在那里,他们建议创建其中带有ServerName localhost的文件/etc/apache2/conf.d/fqdn

–icc97
13年6月29日在9:36

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

– cwd
2013年9月26日22:42

在14.04中安装lamp-server ^之后,/etc/apache2/conf.d/不存在

– redanimalwar
2014年5月3日7:51



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

–丹
2014年5月7日在7:21

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

– nuala
14年6月18日在15:04

#2 楼

13.10或更高版本

从Apache 2.4开始-从13.10开始默认可用-您不能使用在conf.d目录中添加配置文件的方法。不再使用conf.d目录。所有配置文件都存储在/etc/apache2/conf-available目录中,并且所有配置文件现在都应该具有.conf扩展名。

为了解决Apache 2.4中的此消息,我们必须在conf-内部创建一个配置文件。可用目录。例如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


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

评论


有人知道如何让Apache说出配置文件有问题吗?我不知道为什么开发人员从不考虑将其放入错误消息中-几乎不需要太多代码!

–约翰Y
2014年7月8日在10:08

如果我有此服务器的Internet fqdm,请问这是放置它的地方吗?即我应该用myhost.org代替localhost吗?

– CPBL
14年8月14日在16:54

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

–丹
2014年10月7日在17:12

适用于14.04 LTS。

–Parto
15年6月29日在6:34

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

–弗雷德里克·高斯(Fredrick Gauss)
15年8月27日在7:56

#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。)

评论


+1为“正确配置的系统主机名”。我想正确配置服务器。这也修复了我在日志中的错误[警告] RSA服务器证书CommonName(CN)与服务器名称不匹配!?

–晶体管1
2014年4月16日在3:21



您认为这对Apache 2.2.22应该适用吗?我仍然收到“无法使用Server 127.0.1.1可靠地确定服务器的标准域名”

– David Winiecki
2015年4月12日在5:08

主机名localhost应该是myubuntuservername localhost吗?还是字符串文字主机名localhost?你的答案不清楚

–乔纳森
17年4月5日在16:25

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

–Skippy le Grand Gourou
17年5月12日14:25



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

– NZ开发人员
19年1月17日在1:38



#4 楼


打开终端

打开/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
13年2月14日在13:52



尝试'sudo service apache2 restart'

– waterloo2005
13年4月15日在3:09

#5 楼

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

sudo nano /etc/apache2/apache2.conf


添加以下文件的新行结尾:

ServerName localhost


然后重新启动apache2:

sudo service apache2 restart


已完成。

#6 楼

我发现在/etc/conf.d中创建一个新文件来修改q​​4312079q或apache2.conf更好。

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

我创建了文件httpd.conf,它仅包含:

ServerName myhost.mycomain.tld


其他建议当然也可以。
/>

#7 楼

在Ubuntu 16.04中:

sudo -i

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


#8 楼

在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


#9 楼

ServerName localhost

添加到

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf


这不是错误。这只是一个朋友提醒

#10 楼

在虚拟主机部分之外的配置文件中指定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

#11 楼

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

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

#12 楼

如果您使用的是bash并且想要最小的依赖项(如果像我这样使用Docker的话,只想为入口点脚本添加一个衬里),那么这两个选项应该可以使用。

如果您要使用localhost:

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

如果要现有的主机名:

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

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

#13 楼

运行以下命令:

apachectl -t -D DUMP_INCLUDES


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

ServerName localhost


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


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


#14 楼

在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