Djangoで作成したWebアプリのデプロイ後の更新時に少し躓いたので備忘録として書いています。
サーバー上のDjangoファイルを更新したあとの処理です。
動作環境
EC2(Linux)
Django3.8
Nginx:1
Gunicorn:20.1.0
結論
ファイルを更新しただけでは反映されないので以下を行う必要がある
1.EC2の再起動
2.gunicornの再起動
3.nginxの再起動
前提
・すでにDjangoWebアプリをEC2でデプロイされている
・その上でEC2のプログラムを更新した
EC2を再起動
EC2インスタンスのコンソール画面に行き、インスタンスを再起動する
Gunicornを再起動
Guniconの停止
再起動の前に一度Gunicornを停止します
Gunicornを再起動する場合は、一度停止してから再度、起動が必要です
sudo pkill gunicorn
再起動
仮想環境を有効にし、projectアプリケーションを含むディレクトリ(manage.pyコマンドを実行する時のディレクトリ)に移動してGunicornを再起動する
*xxxxxx部分は自身のDjangoプロジェクト名です
gunicorn --bind 0.0.0.0:8000 xxxxxx.wsgi -D
xxxxxx.wsgi とする事で、projectアプリケーション内のwsgi.pyを参照させています
0.0.0.0:8000と指定する事で、Djangoにバインド(紐付ける)させています
-Dのオプションをつける事で、バックグラウンドでGunicornを起動させます
起動確認
以下のコマンドを実行するとプロセスが立ち上がっているか確認できます。
ps ax|grep gunicorn
こんな感じになればOK
3597 ? S 0:09 /home/ec2-user/venv/bin/python3 /home/ec2-user/venv/bin/gunicorn --bind 0.0.0.0:8000 xxxxxx.wsgi -D
3600 ? S 0:02 /home/ec2-user/venv/bin/python3 /home/ec2-user/venv/bin/gunicorn --bind 0.0.0.0:8000 xxxxxx.wsgi -D
11471 pts/0 S+ 0:00 grep --color=auto gunicorn
Nginxを再起動
下記コマンドでNginxを再起動
sudo systemctl restart nginx.service
サイトをリロードし確認
問題なく表示されていれば完了
#参考とした記事