2010-09-15 110 views
1

我有一个脚本服务器端(包括一个shell和一个python脚本),可以重新启动Apache并执行一些我需要的清理。但是,我想公开一个webhook,所以当我的存储库更新时,Apache将重新启动。但是,我目前正在提供使用Apache重新启动Apache的URL,当脚本停止Apache或终止其进程时,脚本的其余部分停止执行。如何从apache服务的网页重新启动apache?

我一直在寻找遍布网络的指导如何做到这一点,虽然有一百万个脚本来重新启动Apache,但我找不到关于如何设置Apache服务器的指南,以便脚本将正确地完成执行。

为了说明什么,我在寻找:

  1. 我更改提交到我的仓库
  2. 库系统调用像HTPP一个网址://myserver.com/postwebhook
  3. 的postwebhook网址调用重新启动的Apache服务器上的脚本
  4. 的postwebhook URL返回200个状态

人有牛逼他的工作,并可以分享他们如何设置?

回答

1

脚本无法在服务器关闭时继续运行(至少不是脚本,它可以启动另一个进程,更改它的group而不会在重新启动时被Apache杀死,但无论如何它将无法返回结果)。

这里是一个解决办法:

  1. 创建一个脚本,可以给你上的Apache Web服务器 的 process ID。从客户端拨打 并记住它。
  2. 调用重新启动脚本 Apache。不要指望它给你 的结果,因为它不能。最好使用Ajax,隐藏框架或其他适当的方法调用它,以便用户不会看到它。
  3. 等待一段时间,然后开始拨打 脚本,该脚本再次给您提供进程ID 。达到超时时, 试图调用该脚本将意味着 出现问题,关机后Apache 无法启动。 达到超时尝试获取 不同的进程ID意味着服务器 根本没有重新启动。否则, 进程ID将会不同(不要 期望它大于或者小于 然而,它是非常特定操作系统的)。超时我的意思是一段时间后,你停止尝试。即使其中一次尝试超时,也必须多次尝试调用脚本。

许多无线路由器在其Web界面中使用类似的方法。