如何使用GIT管理生产网站和设置?

时间:2011-08-17 03:15:00

标签: django git

我正在处理一个django项目,即使在我写这篇文章的时候,我们也在推动这个项目。生产服务器是一个linode,作为设置的一部分,我们有SSL和证书以及与开发和QA的一些差异。

在我的settings.py中,我有以下代码:

import socket
hostname = socket.gethostname().lower().replace('-', '_').split('.')[0]

try:
    exec("from %s_local_settings import *" % hostname)
except ImportError:
    pass

加载该特定linode框的本地设置。但是在同一个linode上,我们将有另一个项目实例(我们为客户托管的实例)。这第一个例子就像广告/演示/培训。所以,我漂亮的小节点名称hack无法正常工作....

您如何在生产环境中处理此类问题?我们很快就会有镜像数据库的备份linode,因此复杂性不断增加,我不确定如何轻松跟踪和维护所有更改。

我正在使用git,我创建了一个名为production-www的分支,我猜测我们继续前进,我将从master合并到production-www分支,并且特定于此安装的文件赢了不会被覆盖(除了我现在没有解决方案的节点名文件)。

有人比这更容易或更聪明吗?

2 个答案:

答案 0 :(得分:2)

将示例settings.py文件提交到存储库(例如:settings.py.example),然后使用每个部署的真实主机名进行复制和编辑 - 尝试检测诸如主机名,路径名等之类的内容可能会变得混乱快速imho。

新部署不会破坏它,因为它不在存储库中,但您可能会告诉git忽略“settings.py”本身,因此您不会意外提交开发设置文件。

答案 1 :(得分:0)

我修改了Silk Deployment这是一个基于Fabric的Python工具包,它使用Git来同步部署中的配置。它适用于Django,非常非常酷。非常值得一看!