我到处寻找,我所能找到的都是过时的或来自几个不同来源的点点滴滴,但他们都没有完全了解如何将Django部署到生产环境。
我希望看到的是使用git,local和production settings.py,.gitignore专门为Django部署Django的推荐方法。
我如何实现设置以适应这两种环境以及应该添加到.gitignore文件中的内容,以便只将必要的文件发送到git存储库?
请注意,我想了解使用本地和制作设置的最佳做法和最新方法。
部署Django应用程序时会出现这样的问题。
感谢andreas澄清这一点,现在我完全同意没有标准的部署Django的方法。我进行了长时间的研究,发现了最常用的方法来部署Django设置。我将与每个有同样疑问的人分享我的发现。
应答
设置更好地适应设置模块,而不是单个settings.py
文件。
这是设置模块非常方便的地方,因为您可以简单地使用与环境无关的设置,并且可以使用git或任何其他版本控制进行维护。
敏感信息,如数据库,电子邮件,密钥以及任何与身份验证相关的信息,以及您将如何秘密提供此私人信息,我建议您使用andreas建议。
您可以在/etc/app_settings
创建一个单独的文件,并使其非常受限制,或者只是在系统中使用环境变量。
对于.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的每一步。
答案 0 :(得分:4)
没有一种推荐的部署Django应用程序的方法。官方文档提供guide用于部署Apache和mod_wsgi。其他一些选项是PaaS,例如Heroku / Dokku或部署Docker
将您的设置划分到不同的文件中很常见。例如,您可以将设置分为四个不同的文件:
from .base import *
您可以使用环境变量DJANGO_SETTINGS_MODULE
通常建议您在环境变量中存储SECRET_KEY等机密信息。 SECRET_KEY = os.environ.get('SECRET_KEY', None)
。或者查看django-environ package。
查看此repo以获取示例设置。