多个 VHOST 文件 VS 一个大的VHOST文件

有时我们可能更喜欢拥有多个文件,假设服务器托管的每个网站都有一个。
这样配置起来会更容易,因为我们不必滚动浏览一个巨大的文件。

另一个原因是 let encrypt 的 apache 插件不支持同一文件中的多个虚拟主机。
然而,这可能会改变,但这是将站点保存在单独的 .conf 文件中的一个重要原因。

每个站点的各个 conf 文件中仍然应该有一个专用的 VirtualHost 块,如下所示:

# ***
# mysite.com
# ***
<VirtualHost *:80>
    DocumentRoot "/var/www/mysite/"
    ServerName mysite.com
    ErrorLog ${APACHE_LOG_DIR}/mysite.com-error.log
    CustomLog ${APACHE_LOG_DIR}/mysite.com-access.log common
    <Directory "/var/www/mysite/">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

解决方案

在这种情况下,我们知道问题是由一个 VHOST 文件(000-default.conf)更改为多个文件引起的。
为了解决这个问题,我们只需要在 /etc/apache2/sites-enabled 中为每个虚拟主机创建一个符号链接。
为此,我们在终端中键入以下命令:

cd /etc/apache2/sites-enabled
ln -s /etc/apache2/sites-available/[site-name1].conf
ln -s /etc/apache2/sites-available/[site-name2].conf

将 [site-name1] 替换为我们自己的 .conf 文件的名称。

如果我们还没有这样做,还记得删除原始 000-default.conf 文件的符号链接,因为它不再需要。

创建符号链接后,我们可以重新启动 apache。

sudo service apache2 restart
Apache如何配置多个 Vhost 文件

当使用多个 vhost 文件配置 Apache 而不仅仅是单个文件(即 000-default.conf)时,我们可能会遇到一个问题,导致 Apache 在 Linux 中启动或者重新启动 apache2 服务时无法启动。
该错误可能类似于以下内容:

Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
apache2.service 的作业失败,因为控制进程退出并显示错误代码。
有关详细信息,请参阅“systemctl status apache2.service”和“journalctl -xe”。

这是一个可能由许多不同配置错误引起的一般错误,因此请务必仔细注意可能导致问题的我们正在执行的操作。
按照建议执行 "systemctl status apache2.service"不会有太大帮助,但它确实告诉我们是配置错误。

日期:2020-06-02 22:18:50 来源:oir作者:oir