将 Django 设置部署到生产环境的推荐方法是什么?

Rod*_*roz 2 django django-deployment

我到处寻找,我能找到的都是过时的或来自几个不同来源的零碎碎片,但没有一个完整的步骤来说明如何将 Django 部署到生产环境。

我想看到的是使用 git、本地和生产 settings.py、.gitignore 专门为 Django 部署 Django 的推荐方法。

我将如何实现设置以适应这两种环境以及应将哪些内容添加到 .gitignore 文件中,以便仅将必要的文件发送到 git 存储库?

请注意,我想了解使用本地和生产设置的最佳实践和最新方法。

部署 Django 应用程序时会出现此类问题。

  1. 设置应该存储在哪里?
  2. 如何正确实施设置以适应两种环境?
  3. 哪些敏感信息应该与主要设置分开?

25/09/2016 更新:

感谢andreas澄清这一点,现在我完全同意没有部署 Django 的标准方法。我进行了长时间的研究,发现了部署 Django 设置最常用的方法。我将与所有有同样疑问的人分享我的发现。

接听

设置应该存储在哪里?

这些设置更好地包含在设置模块中,而不是单个settings.py文件中。

如何正确实施设置以适应两种环境?

这是设置模块非常方便的地方,因为您可以简单地拥有独立于环境的设置,并且它们可以使用 git 或任何其他版本控制进行维护。

哪些敏感信息应该与主要设置分开?

敏感信息,例如数据库、电子邮件、密钥和任何与身份验证相关的信息以及您将如何秘密提供这些私人信息,我建议使用andreas建议。

您可以在 at 创建一个单独的文件/etc/app_settings并使其受到严格限制,或者只是使用系统内的环境变量。

.gitignore 部分

对于 .gitignore 部分,我找到了一个很棒的 repo,您​​可以在https://github.com/github/gitignore 上获得各种示例。

我最终使用了:

# OSX Finder turds
.DS_Store

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# Distribution / packaging
.Python
env/

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Django stuff:
*.log
my_app/settings/dev.py
bower_components
Run Code Online (Sandbox Code Playgroud)

因为答案太长了,所以我创建了一篇文章来解释Django 设置部署的每一步。

And*_*eas 5

没有一种推荐的方式来部署 Django 应用程序。官方文档提供了使用 Apache 和 mod_wsgi 进行部署的指南。其他一些选择是像Heroku / Dokku这样的PaaS或使用Docker部署

在不同的文件中划分您的设置是很常见的。例如,您可以将设置分成四个不同的文件:

  • 基本文件 (base.py) - 所有环境的通用设置(下面的每个文件都从这里导入 from .base import *
  • 开发文件 (development.py) - 特定于开发的设置,(DEBUG = True 等...)
  • 生产文件 (production.py) - 特定于生产环境的设置。(DEBUG = False,白噪声配置等)
  • 测试文件(testing.py)

您可以控制使用环境变量加载的设置文件 DJANGO_SETTINGS_MODULE

将诸如 SECRET_KEY 之类的机密存储在环境变量中也是一种常见的推荐做法。SECRET_KEY = os.environ.get('SECRET_KEY', None). 或者查看django-environ 包

查看此repo以获取示例设置。