私はsupervisordを使用することをお勧めします:私はそうでgunicorn呼び出されているはずのカスタムsettings.pyファイルを持っていました。 Supervisorは、ブート時にあなたが指示したユーザーアカウントでアプリを起動します。ここで
は、私が/etc/supervisor/conf.d/下に置く私のmy_app.confです:
[program:my_app]
command=/home/some_user/my_app/run_gunicorn
directory=/home/some_user/my_app
user=some_user
redirect_stderr=true
stdout_logfile=/home/some_user/supervisord_stdout.txt
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=10
マイrun_gunicornスクリプトは次のようになります。
#!/bin/bash
source /home/some_user/virtualenvs/my_app_virtualenv/bin/activate
exec /home/some_user/virtualenvs/my_app_virtualenv/bin/gunicorn -c gunicorn.conf wsgi:application
私はMY_APPに直接gunicorn参照できます.conf。しかし、私はこの方法で私が活動化することができるので、私はしません。私はDJANGO_SECRETを自分の起動スクリプトの末尾にenv varとして入れました。また、GitやMercurialに属していないAPIキーや他の機密情報を使っても良いです。
マイgunicorn.confは次のとおりです。
backlog = 2048
bind = "127.0.0.1:9000"
pidfile = "/home/some_user/gunicorn-my_app.pid"
daemon = False
debug = False
workers = 3
logfile = "/home/some_user/gunicorn-my_app.log"
loglevel = "info"
timeout = 90
実は私はそこが改善される可能性が確信しているが、彼らはルートされずに私のアプリを実行し得ます。 Supervisordは、アプリケーションサーバーが動作し続けることを保証します。私は次に、proxy_pass経由で私のアプリケーションサーバーでnginxを指しています(必要であれば共有することもできます)。
EDIT:ファイル名を明確にする
本当にコマンドですか? gunicorn_djangoコマンドの最初に '-u nobody'を追加できますか?これは私にとってはうまくいかないようです。 – Mark
@マーク彼らは 'sudo'コマンドの最後に' -u nobody'を追加します。 'gunicorn_django'コマンドの先頭ではありません。 'sudo -u'はroot以外のユーザを選択して、以下のコマンドを実行します。 – BHSPitMonkey