AWSでDjangoアプリをデプロイする手順【Django×AWS入門1】

はじめに

DjangoはPythonで開発された強力なWebフレームワークであり、AWS(Amazon Web Services)を活用して本番環境にデプロイすることで、高いスケーラビリティと安定性を持つWebアプリケーションを構築できます。本記事では、AWS上にDjangoアプリをデプロイする具体的な手順を解説します。

デプロイ環境の選択

AWSの主要サービス

Djangoアプリのデプロイには、以下のAWSサービスを利用できます。

  • EC2(Elastic Compute Cloud):仮想サーバー上にDjangoをセットアップ
  • Elastic Beanstalk:自動管理された環境にDjangoをデプロイ
  • ECS(Elastic Container Service):Dockerコンテナを利用してデプロイ
  • Lambda(サーバーレス):API Gatewayと連携して軽量アプリをデプロイ

本記事では、EC2を使用してDjangoをデプロイする手順を紹介します。

AWS環境の準備

1. AWSアカウントの作成と設定

AWSの公式サイト(https://aws.amazon.com/)にアクセスし、アカウントを作成します。

2. EC2インスタンスの作成

  1. AWSマネジメントコンソールにログイン
  2. EC2サービスを開く
  3. **「インスタンスの起動」**ボタンをクリック
  4. AMI(Amazon Machine Image)を選択(例:Amazon Linux 2 または Ubuntu)
  5. インスタンスタイプの選択(無料枠ならt2.micro)
  6. キーペアの作成とダウンロード
  7. セキュリティグループを設定(SSH、HTTP/HTTPSを許可)
  8. 「起動」ボタンをクリックし、インスタンス作成完了

Django環境の構築

1. SSH接続とパッケージのインストール

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

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

必要なパッケージをインストールします。

sudo yum update -y  # Amazon Linuxの場合
sudo apt update -y  # Ubuntuの場合
sudo yum install -y python3 python3-pip git

2. 仮想環境の作成とDjangoのセットアップ

python3 -m venv myenv
source myenv/bin/activate
pip install django gunicorn

Djangoプロジェクトを作成。

django-admin startproject myproject
cd myproject

3. 設定変更

Djangoのsettings.pyを修正し、EC2で動作するように設定します。

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

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

データベースにPostgreSQLを使用する場合の手順です。

1. PostgreSQLのインストール

sudo yum install -y postgresql postgresql-server postgresql-devel
sudo systemctl start postgresql
sudo systemctl enable postgresql

2. 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
sudo systemctl start nginx
sudo systemctl enable nginx

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. AWSアカウントを作成し、EC2インスタンスをセットアップ
  2. Django環境を構築し、データベースを設定
  3. GunicornとNginxを利用してDjangoを本番環境にデプロイ
  4. AWSのセキュリティ設定とHTTPS対応を実施