Apache 仅为一个网页重新启动 Ubuntu 20.04

Apache 仅为一个网页重新启动 Ubuntu 20.04

我的 Ubuntu/Apache 服务器上有几个网页。现在我必须更改一个域的 DocumentRoot。在 xyz.conf 文件中更改 DocumentRoot 后,对域的请求与所需的 DocumentRoot 目录不匹配。Apache 将旧路径保留在缓存中。现在我需要重新启动 Apache,但不知道如何仅针对此域执行此操作。有人可以解释一下怎么做吗?非常感谢。

答案1

在简单的 Apache 虚拟主机设置中,没有“仅限此站点”的概念,因为所有站点都定义在一个配置中,该配置通常由许多文件构建而成。有一个服务器进程可能会生成其他进程或线程来处理请求,但它们各自只能看到整个配置。

要使配置更改生效,您通常可以进行正常重新加载,这就是您执行service reload apache2systemctl reload apache2或时所发生的apache2ctl graceful情况。这会小心地完成使用旧服务器进程处理每个未完成的请求,然后将新连接交给看到新配置的新服务器进程。不会出现明显的不可用性。我说“通常”是因为有几个配置更改确实需要完全重启。

您在评论中询问,如果每次配置更改时都必须重新启动 Web 服务器,生产服务如何处理这种情况。答案是,需要高可用性的设置会将负载平衡器放在 Web 服务器前面,这样就有多个服务器可用于响应请求。这样,可以通过滚动重新加载来完成配置更改,而无需客户端注意。

这样做不仅是为了更改配置,还有助于防止少数 Web 服务器主机出现问题。在当前设置中,您只有这一个 Web 服务器主机:如果它发生任何问题,所有网站都会瘫痪。

非常受欢迎的网站最终也会超出单个 Web 服务器的服务能力,因此负载均衡器是水平扩展的方式。

单点故障将成为负载均衡器,因此也必须具有高可用性,并且继续进行下去,设置也将变得更加复杂。

答案2

就像 grifferz 所说的那样,Apache 并不直接支持这一点。但是,一种解决方法可能是将 Apache 指向一个静态的符号链接路径,然后更新该符号链接以指向更改后的真实文档根目录。

这样,Apache 就不需要重新加载或重新启动,但您仍然可以更改有效的 DocumentRoot。

相关内容