【发布时间】:2020-04-15 17:13:39
【问题描述】:
在我的 ddev 容器中,我使用我在 Dockerfile 中添加和启用的可用站点中的 conf 文件在 Apache 中配置了多个虚拟主机。 在文档中,据说我们应该使用 $WEBSERVER_DOCROOT ,默认情况下是 /var/www/html ,但是这个值在任何自定义 conf 文件(apache-site.conf 或 sites-available 文件)中都不可用。 所以我必须对其进行硬编码,而且我必须在每个 conf 文件中执行此操作,因为我无法为所有虚拟主机定义一个值并共享它。
我的 Dockerfile :
ADD sites-available/my.site1.tld.conf /etc/apache2/sites-available
RUN a2ensite my.site1.tld
我的配置文件: my.site1.tld.conf:
<VirtualHost *:80>
ServerName my.site1.tld
DocumentRoot $WEBSERVER_DOCROOT/my.site1.tld/www
</VirtualHost>
【问题讨论】:
-
您知道添加配置的“正常”方式,对吧? ddev.readthedocs.io/en/stable/users/extend/… - 如果您使用该技术(与您在此处所做的完全不同) $WEBSERVER_DOCROOT 设置为 docroot 的(容器内)路径,由 config.yaml 中的“docroot”确定。也许你可以说出你想要完成的事情。第二个文档根?
-
如果您尝试添加额外的 docroot,您可以这样做。 docroot 将是 /var/www/html/path/to/second/docroot,在您的示例中可能是
DocumentRoot /var/www/html/www?但是,如果您不需要这样做,请不要这样做。 ddev 开箱即用地支持多个主机名和 FQDN。 -
正如我所说,我需要配置多个虚拟主机来重现托管许多站点的真实 Web 服务器:每个虚拟主机都有自己的 docroot,实际上是 $WEBSERVER_DOCROOT 的子目录。我为 my.site1.tld 举了一个例子,但这里也是 my.site2.tld , 3 等......可以像文档中解释的那样在 apache.conf 中声明所有虚拟主机,但 $WEBSERVER_DOCROOT 仍然不是可用的。 config.yaml 中的 docroot 变量只是连接到默认根 /var/www/html 并且结果应该可以通过自定义 conf 中的 $WEBSERVER_DOCROOT 访问。事实并非如此。
标签: ddev