【问题标题】:How do you handle patches / updates to PHP and Frameworks您如何处理 PHP 和框架的补丁/更新
【发布时间】:2011-05-16 16:57:23
【问题描述】:

目前在我们公司进行了激烈的讨论。如何处理 PHP 的更新以及使用的 PHP(Zend 框架)/JavaScript 框架,如 JQuery 和 Dojo。

你会修补每个 php 版本吗?您是否将每个框架更新部署到生产服务器?我认为测试所有依赖项需要花费大量时间吗?还是“火与忘”的最佳做法?

很想听听你在这个领域的到期!谢谢。

【问题讨论】:

  • 您的单元和功能测试在哪里?如果您拥有它们,升级和测试应该是一个两步过程(升级和运行测试)。
  • Selenium 和单元测试是你的朋友。

标签: php security zend-framework patch


【解决方案1】:

首先,最好有一个带有多个服务器的负载平衡器来处理请求。这样,如果其中一个发生部署问题,您可以将其从平衡器中拉出并让其他人处理。

关于我是否会更新上述框架或 PHP,问题归结为:

  1. 是否会破坏兼容性? - 这是最重要的因素。即使对于关键的安全更新,您也必须将代码放在临时服务器上并解决所有问题。
  2. 这是一个错误修复吗?错误修复会影响我正在使用的东西吗? - 如果我不使用 SOAP 并且对 SOAP 代码进行了错误修复,我通过了。现在,如果数组的处理方式出现错误,我一定会升级。
  3. 这是一个安全修复吗?它会影响我正在使用的东西吗? - 这里的政策相同,但我会更快地进行升级。

现在就如何处理它,我建议如下:

  1. 从负载平衡器中取出一个节点,确保在出现问题时可以使用先前源的副本。
  2. 更新您需要的任何内容,然后将其带回负载平衡器,但将其限制为只有您可以看到的 IP 地址。
  3. 检查所有内容是否合法。如果出现问题,请将其恢复,看看是否可以解决问题,或者您是否需要恢复以前的来源。
  4. 如果是可以解决的问题,请先解决,然后返回第 2 步。
  5. 接下来,从负载平衡器中关闭另一台服务器并执行相同操作。
  6. 执行此操作,直到旧版本节点和新版本节点之间的比例达到 50/50。
  7. 现在,强制所有用户请求转到新版本 noes,以确保面向公众的站点正常。如果出现问题,请强制旧版本节点重新上线。
  8. 如果一切正常,升级旧版本节点并在完成后将它们带回平衡器。

您需要多少节点取决于您网站的规模。请注意,这是一种更偏执的更新方法。

【讨论】:

  • 感谢您的回复。关于前 3 点的一个问题。如果更新了应用程序未使用的内容,则无需升级。当 10 个版本之后有可用的安全修复程序时,您如何处理它?你必须升级 10 步?
  • @ArneRie 很难说不知道以后的 10 个版本在时间轴上的构成。您似乎在暗示增量更新,但我会改为进行完整更新,因此这将是上述步骤的 1 轮。您可以进行增量,但与仅进行完整升级和修复潜在问题相比所花费的时间通常是不值得的。关于兼容性中断的另一个提示,请遵循 PHP 列表。对于他们来说,在没有大量警告的情况下放弃兼容性中断修复将是一种非常不寻常的情况。
猜你喜欢
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多