gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:06:06 27 4
gpt4 key购买 nike

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

我希望看到的是使用 git、本地和生产环境的 settings.py、专门针对 Django 的 .gitignore 来部署 Django 的推荐方法。

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

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

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

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

2016 年 9 月 25 日更新:

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

正在回答

设置应该存储在哪里?

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

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

这就是设置模块非常方便的地方,因为您只需拥有与环境无关的设置,并且可以使用 git 或任何其他版本控制来维护它们。

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

敏感信息,例如数据库、电子邮件、 key 以及任何与身份验证相关的信息,以及如何 secret 提供这些私有(private)信息,我建议使用 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创建了一篇文章来解释每一步。 .

最佳答案

没有一种推荐的部署 Django 应用程序的方法。官方文档提供了guide用于使用 Apache 和 mod_wsgi 进行部署。其他一些选项是 PaaSHeroku/Dokku或使用 Docker 进行部署

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

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

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

通常建议的做法是将 SECRET_KEY 等 secret 存储在环境变量中。 SECRET_KEY = os.environ.get('SECRET_KEY', None)。或者查看django-environ package .

看看这个 repo示例设置。

关于django - 将 Django 设置部署到生产环境的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39547083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com