使用环境变量管理跨服务器的设置
使用环境变量是一种广泛使用的方法,可根据环境设置应用程序的配置,如 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 参数进行数据库连接,请查看相关示例 。