多个 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
当使用多个 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