Apache 2 - 在 Windows 上重新加载配置

Posted

技术标签:

【中文标题】Apache 2 - 在 Windows 上重新加载配置【英文标题】:Apache 2 - reload config on Windows 【发布时间】:2013-06-24 06:39:26 【问题描述】:

我有一个修改我的 httpd.conf 文件的 php 脚本,所以我需要在 Apache 中自动重新加载它。

在 Linux 上,可以正常重启,但在 Windows 上(我使用 restart 命令)它会终止所有当前连接。在 Windows 上是否有作为优雅重启的命令?有解决办法吗?

【问题讨论】:

【参考方案1】:

是的,您应该使用 -k 开关。

   httpd.exe -k restart or apache.exe -k restart 

这里有更多信息。 http://www.zrinity.com/developers/apache/usage.cfm

编辑:

这不应该是优雅的重点。注意我使用了-k。这与正常重启不同。它让当前会话在重新读取配置时完成他们的任务,以便它立即开始接受新请求。

来自文档:

USR1 或优雅信号导致父进程建议子进程在当前请求后退出(或者如果它们没有提供任何服务则立即退出)。父级重新读取其配置文件并重新打开其日志文件。随着每个子节点的死亡,父节点将其替换为来自新一代配置的子节点,该子节点立即开始为新请求提供服务。

http://httpd.apache.org/docs/2.2/stopping.html#graceful

它正在做你所要求的。

编辑 2:

添加此链接并提供两种可能的版本,因为有些人认为您只有一种特定的方式来做某事,而不是自己搜索。

http://httpd.apache.org/docs/2.4/platform/windows.html#wincons

我想我只是要删除这个答案,因为要么人们无法阅读,要么如果它对某人不起作用,它会获得 DV。不同的开发人员制作了不同的 Windows 版本。如果它不起作用,请从他们那里寻找答案。甚至 Linux 也有不同的命令,具体取决于发行版。天啊

【讨论】:

我知道如何重新启动 Apache,但“重新启动”对我帮助不大。它仍然会关闭端口 80 和 443 上的当前连接,因此此时恰好加载页面的用户会收到错误。 我前段时间在 Apache 2.2.22 上测试过。有时(很少)它只是冻结页面加载过程。但它主要终止连接并且浏览器弹出未知页面错误。一些用户上传内容时发生的图像。另一方面,在 Linux 上,它就像一个魅力。 不幸的是,我们只能按照 apache 所说的 应该 工作。我毫不怀疑它在 linux 上效果更好。我不在 Windows 上使用 apache,我个人只使用 Linux(CentOS) Web 服务器。所以我感觉到你的痛苦,但这可能是其他一些配置问题或以前的错误。不确定它现在如何在 Windows 上运行。这是我知道在 Windows 上执行此操作的唯一方法。 投了反对票,因为响应没有解决用户的实际问题 - 如何在 Windows 上执行正常重启。 @DaveG 是的。我什至提供了一个链接。有些版本使用Apache.exe,有些使用httpd.exe。如果您从命令提示符执行此操作,则无需在 Windows 中使用扩展名。 那是也是我提供链接的原因。它也是例如。主要线索是 -k 选项,无论操作系统如何。你甚至懒得读书吗?所以这是毫无根据的反对票。【参考方案2】:

在最新的 Apache 2.4.20 VC10 中,“httpd -k restart”命令实际上会优雅地重启。它不会断开任何连接,例如,如果有人从您的服务器下载某些东西,它不会中断这个过程。另一个证据是“-k restart”不会重置 mod_status 提供的服务器统计信息,甚至不会改变“Restart Time”值。

虽然“httpd -k graceful”和“httpd -k graceful-stop”命令在 Windows 中可用,但它们不会工作,并给出错误“无法创建套接字”。

【讨论】:

以上是关于Apache 2 - 在 Windows 上重新加载配置的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上更改 apache 的 documentroot 不起作用

本地 Windows 机器的基本 Apache 命令

Apache 2.4 无法在 Windows 10 上安装

Windows下Apache配置域名

XAMPP - 重新启动 apache 的快速方法?

如何使用APACHE在windows上>?