2

私は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

何か案は?

4

4 に答える 4

1

nginxuwsgi一緒に使ってみませんかvirtualenv。これにより、本番環境のような環境が提供されますが、起動時にdjangoアプリも起動します。使用している場合は、をubuntu 10確認する必要があります。uwsgi-pythonそれ以外の場合は、最新のをインストールしてuwsgiください。私は通常、そのように始めvirtualenvますuwsgi

sudo nano /etc/uwsgi-python/apps-available/app.xml

<uwsgi>
   <socket>127.0.0.1:8889</socket>
  <pythonpath>/home/user/code/</pythonpath>
  <virtualenv>/home/user/code</virtualenv>
  <pythonpath>/home/user/code/app</pythonpath>
   <app mountpoint="/">
    <script>uwsgiApp</script>
  </app>
</uwsgi>

またnginx、/ etc / nginx / apps-available / defaultでファイルを設定します(ファイルは少し簡単です)。djangoこれは、常にアプリを使用 するのに役立ちます。

于 2013-02-09T13:38:02.907 に答える
1

変化する:

exec source activate

ただで:

source activate

これにより、仮想環境がロードされます。おそらく、他の「exec」を削除する必要があります。それでもうまくいかない場合は、upstart ログを投稿してください。

いくつかのコメント:

  • 出力を /dev/null 以外の場所に記録すると役立つ場合があります:)
  • runserver は安定しているとは言えません。クラッシュすることが時々あります。その場合、upstart を強制的にリロードするか、runserver 呼び出しを while ループに入れる必要があると思います。
  • このセットアップでは、ipdb のような対話型デバッガーを使用できません。
于 2012-03-12T10:32:06.797 に答える
0

これは、Ubuntu 14.04 およびおそらく他のバージョンでも機能するはずです。

root@vagrant-ubuntu-trusty-64:/etc/init# service my_app start 
my_app start/running, process 7799

root@vagrant-ubuntu-trusty-64:/etc/init# cat /var/log/upstart/my_app.log 

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

June 30, 2015 - 06:54:18
Django version 1.8.2, using settings 'my_test.settings'
Starting development server at http://0.0.0.0:8080/
Quit the server with CONTROL-C.

root@vagrant-ubuntu-trusty-64:/etc/init# service my_app status
my_app start/running, process 7799
root@vagrant-ubuntu-trusty-64:/etc/init# service my_app stop
my_app stop/waiting
root@vagrant-ubuntu-trusty-64:/etc/init# service my_app status
my_app stop/waiting

これを機能させるための構成は次のとおりです。

root@vagrant-ubuntu-trusty-64:/etc/init# cat my_app.conf 

description "my_app upstart script"

start on runlevel [23]

respawn

script
    su vagrant -c "source /home/vagrant/dj_app/bin/activate; /home/vagrant/dj_app/bin/python /home/vagrant/my_test/manage.py runserver 0.0.0.0:8080"
end script
于 2015-06-30T06:58:56.207 に答える