在实际生产项目中部署(管理依赖)django 可重用应用程序的最佳实践是啥?
Posted
技术标签:
【中文标题】在实际生产项目中部署(管理依赖)django 可重用应用程序的最佳实践是啥?【英文标题】:What's the best practice to deploy (manage dependency) the django reusable apps in a real production project?在实际生产项目中部署(管理依赖)django 可重用应用程序的最佳实践是什么? 【发布时间】:2011-11-27 13:18:17 【问题描述】:在我们的项目中,我们正在使用一些 django 可重用的应用程序,我们正在考虑如何使持续和自动部署变得简单而轻松。
我们有两个选择:
选项#1:使用“pip install xxx”安装所有依赖项可重用应用程序。编写脚本来安装和检查依赖项。
选项#2:在我们自己的目录下复制所有使用过的可重用应用程序,因此我们基本上会将所有内容部署在我们的项目目录中。
这两种选择各有利弊,我想知道您是否可以分享您这样做的最佳实践?
【问题讨论】:
推荐:blip.tv/djangocon/taming-dependencies-with-pip-5582996 【参考方案1】:您可以很容易地使用pip
创建一个依赖文件,这意味着每个应用程序的正确版本将在服务器之间维护
# Save dependancies to a file
pip freeze > requirement_file.txt
创建一个类似的文件:
django==1.3
django-tagging
markdown
...
以后可用于在不同的服务器上重新安装列出的应用程序
# Install all dependencies in the file
pip install -r requirement_file.txt
这是一个不错且简单的方法。你可以使用 zc.buildout 之类的东西变得更复杂
http://pypi.python.org/pypi/zc.buildout
这有助于通过脚本管理包(python 和非 python)(您可以创建包含需要安装的包的详细信息的“食谱”)
如果您需要更广泛地控制服务器安装,您可以使用“puppet”或“chef”
http://projects.puppetlabs.com/projects/1/wiki/Big_Picture http://wiki.opscode.com/display/chef/Chef+Server
旨在自动化和部署不仅仅是依赖项,而是整个服务器
我不需要使用比简单的 pip 要求文件更多的东西,但如果您需要更多,其他选项也很棒。
编辑
在项目根/python 路径中保留您自己的应用版本可能会变得繁琐且难以跟踪,我建议使用 pip 需求文件。
【讨论】:
【参考方案2】:我在 django 的网站上找到了一个:
https://code.djangoproject.com/wiki/best-practices-to-work-with-3rd-party-apps-and-making-yours-portable
看起来他是在建议我作为选项 #2 列出的内容。
【讨论】:
我喜欢将它们保存在本地目录中,这样我就可以根据需要轻松修改它们,并且在移动时一切都在一个地方。以上是关于在实际生产项目中部署(管理依赖)django 可重用应用程序的最佳实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版——部署配置及相关知识
django+nginx+uwsgi的生产环境部署(Ubuntu16.04)