使用git进行Django部署,包括与生产相关的文件

时间:2010-06-24 18:58:46

标签: django git deployment

我想像以前一样使用git来部署django项目,但是这次还需要在存储库中的某个地方生成文件(比如上传文件,sql db等),这样你就可以了可以使用与服务器上相同的数据轻松在本地工作;我的想法是有三个分支:

  • master(“正常”开发完成/提交)
  • 生产(另外还有生产文件(文件上传等)......
  • 部署(使用用于在服务器上运行的设置等进行生产)

我的问题是:如何将master中完成的更改合并到生产分支中,而不更改/销毁任何生产数据?

有没有办法有选择地合并(例如不触摸媒体/上传文件),或做某种“分支选择性跟踪”或任何其他可能来处理这个问题?

另一方面,我还需要能够从服务器轻松提取来自生产使用的完整数据,以进行一些调试,例如......(我现在正在考虑更改数据库方案的更改)它们可以手动完成或以单独的方式完成)

1 个答案:

答案 0 :(得分:1)

我对你的服务器名称感到有点困惑,我更习惯于:制作,舞台演出,开发。

您应该将数据库转储为sql代码,或以任何方式将数据输出,然后将其传输到主(开发?)服务器。您可以通过将其上传到生产中的git存储库并将其拉到开发上来实现。 Fabric会让这很容易。

但是将数据放在git存储库中可能不是一个好主意,我没有尝试合并数据库转储,所以我不太确定。你在谈论多少数据? git很快,但合并和提交大型数据库转储可能是一个痛苦的过程。

我们的本地计算机(可能会被擦除)往往会有小型测试数据库,并且在生产服务器旁边运行一个临时服务器,并使用单独的数据库。

当底层django模型发生变化时,我们在登台和生产服务器上使用South来迁移到新数据库。

上传的文件你可能应该使用Fabric进行tar,然后下载到你的机器进行分析,但是很多工作可以在登台服务器上完成,而不必将所有内容都传输到你的本地机器。

如果您仍想将静态内容添加到git存储库,只需在子目录中添加静态文件即可。然后你可以设置你的文件服务器直接从该子目录服务,或者如果感觉太不安全,git拉到其他位置,然后将文件复制到/ var / www-static / with Fabric。