Elastic Beanstalk Django 設定資料庫


建立時間: 2022年6月3日 09:41
更新時間: 2022年6月3日 18:57

說明

這篇文章會說明如何使用 Elastic Beanstalk 資料庫,並整合到 Django

1. 到控制台編輯資料庫

截圖.png

  • 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;
}
觀看次數: 490
awsbeanstalkconfigconfigurationdatabasedjangoelasticpostgressetting
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!