⚙️
【おまけ】【Django+Nginx+Gunicorn】アプリケーションをEC2へデプロイしよう
Django で作成したアプリを EC2 へデプロイしてみました。
↑ の記事では、サーバーで動作するための最短手順を踏んだつもりです
なので、やり残したこともおおくあります。。。
また、おまけ編ということで、ソースのアップデート方法をご紹介します
ソースの更新方法
- Django のソースを zip 化する
- teraterm や scp コマンドでサーバーへ zip ファイルをアップロードする
- サーバーに ssh 接続する
-
root ユーザーに切り替えて、zip ファイルを解凍する
sudo su unzip <アップロードしたファイル>
-
Nginx と Django のサービスを停止させる
# Nginxが起動していることを確認する systemctl status nginx # Nginxを停止させる systemctl stop nginx # Nginxが停止していることを確認する systemctl status nginx # Djangoアプリが起動していることを確認する systemctl status <Djangoプロジェクト名> # Djangoアプリ停止させる systemctl stop <Djangoプロジェクト名> # Djangoアプリが停止していることを確認する systemctl status <Djangoプロジェクト名>
- /var/www/配下の Django のファイルを更新する
-
Nginx と Django のサービスを起動させる
# Djangoアプリが停止していることを確認する systemctl status <Djangoプロジェクト名> # Djangoアプリが起動させる systemctl start <Djangoプロジェクト名> # Djangoアプリが起動していることを確認する systemctl status <Djangoプロジェクト名> # Nginxが停止していることを確認する systemctl status nginx # Nginxを起動させる systemctl start nginx # Nginxが起動していることを確認する systemctl status nginx
サービスの停止・起動の順番について
今回のシステムでは、 ユーザー →Nginx→Gunicornの流れでリクエストを処理します
不文律ですが、
停止するとき:ユーザーに近いサービスから停止していく
→ 今回だと Nginx → Gunicorn の順で停止させる
起動するとき:ユーザーから遠いサービスから起動していく
→ 今回だとGunicorn → Nginx の順で起動させる
とする場合が多い気がします
やり残したこと
箇条書きでやり残したことを書いていきます
- フロントをReact、バックエンドをDRFにする
- SECRET_KEY など機密情報は .envに記載する
- ソースをgithub経由でサーバーへアップロードする
- Github actionsを使用して自動デプロイできればいいな...
- ALB(ロードバランサー)を使用したい
- 簡単にHTTPS 化、AutoScaling と組み合わせて冗長化構成にするなど
- Route53を使用してドメインを割り当てる
- RDSを使用する
- ログ設定を理解する
- ローテートやアプリのログ(main, error, debug)と SQL のログを分けるなど
やりたいことがたくさんありますね(笑)
気長に1つずつやっていこうと思います!
Discussion