1

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

我一直在网上寻找有关如何执行此操作的指南,虽然有一百万个用于重新启动 Apache 的脚本,但我找不到有关如何设置 Apache 服务器以使脚本正确完成的指南执行。

为了说明我在寻找什么:

  1. 我将更改提交到我的存储库
  2. 存储库系统调用像 htpp://myserver.com/postwebhook 这样的 url
  3. postwebhook URL 调用服务器上重新启动 apache 的脚本
  4. postwebhook URL 返回 200 状态

任何人都有这个工作并且可以分享他们如何设置它?

4

1 回答 1

1

服务器关闭时脚本无法继续(至少不能作为脚本,它可以启动另一个进程,更改其并且不会在重新启动时被 Apache 杀死,但无论如何它都无法返回结果)。

这是一种解决方法:

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

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

于 2010-09-15T21:20:42.857 回答