【问题标题】:How can I have multiple docroots with DDEV on apache?如何在 Apache 上使用 DDEV 拥有多个 docroot?
【发布时间】: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


【解决方案1】:

终于,我可以让它工作了。我不得不从ddev apache configs 复制 apache-site-default.conf 的全部内容 到 apachesite.conf 并追加

Define WEBROOT $WEBSERVER_DOCROOT

最后。 然后在站点可用的每个 conf 文件中,我可以将值检索为 ${webroot}。 我认为 apache.conf 会自动附加到默认的 conf 中,但事实并非如此。我本来希望使用宏,但我无法成功(添加 RUN a2enmod 宏 && a2enconf myvhost-macro 不起作用)。

【讨论】:

  • 能否请您发布一个示例配置?它不必包含敏感信息。我将标题更改为“我如何使用 ddev 和 apache 拥有多个 docroot” 您可以将其发布为要点或任何有效的地方,但人们会希望看到您的示例。
  • 您有两种可能性: 1 - 只需将虚拟主机(类似于上面问题中的示例)附加到 apache-site.conf 的末尾(这是 apache-site-默认) 。 2-如果您想在站点的特定文件中声明每个虚拟主机,就像您在正常(干净)配置中所做的那样,您必须通过定义将 $WEBSERVER_ROOT 放入 Apache 变量中并将其检索为 ${variable}在 conf 文件中并使用 docker 文件添加文件并启用站点。这是gist
【解决方案2】:

在 DDEV-Local v1.15+ 中,内置了使用 Apache 和 Nginx 执行多个 docroot 的能力。 .ddev/nginx_full 和 .ddev/apache 目录中甚至还有一个示例,显示了具体的操作方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    相关资源
    最近更新 更多