使用環境變數管理跨伺服器的設定
使用環境變數是一種廣泛使用的方法,可根據環境設定應用程式的配置,如 The Twelve-Factor App 中所述 。
由於配置可能會在部署環境之間發生變化,因此這是一種非常有趣的方式來修改配置,而無需深入挖掘應用程式的原始碼,以及將祕密儲存在應用程式檔案和原始碼儲存庫之外。
在 Django 中,主要設定位於專案資料夾中的 settings.py
。由於它是一個簡單的 Python 檔案,你可以使用標準庫中的 Python 的 os
模組來訪問環境(甚至具有適當的預設值)。
settings.py
import os
SECRET_KEY = os.environ.get('APP_SECRET_KEY', 'unsafe-secret-key')
DEBUG = bool(os.environ.get('DJANGO_DEBUG', True) == 'False')
ALLOWED_HOSTS = os.environ.get('DJANGO_ALLOWED_HOSTS', '').split()
DATABASES = {
'default': {
'ENGINE': os.environ.get('APP_DB_ENGINE', 'django.db.backends.sqlite3'),
'NAME': os.environ.get('DB_NAME', 'db.sqlite'),
'USER': os.environ.get('DB_USER', ''),
'PASSWORD': os.environ.get('DB_PASSWORD', ''),
'HOST': os.environ.get('DB_HOST', None),
'PORT': os.environ.get('DB_PORT', None),
'CONN_MAX_AGE': 600,
}
}
使用 Django,你可以更改資料庫技術,以便在開發計算機上使用 sqlite3(這應該是提交源控制系統的理想預設值)。雖然這是可能的,但不建議:
支援服務(例如應用程式的資料庫,排隊系統或快取)是 dev / prod 奇偶校驗非常重要的一個領域。 ( 十二因素應用程式 - 開發/生產平價 )
要使用 DATABASE_URL 引數進行資料庫連線,請檢視相關示例 。