1

Apache を再起動し、必要なその他のクリーンアップを実行できるスクリプト サーバー側 (シェルと Python スクリプトの両方) があります。ただし、Webhook を公開したいので、リポジトリが更新されると Apache が再起動されます。ただし、現在、Apache を使用して Apache を再起動する URL を提供しています。スクリプトが Apache を停止するか、そのプロセスを強制終了すると、残りのスクリプトの実行が停止します。

これを行う方法に関するガイドをウェブ全体で探していました.Apacheを再起動するためのスクリプトが100万個ありますが、スクリプトが適切に終了するように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 が異なります (大きくも小さくもなりませんが、OS 固有です)。タイムアウトとは、試行を停止するまでの一定期間を意味します。試行の 1 つがタイムアウトしても、スクリプトの呼び出しを複数回試行する必要があります。

同様のアプローチが、多くのワイヤレス ルーターの Web インターフェイスで使用されています。

于 2010-09-15T21:20:42.857 に答える