在实际生产项目中部署(管理依赖)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 可重用应用程序的最佳实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章

django 项目生产环境部署

使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版——部署配置及相关知识

Go语言学习五——工程管理

django+nginx+uwsgi的生产环境部署(Ubuntu16.04)

Django + Uwsgi + Nginx 的生产环境部署

Django + Uwsgi + Nginx 的生产环境部署