【发布时间】:2017-01-25 14:28:51
【问题描述】:
我到处找遍了所有我能找到的都是过时的或来自几个不同来源的点点滴滴,但他们都没有一个完整的步骤来将 Django 部署到生产环境。
我希望看到的是使用 git、本地和生产 settings.py、.gitignore 专门为 Django 部署 Django 的推荐方法。
我将如何实施设置以适应这两种环境以及应将哪些内容添加到 .gitignore 文件中以便仅将必要的文件发送到 git 存储库?
请注意,我想了解使用本地和生产设置的最佳做法和最新方法。
部署 Django 应用时会出现此类问题。
- 设置应该存储在哪里?
- 如何正确实施设置以适应这两种环境?
- 哪些敏感信息应与主要设置分开?
25/09/2016 更新:
感谢andreas 澄清这一点,现在我完全同意没有部署 Django 的标准方法。我进行了长时间的研究,发现了最常用的部署 Django 设置的方法。我将与所有有同样疑问的人分享我的发现。
回答
设置应该存储在哪里?
设置更好地容纳在设置模块中,而不是单个 settings.py 文件中。
如何正确实施设置以适应两种环境?
这是 设置模块 非常方便的地方,因为您可以简单地进行环境独立设置,并且可以使用 git 或任何其他版本控制来维护它们。
哪些敏感信息应该与主要设置分开?
敏感信息,例如数据库、电子邮件、密钥和任何与身份验证相关的信息,以及您将如何秘密提供这些私人信息,我建议使用andreas 建议。
您可以在 /etc/app_settings 创建一个单独的文件并使其非常严格,或者只是使用系统内的环境变量。
.gitignore 部分
对于 .gitignore 部分,我发现了一个很棒的存储库,您可以在 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
因为答案太长了,所以我在Django Settings Deployment 创建了一篇文章来解释每一步。
【问题讨论】: