我有一个运行在Django上的网站,(但这个问题适用于任何东西,PHP等)
目前我正在使用 unison 来部署我的更改,我(有点习惯于)喜欢它,因为在这之前我是手动执行的!
现在,由于我正在学习git,我开始喜欢它了!而且我在思考,也许我应该使用它来部署我的更改,而不是使用unison!
这样我就有额外的好处,如果部署它们后出现灾难,我就可以回滚我的更改!
问题是:
git适用于部署网站吗?
有任何事情/问题/需要注意的地方吗?
我有一个运行在Django上的网站,(但这个问题适用于任何东西,PHP等)
目前我正在使用 unison 来部署我的更改,我(有点习惯于)喜欢它,因为在这之前我是手动执行的!
现在,由于我正在学习git,我开始喜欢它了!而且我在思考,也许我应该使用它来部署我的更改,而不是使用unison!
这样我就有额外的好处,如果部署它们后出现灾难,我就可以回滚我的更改!
问题是:
git适用于部署网站吗?
有任何事情/问题/需要注意的地方吗?
我用Git来追踪我的网站,并将其部署如下:
git archive --format=tar --prefix="homepage/" master | gzip | ssh webserver "tar xvz -C ~/public_html"
这需要一些解释。Git的档案命令将导出主分支的文件,压缩为gzip以最小化网络流量。它通过SSH远程接收,解压缩到最终目标目录中。
我使用的部署脚本有一些其他的功能,但这是最重要的部分。
你可以查看在Djangonauts中很受欢迎的Fabric。
如果问题是你能否使用git部署你的Django应用程序,答案是肯定的!
然而,一个受欢迎应用的生产部署可以变得非常复杂 - 并且远远不止于简单地回滚文件。您可能需要运行数据库脚本(包括升级和降级脚本)、重新启动定时任务或移动文件。
作为您的部署过程的一部分,您可能希望完整备份您的代码库,以便您可以回滚任意数量的版本。
一种方法是使用Capistrano自动化整个部署过程。您可以在开发环境中编写脚本并发出命令,如:cap deploy,cap deploy_with_migrations,cap rollback,等等。从登录到备份流程和运行DB脚本都自动化了。通过自动化部署,您可以消除生产环境中的错误。我最近与一个组织交谈,他们在部署过程中不小心删除了整个数据库,需要从备份中恢复一切。部署错误可能会真正破坏您的业务,因此如果您认真对待它,就要自动化此过程。
尽管Capistrano是一个基于Ruby的部署工具,通常与Rails一起使用,但它在自动化能力方面是不可知的。网络上有很多帖子讨论使用Capistrano部署Django应用程序的好处(谷歌- django capistrano)。
你也可以查看这个链接:点击这里。
好的,我使用SVN来部署我的网站,所以我建议你试试!要记住的是,每次更新网站的代码时,你可能需要重新启动或重新加载服务器(我不确定Django或者你使用的其他内容管理系统是否能够解决这个问题)。