(virtualenv内で)呼び出しpython manage.py run_gunicorn
てguniconを開始しています。
Ubuntu 12.04 サーバーの再起動後に gunicorn を再起動するにはどうすればよいですか?
スーパーバイザーを使用して、起動時にアプリを起動し、クラッシュ時に再起動できます。
スーパーバイザーをインストールし、次の /etc/supervisor/conf.d/your_app.conf
ような内容の構成ファイルを作成します。
[program:your_app]
directory=/path/to/app/working/dir
command=/path/to/virtualenv_dir/bin/python /path/to/manage_py/manage.py run_gunicorn
user=your_app_user
autostart=true
autorestart=true
私は Ubuntu を使用していて、ディストリビューションに既に含まれているツールを使用するのが好きなので、マシンの起動後にUpstartを使用して gunicorn を起動しました。
次のコードを に入れます/etc/init/django_sf_flavour.conf
。
description "Run Custom Script"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec /home/USER/bin/start_gunicorn.sh
/home/USER/bin/start_gunicorn.sh
起動後にこのファイル ( ) を実行します。
#!/bin/bash
set -e
cd MY_PROJ_ROOT
source venv/bin/activate
test -d $LOGDIR || mkdir -p $LOGDIR
exec python MY_PROJ_PATH/manage.py run_gunicorn
これは @j7nn7k の回答に基づいていますが、少し変更があります
1 - upstart で実行する .conf ファイルを /etc/init ディレクトリに作成します
cd /etc/init
nano django_sf_flavour.conf
2 - 以下の行を django_sf_flavour ファイルに入れて保存します。
description "Run Custom Script"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec /home/start_gunicorn.sh
3 - 次の行を含むホーム ディレクトリに start_gunicorn.sh ファイルを作成します。
cd /home
nano start_gunicorn.sh
4 - これらのコードを入れて保存します。
#!/bin/bash
set -e
cd mysite
source myenv/bin/activate
test -d $LOGDIR || mkdir -p $LOGDIR
exec gunicorn —bind 0.0.0.0:80 mysite.wsgi:application
5 - 実行可能なパーミッションを start_gunicorn.sh に設定します
cd /home
chmod 775 start_gunicorn.sh
** 追加 **
このコマンドで構文django_sf_flavour.confを確認してください
init-checkconf /etc/init/django_sf_flavour.conf
答えは次のようになります。
File /etc/init/django_sf_flavour.conf: syntax ok
必要に応じて、upstart ログ ファイルで問題を確認できます。
cat /var/log/upstart/django_sf_flavour.log
再起動せずに、このように django_sf_flavour.conf ファイルをテストします
service django_sf_flavour start
このようにbashファイル「start_gunicorn.sh」をテストします
cd /home
bash start_gunicorn.sh
django_sf_flavour の状態を確認する
initctl list | grep django_sf_flavour