将 Django 设置部署到生产环境的推荐方法是什么?
What is the recommended method for deploying Django settings to a production environment?
我到处都找过了,我能找到的都是过时的或来自几个不同来源的零碎信息,但是 none 其中有一个完整的步骤,说明如何将 Django 部署到生产环境。
我希望看到的是使用 git、本地和生产 settings.py 部署 Django 的推荐方法。git忽略 Django。
我将如何实施设置以适应这两种环境以及应将哪些内容添加到 .gitignore 文件以便仅将必要的文件发送到 git 存储库?
请注意,我想了解使用本地和生产设置的最佳实践和最新方法。
部署 Django 应用程序时会出现此类问题。
- 应该将设置存储在哪里?
- 如何正确实施设置以适应这两种环境?
- 哪些敏感信息应该与主要设置分开?
2016 年 9 月 25 日更新:
感谢 andreas 澄清这一点,现在我完全同意没有部署 Django 的标准方法。我进行了长时间的研究,找到了最常用的部署 Django 设置的方法。我会把我的发现分享给所有有同样疑问的人。
正在回答
应该将设置存储在哪里?
这些设置最好放在一个设置模块中,而不是放在一个 settings.py
文件中。
如何正确实施设置以适应这两种环境?
这是 设置模块 派上用场的地方,因为您可以简单地拥有与环境无关的设置,并且可以使用 git 或任何其他版本控制进行维护。
哪些敏感信息应该与主要设置分开?
敏感信息,如数据库、电子邮件、密钥和任何与身份验证相关的信息,以及您将如何秘密提供这些私人信息,我建议使用 andreas 建议。
您可以在 /etc/app_settings
创建一个单独的文件并对其进行严格限制,或者直接使用系统内的环境变量。
.git忽略部分
对于 .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 上写了一篇文章来解释每个步骤。
没有一种推荐的部署 Django 应用程序的方法。官方文档提供了一个guide for deploying with Apache and mod_wsgi. Some other options are a PaaS like Heroku/Dokku or deployment with 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 package.
查看此 repo 示例设置。
我到处都找过了,我能找到的都是过时的或来自几个不同来源的零碎信息,但是 none 其中有一个完整的步骤,说明如何将 Django 部署到生产环境。
我希望看到的是使用 git、本地和生产 settings.py 部署 Django 的推荐方法。git忽略 Django。
我将如何实施设置以适应这两种环境以及应将哪些内容添加到 .gitignore 文件以便仅将必要的文件发送到 git 存储库?
请注意,我想了解使用本地和生产设置的最佳实践和最新方法。
部署 Django 应用程序时会出现此类问题。
- 应该将设置存储在哪里?
- 如何正确实施设置以适应这两种环境?
- 哪些敏感信息应该与主要设置分开?
2016 年 9 月 25 日更新:
感谢 andreas 澄清这一点,现在我完全同意没有部署 Django 的标准方法。我进行了长时间的研究,找到了最常用的部署 Django 设置的方法。我会把我的发现分享给所有有同样疑问的人。
正在回答
应该将设置存储在哪里?
这些设置最好放在一个设置模块中,而不是放在一个 settings.py
文件中。
如何正确实施设置以适应这两种环境?
这是 设置模块 派上用场的地方,因为您可以简单地拥有与环境无关的设置,并且可以使用 git 或任何其他版本控制进行维护。
哪些敏感信息应该与主要设置分开?
敏感信息,如数据库、电子邮件、密钥和任何与身份验证相关的信息,以及您将如何秘密提供这些私人信息,我建议使用 andreas 建议。
您可以在 /etc/app_settings
创建一个单独的文件并对其进行严格限制,或者直接使用系统内的环境变量。
.git忽略部分
对于 .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 上写了一篇文章来解释每个步骤。
没有一种推荐的部署 Django 应用程序的方法。官方文档提供了一个guide for deploying with Apache and mod_wsgi. Some other options are a PaaS like Heroku/Dokku or deployment with 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 package.
查看此 repo 示例设置。