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

时间:2013-06-26 22:41:05

标签: windows apache2 httpd.conf

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

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

3 个答案:

答案 0 :(得分:12)

是的,你应该使用-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

答案 1 :(得分:0)

在最新的Apache 2.4.20 VC10中,“httpd -k restart”命令实际上正在重新启动。它不会丢弃任何连接,例如,如果有人从您的服务器下载某些内容,它将不会中断此过程。还有一个证据就是“-k restart”不会重置mod_status提供的服务器统计信息,甚至不会改变“重启时间”值。

尽管Windows中提供了“httpd -k graceful”和“httpd -k graceful-stop”命令,但它们无法正常发出错误“无法创建套接字”。

答案 2 :(得分:-1)

对不起@Panama杰克,但我也不认为它正在解决问题,我读了你的两个链接(打印和阅读)。 我认为令人困惑的部分是第一个链接使用httpd -k restart和httpd -k graceful的事实,而Windows的第二个链接仅使用httpd -k restart,我不清楚该链接重新启动是优雅的,因为它被解释在第二个链接(对于Unix)