EC2にDjangoをセットアップする完全ガイド【Django×AWS入門2】

はじめに

AWSのEC2(Elastic Compute Cloud)を利用することで、Djangoアプリケーションをクラウド上にデプロイし、スケーラブルな環境で運用することができます。本記事では、EC2インスタンスにDjangoをセットアップする手順を、初心者にも分かりやすく解説します。

EC2インスタンスの作成

1. AWSアカウントの作成とログイン

まず、AWSの公式サイト(https://aws.amazon.com/)でアカウントを作成し、AWSマネジメントコンソールにログインします。

2. EC2インスタンスの起動

  1. AWSマネジメントコンソールで「EC2」を開く
  2. 「インスタンスの起動」をクリック
  3. AMI(Amazon Machine Image)を選択
    • Amazon Linux 2 または Ubuntu 20.04 LTS を選択
  4. インスタンスタイプを選択
    • 無料枠を利用する場合は「t2.micro」を選択
  5. キーペアの作成・設定
    • SSHで接続するためのキーペアを作成し、ローカルPCにダウンロード
  6. セキュリティグループの設定
    • 必要なポートを開放(SSH: 22、HTTP: 80、HTTPS: 443)
  7. 「起動」ボタンをクリックし、EC2インスタンスを作成

EC2インスタンスへの接続

1. SSHで接続

ローカルPCからEC2にSSHで接続します。

ssh -i my-key.pem ec2-user@<EC2のパブリックIP>

2. パッケージの更新

接続後、まずシステムのパッケージを最新に更新します。

sudo yum update -y  # Amazon Linux
sudo apt update -y  # Ubuntu

Django環境のセットアップ

1. Pythonとpipのインストール

EC2インスタンスにPython3とpipをインストールします。

sudo yum install -y python3 python3-pip  # Amazon Linux
sudo apt install -y python3 python3-pip  # Ubuntu

2. 仮想環境の作成

Djangoを実行するための仮想環境を作成します。

python3 -m venv myenv
source myenv/bin/activate

3. Djangoのインストール

pip install django gunicorn

4. Djangoプロジェクトの作成

django-admin startproject myproject
cd myproject

5. 設定の変更

Djangoのsettings.pyを編集し、EC2で動作するように変更します。

ALLOWED_HOSTS = ['<EC2のパブリックIP>', 'localhost']

PostgreSQLのセットアップ(推奨)

DjangoのデータベースとしてPostgreSQLを利用する場合の手順です。

1. PostgreSQLのインストール

sudo yum install -y postgresql postgresql-server postgresql-devel  # Amazon Linux
sudo apt install -y postgresql postgresql-contrib  # Ubuntu

2. PostgreSQLの起動

sudo systemctl start postgresql
sudo systemctl enable postgresql

3. Djangoのデータベース設定

Djangoのsettings.pyを編集し、PostgreSQLを利用するように設定します。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

GunicornとNginxの設定

1. Gunicornのセットアップ

pip install gunicorn

DjangoアプリをGunicornで実行。

gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

2. Nginxのインストールと設定

sudo yum install -y nginx  # Amazon Linux
sudo apt install -y nginx  # Ubuntu

Nginxの設定ファイルを作成(/etc/nginx/conf.d/django.conf)。

server {
    listen 80;
    server_name <EC2のパブリックIP>;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Nginxを再起動。

sudo systemctl restart nginx

静的ファイルの設定

Djangoの静的ファイルをNginxで提供できるように設定。

python manage.py collectstatic

Nginxの設定に以下を追加。

location /static/ {
    alias /home/ec2-user/myproject/static/;
}

Nginxを再起動。

sudo systemctl restart nginx

AWSのセキュリティ設定

1. セキュリティグループの設定

AWSのEC2セキュリティグループで以下のポートを開放。

  • 80番ポート(HTTP)
  • 443番ポート(HTTPS)
  • 22番ポート(SSH)(管理用)

2. HTTPS対応(SSL証明書の設定)

AWSの**ACM(AWS Certificate Manager)**を使用して無料のSSL証明書を取得し、ALBと連携させることでHTTPS対応が可能。

まとめ

本記事では、AWSのEC2インスタンスにDjangoをセットアップする手順を詳細に解説しました。

  1. EC2インスタンスの作成
  2. PythonとDjangoのセットアップ
  3. PostgreSQLの導入と設定
  4. GunicornとNginxによる本番運用
  5. AWSのセキュリティ設定