はじめに
AWSのEC2(Elastic Compute Cloud)を利用することで、Djangoアプリケーションをクラウド上にデプロイし、スケーラブルな環境で運用することができます。本記事では、EC2インスタンスにDjangoをセットアップする手順を、初心者にも分かりやすく解説します。
EC2インスタンスの作成
1. AWSアカウントの作成とログイン
まず、AWSの公式サイト(https://aws.amazon.com/)でアカウントを作成し、AWSマネジメントコンソールにログインします。
2. EC2インスタンスの起動
- AWSマネジメントコンソールで「EC2」を開く
- 「インスタンスの起動」をクリック
- AMI(Amazon Machine Image)を選択
- Amazon Linux 2 または Ubuntu 20.04 LTS を選択
- インスタンスタイプを選択
- 無料枠を利用する場合は「t2.micro」を選択
- キーペアの作成・設定
- SSHで接続するためのキーペアを作成し、ローカルPCにダウンロード
- セキュリティグループの設定
- 必要なポートを開放(SSH: 22、HTTP: 80、HTTPS: 443)
- 「起動」ボタンをクリックし、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をセットアップする手順を詳細に解説しました。
- EC2インスタンスの作成
- PythonとDjangoのセットアップ
- PostgreSQLの導入と設定
- GunicornとNginxによる本番運用
- AWSのセキュリティ設定