如何在不重新启动 Apache Web 服务器的情况下配置 VirtualHost?

Sad*_*dat 15 virtualhost apache-2.2

我在这里提到了 apache Web 服务器,因为我正在使用它。

med*_*iev 26

对您的 VirtualHosts 进行任何更改,然后执行

apache2ctl configtest
Run Code Online (Sandbox Code Playgroud)

要确保没有任何未解决的语法错误,请运行以下命令:

apache2ctl graceful
Run Code Online (Sandbox Code Playgroud)

或者

/etc/init.d/apache2 graceful
Run Code Online (Sandbox Code Playgroud)

USR1 或优雅信号使父进程建议子进程在当前请求后退出(或者如果他们没有提供任何服务则立即退出)。父级重新读取其配置文件并重新打开其日志文件。当每个子节点死亡时,父节点会用新一代配置中的子节点替换它,它会立即开始处理新请求。

基本上任何现有的连接都保持不变,所以它与完全重启不同 - 这就是我通常在具有数十个站点的生产服务器上执行此操作的方式。


小智 15

我刚刚看了这个页面,但不确定它与您的相关程度。

动态配置的海量虚拟主机

基本思想是用一种动态处理它们的机制替换所有静态配置。这有许多优点:

  1. 您的配置文件更小,因此 Apache 启动速度更快并使用更少的内存。
  2. 添加虚拟主机只是在文件系统中创建适当的目录并在 DNS 中创建条目的问题——您不需要重新配置或重新启动 Apache。

更新

无需重启Apache即可添加虚拟主机

事实证明,解决方案是使用 VirtualDocumentRoot 而不是单个虚拟主机的普通旧 DocumentRoot 设置。这允许将 $0 变量指定为值的一部分。所以我们最终能够拥有“VirtualDocumentRoot /somedir/$1?”。