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 上重新加载配置的主要内容,如果未能解决你的问题,请参考以下文章