一尘不染

Django:如何管理开发和生产设置?

django

我一直在开发一个基本的应用程序。现在在部署阶段,很明显,我需要本地设置和生产设置。

很高兴知道以下内容:

  • 如何最好地应对开发和生产设置。
  • 如何仅在开发环境中保留django-debug-toolbar之类的应用程序。
  • 开发和部署设置的其他任何技巧和最佳做法。

阅读 396

收藏
2020-03-27

共1个答案

一尘不染

该DJANGO_SETTINGS_MODULE环境变量,其设置文件Django的控件将加载。

因此,你将为各自的环境创建单独的配置文件(请注意,它们当然可以import *来自单独的“共享设置”文件),并用于DJANGO_SETTINGS_MODULE控制使用哪个文件。

就是这样:

如Django文档中所述:

DJANGO_SETTINGS_MODULE的值应采用Python路径语法,例如mysite.settings。请注意,设置模块应位于Python导入搜索路径上。

所以,让我们假设你创建myapp/production_settings.pymyapp/test_settings.py在源存储库。

在这种情况下,你将分别设置DJANGO_SETTINGS_MODULE=myapp.production_settings使用前者和DJANGO_SETTINGS_MODULE=myapp.test_settings后者。

从此开始,问题归结为设置DJANGO_SETTINGS_MODULE环境变量。

设置DJANGO_SETTINGS_MODULE使用脚本或shell

然后,你可以使用引导脚本或流程管理器来加载正确的设置(通过设置环境),或者仅在启动Django:之前从你的Shell中运行它export DJANGO_SETTINGS_MODULE=myapp.production_settings

请注意,你可以随时从Shell运行此导出-它不需要存在于你的.bashrc容器中。

DJANGO_SETTINGS_MODULE使用流程管理器进行设置

如果你不喜欢编写用于设置环境的引导脚本(并且有很好的理由!),我建议你使用流程管理器:

  • 通过Supervisor,你可以使用程序的environment配置密钥将环境变量传递给托管进程。
  • Honcho(与Ruby的Foreman完全相同的Python)可让你在“ environment”(.env)文件中定义环境变量。
    最后,请注意,你可以利用PYTHONPATH变量将设置存储在完全不同的位置(例如,在生产服务器上,将其存储在中/etc/)。这允许将配置与应用程序文件分开。你可能想要或不想要它,这取决于你的应用程序的结构。
2020-03-27