Upstartは、setpgrp( github issue を参照)を呼び出そうとするため、gunicornの起動を好みません。10.04.1サーバーインストールで[gunicorn]を起動する最良の方法は何でしょうか。 -理想的には、失敗したメインプロセスと複数のワーカーを自動的に再起動します。 gunicornサイトで、彼らは[runit]と[supervisord]に言及していますが、ubuntuの新興企業と一緒に別の種類のプロセススーパーバイザーをインストールする価値はありますか?
誰かがより良い解決策を思い付かない場合は、試験後に進捗をここで文書化します。
OK
respawn
respawn limit 10 5
expect daemon # also tried expect fork
exec python /path/to/manage.py run_gunicorn --daemon
しかし、私は仕事を始めるように思えない、それはただハングする? ps aux | grep manage
またはsyslogに何も表示されません。upstartがフォークを適切にキャッチしていないと推測しています。 gunicorn
の代わりにmanage.py
を直接使用しているからですか?チャンスがあり次第、直接実行してみましょう。
明確化:manage.py
はDjango 1.2インスタンスからのもので、gunicorn
がインストール済みアプリとしてありますが、settings.pyには特別な設定はありません(gunicornsポートを指定するための構文がわかりませんsettings.pyの/ address/workersなので、cmdline argsを使用するだけでした)
Githubの問題でもコメントしました。
Setpgrpとgunicornには問題があるように見えるので、それを実行するとより良い結果が得られる可能性があります
フォークを期待する
アップスタートジョブ定義に追加されました。
のようなもの
start on runlevel [2345]
stop on runlevel [!2345]
respawn
expect fork
exec /path/to/gunicorn --daemon
うまくいくはずです。
「man 5 init」は豊富な情報であり、物事がこのように機能する理由を理解するのに役立つはずです。
UpunicornでGunicornを使用できるようにするパッチをGunicornマスター[1]にプッシュしました。このバージョンでは、「expect fork」設定ディレクティブを使用する必要はありません。