【问题标题】:How to effectively patch code running on multiple hosts?如何有效地修补在多台主机上运行的代码?
【发布时间】:2012-08-06 17:41:22
【问题描述】:

产品是不断开发的 CMS,并且总是会推出新功能补丁。该产品托管在多台服务器上,其中一些我只有 FTP 凭据和对 db 的访问权限,而另一些我有完全的 root 访问权限。现在,一旦新功能在测试后发布,我就必须手动 ftp 文件并在所有服务器上运行 SQL 查询。这是非常耗时、容易出错且效率低下的。我怎样才能使它更健壮、更简单或自动化它的一部分? CMS 基于 PHP、MySQL、JS、HTML 和 CSS。管理部分对所有人来说都是通用的。皮肤和一些自定义模块是为不同的客户开发的,我们唯一更新的部分是管理。

更新

为了管理我们使用 GIT 的代码,SQL 不是此 GIT 结构的一部分,我将与产品经理/所有者交谈以使其处于版本控制之下。

【问题讨论】:

标签: php codeigniter deployment release-management


【解决方案1】:

这是未打包代码的大问题之一。

就我个人而言,我有一个 PHAR,它在执行时会将代码提取到特定文件夹并执行所需的查询。

【讨论】:

  • 我会更喜欢系统的本机包。对于我工作的其中一个产品,我们曾经推出 RPM 包。每周五发布次要版本。只需安装软件包,它就会更新所有内容。但在当前情况下,有些主机是机架空间云站点,有些不属于我们,有些是简单的共享托管解决方案。
  • 现在是 2012 年。我看不出将 SFTP 作为要求的问题是什么。我敢打赌,您当前通过 FTP 登录的每个主机都更愿意使用 SFTP。
【解决方案2】:

我已经在数十台服务器上运行 Web 部署,每月处理数亿访问者。

SQL 变更管理永远是一头野兽。您唯一的希望是在内部滚动自己(我所做的)或使用EMS DB Comparer之类的东西。

要处理文件同步,您将需要许多工具,所有工具都经过专业设计,可以协同工作,包括:

  1. 源代码版本控制(bzr、svn等),即正确分支(需要stable分支、dev分支、testing分支),
  2. 持续集成服务器,
  3. 每台服务器都支持 SFTP,
  4. 希望通过单元和集成测试来确定构建质量,
  5. Rsync 在每台服务器上,
  6. 构建脚本(我在 Phing 中执行这些操作),
  7. 部署脚本(也在 Phing 中),
  8. 知道如何。

一般过程大约需要 20 小时进行彻底研究,大约需要 40 小时进行设置。当我起草文档时,涉及到 40 多个不同的步骤。创建 SQL 更改管理实用程序又花了 20-30 个小时。再加上另外 10 小时的测试,您将看到一个 100-120 小时的项目,但这样的项目可以为您在未来的拙劣部署中节省大量时间,并将部署时间减少到单击按钮所需的时间。

这就是为什么我会就设置整个过程进行咨询,在客户的网络上设置通常需要大约 5 个小时。

【讨论】:

  • 从商业角度来看,这一切看起来都非常昂贵。我们没有为每个服务器提供 SFTP,如果有的话,我会编写一个脚本来将代码推送到所有服务器,运行部署后步骤等。
  • @Kumar 实际上,除了 SQL 更改管理应用程序(您可以在内部制作)之外,该列表中的每一件事都是开源和免费的。这些工具不花钱,重要的是知识、失误和让一切都恰到好处。
  • 设置它的不是应用程序,而是工时。该产品来自一家非常小的企业,并且是非常本地化的产品。我实际上正在研究 WordPress 更新是如何工作的。不管目前的产品是什么,我都会探索你提到的任何东西,只是为了科学:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
相关资源
最近更新 更多