我一直在开发一个基本的应用程序.现在,在部署阶段,很明显我需要本地设置和生产设置.
了解以下信息将非常棒:
- 如何最好地处理开发和生产环境.
- 如何将Django-debug-Toolbar等应用程序仅保留在开发环境中.
- 有关开发和部署设置的任何其他提示和最佳做法.
我一直在开发一个基本的应用程序.现在,在部署阶段,很明显我需要本地设置和生产设置.
了解以下信息将非常棒:
DJANGO_SETTINGS_MODULE
environment variable控制Django将加载哪些设置文件.
因此,您可以为各自的环境创建单独的配置文件(请注意,它们当然可以从单独的"共享设置"文件中创建import *
个),并使用DJANGO_SETTINGS_MODULE
来控制使用哪个配置文件.
以下是操作方法:
如Django文档中所述:
DJANGO_SETTINGS_模块的值应该是Python路径语法,例如mysite.设置.请注意,设置模块应该位于Python导入搜索路径上.
那么,假设您在源存储库中创建了myapp/production_settings.py
和myapp/test_settings.py
.
在这种情况下,分别将DJANGO_SETTINGS_MODULE=myapp.production_settings
设置为使用前者,将DJANGO_SETTINGS_MODULE=myapp.test_settings
设置为使用后者.
从这里开始,问题归结为设置DJANGO_SETTINGS_MODULE
环境变量.
DJANGO_SETTINGS_MODULE
using a script or a shell然后,您可以使用 bootstrap 脚本或进程管理器加载正确的设置(通过设置环境),或者在启动Django:export DJANGO_SETTINGS_MODULE=myapp.production_settings
之前从您的shell运行它.
请注意,您可以随时从shell运行此导出,它不需要在您的.bashrc
或任何程序中运行.
DJANGO_SETTINGS_MODULE
using a Process Manager如果你不喜欢编写设置环境的 bootstrap 脚本(有很好的理由这么认为!),我建议使用流程管理器:
environment
configuration key将环境变量传递给托管进程..env
) file中定义环境变量.最后,请注意,您can利用PYTHONPATH
变量将设置存储在完全不同的位置(例如,在生产服务器上,将它们存储在/etc/
中).这允许将配置与应用程序文件分开.你可能想要也可能不想要,这取决于你的应用程序是如何构建的.