2010-09-15 76 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界面中使用類似的方法。

相關問題