6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Django アプリを AWS EC2 にデプロイ

Posted at

はじめに

フロントエンド React + バックエンド Django REST Framework でアプリを作成したが、ローカル環境でしか動かすことができないので、AWS EC2 インスタンス上にデプロイして外部からもアクセスができるようにする。React アプリを AWS EC2 にデプロイにて、フロントエンド側をデプロイしたので、今回はバックエンドである DRF API をデプロイすることとし、Web サーバーソフトウェアには、nginx を用いる。なお DRF API はすでに作成されていることを前提とする。【丁寧解説】秒速でもDjango 3アプリをAWS EC2で公開【Nginx, gunicorn, postgresqlデプロイ】を参考にした。

GitHub への push

デプロイ前にコードを GitHub へ push する。DB との接続情報など機密情報があるので、(レポジトリ自体を private にしているが念のため)あらかじめ別ファイルとして GitHub 上へはあげないようにする。まず環境変数の管理を行う django-environ パッケージをインストールする。

$ pip install django-environ

[Django] django-environで環境変数を管理してみる djangoを参考に .env ファイルを作成する。ここでは SECRET_KEY, DEBUG, DATABASE_URL の3項目を記述している。.env ファイルは GitHub 上にあげないように、以下のような .gitignore ファイルも合わせて作成する。

.gitignore
.env

次に .env ファイルに分けた情報を settings.py にて読み込むために以下のようにコードを修正する。

settings.py
import environ
import os

env = environ.Env()
env.read_env(os.path.join(BASE_DIR, '.env'))
SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')

DATABASES = {
    'default': env.db(),
}

以下コマンドで、必要なライブラリを requirements.txt に書き出す。

$ pip freeze > requirements.txt
$ sudo apt update
$ sudo apt install python3-pip
$ pip install --upgrade pip
$ pip install -r requirements.txt

上記までを実行したら、GitHub のリモートレポジトリに push する。

EC2 インスタンスの作成、nginx のインストールおよびセットアップ

基本的には React アプリを AWS EC2 にデプロイと同様に実行するだけなので、ここでは割愛。

DRF API の起動

GitHub に push されているアプリをクローンして起動する。まず git をインストールして、レポジトリをクローンする。

$ sudo yum -y install git
$ git clone https://github.com/<your repository>

Django アプリが動作する環境を作成するため、Python3 およびパッケージ管理ツールである pip をインストールする。

$ sudo apt update
$ sudo apt install python3 python3-pip

アプリに必要なライブラリをインストールして、起動する。

$ cd <your repository>
$ pip install -r requirements.txt
$ python3 manage.py runserver

以上で、Django アプリが起動できる。

おわりに

1つのサーバーに1つのアプリをデプロイすることができた。nginx について理解を深め、より複雑な設定等も扱えるようにしたい。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?