現在、vpsを再構築しています。gunicorn/ wsgi Djangoプロセスを管理するためにスーパーバイザを使用したいと思います。つまり、スーパーバイザはプロセスを終了し続けます。
2010-07-23 14:54:40,575 INFO supervisord started with pid 31391
2010-07-23 14:54:41,582 INFO spawned: 'projectx' with pid 31395
2010-07-23 14:54:41,691 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:42,695 INFO spawned: 'projectx' with pid 31401
2010-07-23 14:54:42,801 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:44,806 INFO spawned: 'projectx' with pid 31404
2010-07-23 14:54:44,912 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:47,917 INFO spawned: 'projectx' with pid 31408
2010-07-23 14:54:48,022 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:49,023 INFO gave up: projectx entered FATAL state, too many start retries too quickly
これは私が使っている設定です:
[program:projectx]
command=/path/to/project/bin/gunicorn_Django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
user=myuser
autostart=true
autorestart=true
私はすでにダブルチェックを行っており、gunicorn_Djangoは正しくスポーンするとステータス0を返します。
Exitcodes = 0,2を明示的に設定に追加しようとしましたが、それも違いを生むようには見えません。プロセスは正しく生成されたようですが、スーパーバイザーはそうではなかったと考えています。
誰もがこれを解決する方法についての手がかりを持っていますか?
ありがとう、ビョルン
わかりました、いくつかの困惑の後、私はそれがユーザーと何か関係があることを理解しました。特定のユーザーとして子プロセスを実行しようとしました。行を削除した後(以下の私の構成を参照)、すべてが正常に動作しています。
Gunicorn設定:
bind = "127.0.0.1:3305"
workers = 2
スーパーバイザ構成:
[program:projectx]
command=/path/to/project/bin/gunicorn_Django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
; set the user here instead of in the gunicorn config.
user=user
autostart=true
autorestart=unexpected
stdout_logfile=/path/to/project/logs/project.log
redirect_stderr=true
exitcodes=1
Gunicorn_Djangoがデーモン化している場合、それはスーパーバイザが管理するように設計された種類のプログラムではありません。スーパーバイザは、監視対象プログラムがフォアグラウンドで実行されることを期待しているため、プログラムが終了したかどうかを監視できます。
supervisord docs を参照してください。
スーパーバイザでhttpデーモンを実行しようとすると、同様のエラーが発生しました。
古いpidファイルを削除して修正:httpd_pid