在真实的生产项目中部署(管理依赖)django可重用应用程序的最佳实践是什么?

时间:2011-09-29 09:26:41

标签: django deployment reusability

在我们的项目中,我们正在使用一些django可重用的应用程序,我们正在考虑如何使连续和自动部署变得轻松和轻松。

我们有两个选择:

选项#1:使用“pip install xxx”安装所有依赖项可重用应用程序。编写脚本来安装和检查依赖项。

选项#2:在我们自己的目录下复制所有使用过的可重用应用程序,因此我们基本上将在项目目录中部署所有内容。

两种选择都有其优点和缺点,我想知道你是否可以分享你这样做的最佳做法?

2 个答案:

答案 0 :(得分:13)

您可以非常轻松地创建具有pip的依赖项文件,这意味着将在服务器之间维护每个应用程序的正确版本

# Save dependancies to a file
pip freeze > requirement_file.txt

创建一个类似的文件:

django==1.3
django-tagging
markdown
...

以后可以用来在不同的服务器上重新安装列出的应用程序

# Install all dependancies 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需求文件。

答案 1 :(得分:0)

我在django的网站上找到了一个:

https://code.djangoproject.com/wiki/best-practices-to-work-with-3rd-party-apps-and-making-yours-portable

看起来他正在建议我列出的选项#2。