其他提到Hudson或Weploy的答案都很好.它们涵盖的问题多于以下问题.也就是说,以下可能就足够了.
如果你觉得这有点矫枉过正,那么这就是穷人用SVN和一点创意系统管理的方式.
使您的自豪文档根目录为符号链接,而不是实际目录.意思是你有这样的事情:
/var/www/myproject-1-0-0
/var/www/myproject-1-1-0
/var/www/myproject-1-1-1
/var/www/html -> myproject-1-1-1
这意味着您可以将代码签出到生产中(例如,myproject-1-1-2),而不会覆盖正在提供的内容.然后,您可以通过以下操作立即切换代码库:
$rm html && ln -s myproject-1-1-2 html
我进一步建议不要在生产箱上对你的主干进行svn checkout / svn导出.相反,提前创建一个分支(将其命名为myproject-X-Y-Z).这样,如果您需要对生产代码进行一些非常紧张的调整,您可以将其提交回分支,并在火灾消失后将其合并回主干)
我做了很多,而且效果很好.但是,它有一些主要的缺点:
主要是,您必须自己处理数据库迁移或其他升级脚本.如果您有脚本(普通旧SQL或更复杂的东西),您需要考虑如何最好地执行它们.希望停机只需一分钟也许不是一个坏主意.您可以在(/ var / www / mainenance)周围保留一个“维护站点”,如果需要,可以将符号链接指向那里一会儿.
例如,这种方法并不像Weploy那样酷,但是对于相对较小的项目(在单个服务器上运行,具有非庞大的数据库),它通常足够好,并且简单易行.