2016-12-22 4 views
0

こんにちは私はUWSGIとNginxを使って次のチュートリアルを使ってDjangoをデプロイしましたhttp://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html すべてが正常に動作しています。私はPythonコードを更新している間に挑戦しています。新しい変更を展開する効率的な方法がわかりません。 ヒットして試用した後、次のコマンドを使用して展開しましたdjango、uwsgi、nginxの設定でのPythonの変更を反映する方法

git pull; sudo service uwsgi stop; sudo service nginx restart; sudo service uwsgi restart; /usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals 

このコマンドが正常に機能します。しかし、私は問題に直面する

  1. ウサギはフォアグラウンドで実行されます。私が変更を加えるたびに、新しいUWSGIインスタンスが実行を開始します。
  2. 複数のUWSGIインスタンスのため、メモリが枯渇したため、My AWSサーバーがクラッシュします。

Pythonコードの変更を反映するためにどのコマンドを実行する必要があるかを知りたい。 PS:以前のAPACHE Djangoセットアップでは、Apacheを再起動するためにのみ使用しましたが、nginxを再起動するだけで変更を反映することは可能です。

+0

sudo nano /etc/init/uwsgi.conf 

次に、上記で作成したファイルに次の行を追加しますか? –

+0

どうすればいいですか? – jugadengg

答えて

0

はこれを試してみてください:

git pull 
python manage.py migrate # to run any migrations 
sudo service uwsgi restart 

Ctrlキーを押しながらZ、その後bg +これは、バックグラウンドでプロセスを実行する必要があり を入力してください。

これが機能するかどうかお知らせください。

+0

動作しません。 Ubuntu 14.04で – jugadengg

0

バックグラウンドでuwsgiを実行するためにこれを見てください。 .iniファイル/etc/uwsgi/sites/projectname.iniファイルを作成します。

:その後、/etc/systemd/system/uwsgi.serviceで次のsystemdにスクリプトを作成

:(Ubuntuの16.04の場合)

[uwsgi] 
project = projectname 
base = projectpath 

chdir = %(base)/%(project) 
home = %(base)/Env/%(project) 
module = %(project).wsgi:application 

master = true 
processes = 5 

socket = %(base)/%(project)/%(project).sock 
chmod-socket = 666 
vacuum = true 

:スクリプトは、この(Ubuntuの16.04用)のようになります。

[Unit] Description=uWSGI Emperor service After=syslog.target [Service] ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites Restart=always KillSignal=SIGQUIT Type=notify StandardError=syslog NotifyAccess=all [Install] WantedBy=multi-user.target 

ボード上のこの新しいuWSGIサービスとにsystemdのinitシステムの状態を更新

sudo systemctl daemon-reload 

次を実行する必要がありますスクリプトを開始するために:再起動時にuWSGIを開始するために

sudo systemctl start uwsgi 

を、あなたも必要になります。

sudo systemctl enable uwsgi 

あなたがするには、次のように使用することができますステータスを確認してください:

systemctl status uwsgi 

(ubuntu 14の場合)04):

はuWSGIのために成り上がりのスクリプトを作成します:あなたはフォアグラウンドで実行さuwsgiなぜ

description "uWSGI application server in Emperor mode" 

start on runlevel [2345] 
stop on runlevel [!2345] 

setuid user 
setgid www-data 

exec /usr/local/bin/uwsgi --emperor /etc/uwsgi/sites 
+0

を実行すると、以下のエラーが表示されます。 sudo:systemctl:コマンドが見つかりません。どのようにそれを回避するには? – jugadengg

+1

ubuntuバージョン14.04の回答を更新しました。一番上の部分はすべてのバージョンで共通であり、残りの部分はバージョンに基づいて分割されています。チェックしてください。 –

+0

私はすでにUWSGIが強制終了されたときに自動的に実行される同様の起動スクリプトを持っていますが、再起動しても "502 Bad Gateway"という名前のnginxでエラーが表示されます。このエラーは、このコマンドを実行したときにのみ消えます。 'git pull; sudoサービスuwsgi stop; sudoサービスnginx restart; sudoサービスUWSGI再起動。/usr/local/bin/uwsgi --emperor/etc/uwsgi/vassals' uwsgiを何度も何度も実行しなくても、変更を配備する方法を知りたいと思います。 – jugadengg

関連する問題