AH00558:httpd:在创建 VirtualHost 后无法可靠地确定服务器的完全限定服务器名错误

Posted

技术标签:

【中文标题】AH00558:httpd:在创建 VirtualHost 后无法可靠地确定服务器的完全限定服务器名错误【英文标题】:AH00558: httpd: Could not reliably determine server's fully qualified servername error after creating VirtualHost 【发布时间】:2020-08-30 13:41:32 【问题描述】:

我在 CentOS 8 中安装了一个 Apache 服务器,它可以正确地提供 http 和 https 页面,也就是说,当我从浏览器连接到服务器时,我可以查看 Apache 测试页面

我用这个教程启用了https:https://www.techrepublic.com/article/how-to-enable-https-on-apache-centos/

这很有效。但是,当我尝试使服务器能够为默认测试页面以外的网页提供服务时,在尝试使用

sudo systemctl restart httpd  

这是我的 /etc/https/conf/http.conf 的内容,其中删除了一些 cmets。

ServerRoot "/etc/httpd"
Listen 80

Include conf.modules.d/*.conf

User apache
Group apache

ServerAdmin root@localhost

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80

<Directory />
    AllowOverride none
    Require all denied
</Directory>

DocumentRoot "/var/www/html"

<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/error_log"

LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%Refereri\" \"%User-Agenti\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%Refereri\" \"%User-Agenti\" %I %O" combinedio
    </IfModule>

    CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

</IfModule>

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule mime_module>
    TypesConfig /etc/mime.types

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

AddDefaultCharset UTF-8

<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>

EnableSendfile on

IncludeOptional conf.d/*.conf

IncludeOptional sites-enabled/*.conf

我感觉这与 ServerName 条目有关。如上所示,默认情况下它被注释,但我尝试取消注释它以及将它与我的 VirtualHost 文件中的配置相匹配,但我得到了同样的错误。

这里是 /etc/httpd/sites-available/adorkable.conf 的内容

注意:单词 adorkable 已替换为我的用户名 username1)

<VirtualHost *:443>
    ServerAdmin email@example.com
    DocumentRoot "/var/www/html/username1/"
    ServerName localhost.localdomain
    ServerAlias username1
    ErrorLog /var/www/html/username1/error.log

<Directory "/var/www/html/username1/">
    DirectoryIndex index.html index.php
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

发出 systemctl restart httpd 后 systemctl status httpd 的输出:

● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2020-05-14 14:53:28 KST; 43s ago
     Docs: man:httpd.service(8)
  Process: 11746 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 11746 (code=exited, status=1/FAILURE)
   Status: "Reading configuration..."

May 14 14:53:28 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
May 14 14:53:28 localhost.localdomain httpd[11746]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
May 14 14:53:28 localhost.localdomain systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE
May 14 14:53:28 localhost.localdomain systemd[1]: httpd.service: Failed with result 'exit-code'.
May 14 14:53:28 localhost.localdomain systemd[1]: Failed to start The Apache HTTP Server.

这里如何重启httpd服务?

更新:上面的链接教程说我们需要在httpd.conf的末尾添加以下行

IncludeOptional sites-enabled/*.conf  

这是我对默认 httpd.conf 文件所做的唯一更改,如果我注释此行,我可以正常重启 httpd。所以问题出在我的 /etc/httpd/sites-available/adorkable.conf 文件版本中(在我的情况下重命名为 username1.conf。我在启用站点时有一个指向该文件的符号链接,使用命令创建

sudo ln -s /etc/httpd/sites-available/adorkable.conf /etc/httpd/sites-enabled/adorkable.conf  

按照链接教程中的说明。

【问题讨论】:

尝试从虚拟主机中删除 ServerName @Chi.C.J.RajeevaLochana 不起作用,我尝试删除 ServerName、ServerAlias、ServerAdmin;同样的错误 代替sudo ln -s /etc/httpd/sites-available/adorkable.conf /etc/httpd/sites-enabled/adorkable.conf ,您也可以尝试只使用命令a2ensite adorkable。但我不认为这有什么不同 @Chi.C.J.RajeevaLochana 我没有 a2ensite 命令 哦,好的。我虽然你使用的是 Ubuntu,抱歉 【参考方案1】:

从虚拟主机中删除错误日志。并尝试。由于 /var/www/html/username1/error.log 不存在。只有在删除 ErrorLog 指令后 apache 重新启动成功时,才尝试运行 chown apache:apache /var/www/html/username1 -R。运行命令后,尝试重新添加 ErrorLog 指令,我相信它应该可以工作。

【讨论】:

我问“这里如何重启httpd服务?” Apache 没有重新启动。而且我没有“httpd.conf/apache2.conf”我有“/etc/httpd/conf/httpd.conf” 好的。将其添加到 httpd.conf 感谢您的更新,但即使在执行 chown 之后,如果我重新添加 ErrorLog 指令,我也会收到相同的错误。 让我们在此评论中讨论。让我们不要继续上面的 cmets。太长了,所以 尝试进入 username1,运行 cat &gt; error.log 并按 Ctrl + D。然后尝试重新启动。确保 error.log 归“apache”所有

以上是关于AH00558:httpd:在创建 VirtualHost 后无法可靠地确定服务器的完全限定服务器名错误的主要内容,如果未能解决你的问题,请参考以下文章

虚拟主机:AH00558:apache2:无法可靠地确定服务器的完全限定域名

重启服务器“AH00558: apache2: Could not reliably determine the server's fully qualified domain name”问题

Apache 错误整理

Snort环境配置与安装遇到的问题

错误:AH00543:httpd:错误的用户名 - Xampp / Apache

Could not reliably determine the server's fully qualified domain name