私はDjangoをアップスタートで実行するためにドキュメントと例をたどろうとしてきましたが、それを常に実行することはできません。
にある私のupstart構成ファイルは次の/etc/init/myapp.conf
とおりです。
start on startup
#expect daemon
#respawn
console output
script
chdir /app/env/bin
exec source activate
exec /app/env/bin/python /app/src/manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 &
end script
と入力するsudo service myapp start
と、コンソールには起動したと表示されますが、実行されていないようです。
デバッグ出力を見て、何が問題なのかを確認することはできますか? Django アプリケーションを別のユーザーとして実行する必要がありますdjangouser
。どうすればそうできますか?
(サービスがどこでうまくいかないかをテストするために、いくつかの行をコメントアウトしています)。これは本番用ではなく、私の内部開発用です。
ありがとう。
編集#1:
両方のコマンドを単純なスクリプトにラップしました/app/run.sh
#!/bin/bash
cd /app/env/bin
source activate
cd /app/src
python manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 &
..そして、私はに変更/etc/init/myapp.conf
しました
start on startup
expect daemon
exec su - djangouser -c "bash /app/run.sh"
実行時sudo service myapp start
— アプリケーションは起動しますが、PID が間違っていて、それを強制終了できないようですsudo service myapp stop
何か案は?