Elastic Beanstalk Django 設定資料庫
分類
建立時間: 2022年6月3日 09:41
更新時間: 2022年6月3日 18:57
說明
這篇文章會說明如何使用 Elastic Beanstalk 資料庫,並整合到 Django
1. 到控制台編輯資料庫
- Engine: postgres(建議,您可以自行調整)
- Engine version: 沒有特殊要求的話,選最新版即可
- Instance class: 機器的性能,無特別高流量需求的話,選最便宜的 micro
- Storage: 預設
- Username: 自訂使用這名稱,需記錄下來
- Password: 自訂密碼,需記錄下來
- Availability: 無特殊需求選便宜的 Low 就好
- Database deletion policy: 當此環境刪除時,資料庫該如何除理
- 建立快照(建議選這個)
- 保留
- 刪除
最後記得按 Apply 按鈕
2. 安裝 postgres 套件
終端
如果有用 python 虛擬環境,記得先啟動
$ source bin/activate
Django 4.0.4 使用 psycopg2 版
$ pip install psycopg2
關閉 python 虛擬環境
$ deactivate
3. 安裝 postgres
在專案的 .ebextensions 資料夾建立一個配置檔來讓 Elastic Beanstalk 安裝 postgres
檔名前面的 00 代表的是檔案執行順序,請自行調整
.ebextensions/00_packages.config
packages:
yum:
amazon-linux-extras: []
commands:
01_postgres_activate:
command: sudo amazon-linux-extras enable postgresql13
02_postgres_instalel:
command: sudo yum install -y postgresql-devel
4. 設定資料庫連線
在 setting.py 設定資料庫連線
your_project/setting.py
import os
# aws beanstalk database
DATABASES['default'] = {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ['RDS_DB_NAME'],
'USER': os.environ['RDS_USERNAME'],
'PASSWORD': os.environ['RDS_PASSWORD'],
'HOST': os.environ['RDS_HOSTNAME'],
'PORT': os.environ['RDS_PORT'],
}
5. 建立預設超級使用者
在專案的 app 目錄下建立 management/commands/default_superuser.py
your_app/management/commands/default_superuser.py
from django.core.management.base import BaseCommand
from django.contrib.auth.models import User
class Command(BaseCommand):
"""建立預設的 superuser
"""
def handle(self, *args, **options):
# 請自訂您的帳號、密碼、信箱
username = 'your_user_name'
password = 'your_password'
email = 'your_email'
if not User.objects.filter(username=username).exists():
User.objects.create_superuser(
username,
email,
password
)
6. 部署後執行的指令
你可能會想執行 python manage.py migrate
可以在專案建立 .platform/hooks/postdeploy 目錄
這個目錄會在 Elastic Beanstalk 部署後執行
在裡面建立一個 .sh 檔來執行指令
.platform/hooks/postdeploy/00_django.sh
#!/bin/bash
source /var/app/venv/*/bin/activate && {
# 若有需要可以再補其他指令
# log which migrations have already been applied
python manage.py showmigrations;
# migrate the rest
python manage.py migrate --noinput;
# 建立預設的 superuser
python manage.py default_superuser;
}
觀看次數: 678
awsbeanstalkconfigconfigurationdatabasedjangoelasticpostgressetting
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!