最近的 Apache2 更新破坏了虚拟主机,并在重新启动或启动时出现新错误

最近的 Apache2 更新破坏了虚拟主机,并在重新启动或启动时出现新错误

我在 Ubuntu 12.04 上,最近安装了一个 apache2 更新,从那时起,所有虚拟主机都没有指向正确的目录,现在指向默认的本地主机。此外,我在 apache2 重新启动时收到错误:

shafox@shafox:~$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message [ OK ]. 

我知道我没有设置服务器名不是localhost,但是为什么错误消息前面有一个AH00558标记?这是我的系统中可用的站点:

/etc/apache2/sites-available$ ls
000-default.conf       default-ssl.conf  localbox-local
000-default.conf.dpkg-new  devbox-dev        sites-si

以前是这样的:

/etc/apache2/sites-available$ ls
000-default  default-ssl  localbox-local  devbox-dev   sites-si

例如,其中一个虚拟主机文件如下所示:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName localbox.local
        DocumentRoot /home/shafox/Localbox
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /home/shafox/Localbox/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

我不想再次创建所有这些虚拟主机。我已按照本教程创建所有这些虚拟主机。

这是我的 /etc/hosts 文件:

127.0.0.1       localhost
127.0.1.1       shafox
127.0.1.1       devbox.dev
127.0.1.1       localbox.local
127.0.1.1       sites.si

# 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

来自 apache2 error.log 的错误日志 错误日志链接

答案1

从技术上来说,这不是“错误”……但它是一个警告。以前的 init.d 脚本只会将该警告放入日志中,并且在重新启动时不报告任何内容。该消息是准确的,因为 Apache 无法根据可用信息识别服务器的 fqdn。您可以简单地将其添加到 hosts 文件中的环回接口条目中,如下所示:

127.0.1.1       servername server.fully.qualified.name.tld

或指定服务器名称正如 apache.conf 中的警告所建议的指令:

ServerName www.example.com

此外,如果您决定使用 ubuntu,您确实应该使用 upstart 命令来控制 apache 等服务,而不是 init.d 脚本。像这样:

sudo restart apache2

答案2

在将 Drupal 多站点开发系统升级到 Apache 2.4 后,我遇到了同样的问题。mod_rewrite 根本不起作用。关键是虚拟主机文件中的指令:

<Directory /whatever-path/>
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

注意允许覆盖全部要求所有已授予 这与 Apache 2.2 不同

希望这可以帮助。

答案3

我也遇到过这个问题,但用 Diogenes 的相同答案解决了。具体来说,语法被替换了。

https://httpd.apache.org/docs/trunk/upgrading.html

在此示例中,所有请求都被拒绝。

2.2 配置:Order Deny,Allow Deny from All

2.4 配置:要求全部拒绝

在此示例中,所有请求都被允许。

2.2 配置:命令允许、拒绝允许所有

2.4 配置:要求所有授予

在以下示例中,example.org 域中的所有主机都被允许访问;所有其他主机都被拒绝访问。

2.2 配置:顺序拒绝,允许拒绝所有允许来自 example.org

2.4 配置:需要主机 example.org

相关内容