我应该使用git来部署网站吗?

时间:2009-03-14 04:22:47

标签: django git deployment project-management

我有一个在django上运行的网站,(但这个问题适用于任何东西,php等)

目前我正在使用unison部署我的更改,而我(有点习惯)喜欢它,因为在此之前我是手动操作!!

现在,当我用git弄湿我的脚时,我开始喜欢它了!而且我在考虑是否应该使用它而不是统一来部署我的更改!

通过这种方式,如果以某种方式部署这些更改,我将能够还原我的更改,这将带来额外的好处!

问题是:

  • git是否适合部署网站?

  • 我应该注意的任何事情/问题/陷阱?

4 个答案:

答案 0 :(得分:16)

我使用git来跟踪我的网站,我这样部署它:

git archive --format=tar --prefix="homepage/" master | gzip | ssh webserver "tar xvz -C ~/public_html"

这值得一点解释。 git的archive命令将导出master分支的文件,该分支使用gzip压缩以最小化网络流量。它是通过ssh远程接收的,它被解压缩到最终的目标目录中。

我使用的部署脚本还有一些,但这是最重要的部分。

答案 1 :(得分:9)

你可以看看Fabric,在Djangonauts中很受欢迎......

答案 2 :(得分:8)

如果问题是你是否可以使用git来部署你的django应用程序,答案是肯定的!

然而,流行应用程序的生产部署可能变得复杂 - 并且不仅仅是回滚文件。您可能需要运行数据库脚本(升级和降级脚本),重新启动cron作业或移动文件。

作为部署过程的一部分,您可能希望完整备份代码库,以便可以回滚任意数量的版本。

实现此目的的一种方法是使用Capistrano为您自动完成整个部署过程。您在开发环境中编写脚本并发出以下命令:cap deploy,cap deploy_with_migrations,cap rollback等。从登录一直到备份过程和运行DB脚本,一切都是自动化的。通过自动部署,您可以消除生产环境中的错误。我最近采访了一个组织,他在部署过程中意外删除了整个数据库,需要从备份中恢复所有内容。部署错误确实会破坏您的业务,因此如果您认真对待它,您希望自动执行此操作。

尽管Capistrano是一种常用于Rails的基于Ruby的部署工具,但它在自动化功能方面却是不可知的。互联网上有很多帖子讨论了使用Capistrano(google - django capistrano)部署Django应用程序的好处。

您还可以查看check out this link here

答案 3 :(得分:4)

好吧,我使用SVN来部署我的网站,所以我会说去吧!请记住,每次更新网站代码时,您可能必须重新启动/重新加载服务器(我不确定Django或您正在运行它的任何东西是否能够解决这个问题)。