目前,我的团队采用的部署方式感到非常困扰……这很老式,我知道它的工作不太好。但是我不确定如何更改它,所以请给出一些建议...

这是我们当前的设置:

  • 2个网络服务器
  • 1个数据库服务器
  • 1个测试服务器

当前部署适应

  1. 我们在测试服务器上开发和工作,每个更改都将手动上传到测试服务器。
  2. 更改或功能完成后,我们将更改提交为SVN存储库。
  3. 进行更改后,我们将更改上传到第一个Web服务器,在该Web服务器中将每分钟运行一个Cronjob,以在服务器之间同步文件。

很烦人的事情是,每当我们上传文件时,就像同步作业启动一样,同步编辑的文件将看起来损坏,因为它只有半个上计划。另一件事是,每当有部署故障时,很难恢复。这些基本上是我面临的问题,我该怎么办?

此外,由于第一个网络服务器上有文件,需要随时随地与其他服务器同步,因此Cronjob出于原因。

P/S:很抱歉,我忘了提到,SVN服务器已托管。我们对它没有太多的控制,但我相信我可以编辑钩子...

有帮助吗?

解决方案

使用类似的部署框架 phing 管理向Web服务器部署并摆脱Cron的工作。基本上,生产系统上的释放不应自动发生,但是只有在确定当前构建不会破坏之后。而且它不应依赖开发系统。

由于PHING使用XML和PHP来配置和控制部署过程,因此您可以版本控制该过程。这是一个额外的好处,因为然后您可以将部署连接到应用程序的特定构建。

为了防止生产网站受部署流程的影响,请考虑将新构建上传到单独的目录中,然后将其符合链接。如果出现任何问题,您可以轻松地与先前的版本相称。

也要考虑 使用CI服务器.

其他提示

我在最后一个地方做了同样的事情。我们的是:

  • 每个网站存储库
  • 每个专门用于实时网站的网站的分支机构(即 /branches/live)和测试网站(即 /branches/testing)
  • 2个可以与SVN交谈的网络服务员
  • 可以与SVN交谈的测试服务器
  • 所有服务器都安装了SVN命令行客户端

每个Web服务器都独立运行,因此他们并不真正了解彼此 - 这留给了负载平衡器。每个服务器都有一个每3小时运行一次的cronjob, 出口 每个网站的最新版本 live 分支到文件系统上的正确文件夹中。

在我们的测试服务器上,这是一个 查看testing 每个网站的分支机构,也没有Cronjob。开发人员只要想将某些内容放出供用户进行测试,就会更新这些文件夹。

在发展过程中,对 trunk 网站。当更改准备进行测试时,它们被合并到测试分支中,然后在测试服务器上手动更新结帐。当更改准备上线时,它们被合并到现场分支,服务器将在一天结束时进行更新。

在三年的时间里,我们只有一个问题,开发人员犯了一些错误的事情,不得不回滚站点。

作为部分修复,在访问它时在网站上创建一个触发rsync命令的网站上的URL,以便您可以控制RSYNC运行时(显然,您需要确保使用此URL击中服务器1,并且不要公开此URL对公众)。更好的是,请使用Curl在您使用的任何上传脚本的末尾调用Rsync URL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top