はじめに
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インスタンスの作成
- AWSマネジメントコンソールにログイン
- EC2サービスを開く
- **「インスタンスの起動」**ボタンをクリック
- AMI(Amazon Machine Image)を選択(例:Amazon Linux 2 または Ubuntu)
- インスタンスタイプの選択(無料枠ならt2.micro)
- キーペアの作成とダウンロード
- セキュリティグループを設定(SSH、HTTP/HTTPSを許可)
- 「起動」ボタンをクリックし、インスタンス作成完了
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アプリをデプロイする手順を解説しました。
- AWSアカウントを作成し、EC2インスタンスをセットアップ
- Django環境を構築し、データベースを設定
- GunicornとNginxを利用してDjangoを本番環境にデプロイ
- AWSのセキュリティ設定とHTTPS対応を実施