代码之家  ›  专栏  ›  技术社区  ›  Bernhard Vallant

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

  •  5
  • Bernhard Vallant  · 技术社区  · 14 年前

    我想像以前一样使用Git来部署Django项目,但这一次还需要将生产文件(如上载的文件、SQL DB等)放在存储库中的某个位置,这样您就可以轻松地在本地使用与服务器上相同的数据;我的想法是拥有三个分支:

    • Master(在其上完成/提交“正常”开发)
    • 生产(另外还有生产文件(文件上载等…)
    • 部署(具有用于在服务器上运行的设置等的生产)

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

    有没有一种方法可以有选择地进行合并(例如不接触媒体/上载中的文件),或者进行某种“分支选择性跟踪”或其他任何处理方法?

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   rdrey    14 年前

    我对您的服务器名称有点困惑,我更习惯于:生产、分段、开发。

    您可能应该将数据库作为SQL代码转储,或者以任何方式输出数据,然后将其传输到主控系统(开发?)服务器。您可以通过将其上传到生产中的Git存储库并在开发中进行拉拽来做到这一点。 Fabric 会很容易的。

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

    我们通常在本地机器上有小的测试数据库(可以擦除),并且在生产服务器旁边运行一个临时服务器,使用单独的DBS。

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

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

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