我目前对我的团队正在采用的部署方式感到非常困扰......这是非常老式的,我知道它不能很好地工作。但我不知道如何改变它,所以请提出一些建议......
以下是我们目前的设置:
当前的部署调整
非常恼人的是,无论何时我们在同步作业启动时上传文件,同步的文件都会显示已损坏,因为它只有一半上传。另一件事是,每当出现部署故障时,恢复将非常困难。这些基本上是我面临的问题,我该怎么办?
此外,由于第一个网络服务器上的文件需要随时与其他服务器同步,因此cronjob就是出于此原因。
P / S:对不起,我忘了提到,SVN服务器是托管的。我们对它没有太多的控制权,但我相信我可以编辑钩子......答案 0 :(得分:7)
使用Phing之类的部署框架来管理对Web服务器的部署并摆脱cron作业。基本上,生产系统上的发布不应该自动发生,而是在您确定当前构建未被破坏之后。它不应该依赖开发系统。
由于Phing使用XML和PHP来配置和控制部署过程,因此您可以对该过程进行版本控制。这是一个额外的好处,因为您可以将部署连接到应用程序的特定版本。
要防止生产网站受到部署过程的影响,请考虑将新版本上载到单独的目录中,然后对其进行符号链接。如果出现任何问题,您可以轻松地符号链接到以前的版本。
另请考虑using a CI server。
答案 1 :(得分:1)
我在最后一个地方做了同样的事情。我们拥有的是:
/branches/live
)和测试网站(即/branches/testing
)的网站的分支机构每个网络服务器都是独立运行的,因此他们并不真正了解彼此 - 这是留给负载均衡器的。每个服务器都有一个cronjob,每3小时运行一次,并导出每个网站的live
分支的最新版本到文件系统上的正确文件夹中。
在我们的测试服务器上,每个网站的testing
分支都是结帐,而且没有cronjob。开发人员在文件夹上线之前,只要他们想要为用户进行测试就更新了文件夹。
在开发期间,对网站的trunk
进行了提交。当更改准备好进行测试时,它们将合并到测试分支中,并在测试服务器上手动更新结帐。当更改准备好上线时,它们将合并到实时分支,服务器将在当天结束时更新。
在3年内,我们只遇到一个问题,即开发人员犯了错误的内容并且不得不回滚网站。
答案 2 :(得分:0)
作为部分修复,在您访问时触发rsync命令的网站上创建一个URL,以便您可以控制rsync运行的时间(显然,您需要确保使用此URL命中服务器1而不是将此URL公开给公众)。更好的是,使用curl在您使用的任何上传脚本的末尾调用rsync URL。