我知道很多人对频繁的版本更改并不满意.
特别是当您坚持使用的最新版本的PHP或MysqL在您的存储库中不再可用时(在我的情况下它是REMI)但是您必须安装一个新服务器,其中某些PHP / MysqL软件包的版本稍低一些(从存储库中可用的旧版本/更早版本开始.
大多数时候,我们在Centos 5.8 GNU / Linux x86_64操作系统之上使用最新版本的典型Apache,PHP,MysqL.
但是现在我们的QA团队需要花费大量时间来测试我们所有项目是否与新版本的兼容性如此之快,以至于当时我们从QA团队获得更新PHP和/或MysqL的绿灯和/或安装一个具有特定版本的新服务器,我们发现它已经过时,现在它被更多的新版本取代.
特别是当迈克菲PCI合规部门表示我们的网站使用具有潜在危险的PHP版本并迫使我们使用较新版本的PHP升级所有服务器时,这一点尤为突出.
目前,我们的默认工作环境包括:
OS:
CentOS release 5.8 (Final) Linux censored.example.com
2.6.18-308.4.1.el5 #1 SMP Tue Apr 17 17:08:00 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
阿帕奇:
Server version: Apache/2.2.3 Server built: Feb 23 2012 21:16:56
PHP:
PHP 5.3.13 (cli) (built: May 9 2012 16:20:57) Copyright (c) 1997-2012
The PHP Group Zend Engine v2.3.0,Copyright (c) 1998-2012 Zend
Technologies with eAccelerator v0.9.6.1,Copyright (c) 2004-2010
eAccelerator,by eAccelerator
MysqL的:
MysqL Ver 14.14 Distrib 5.5.23,for Linux (x86_64) using readline 5.1
可能的解决方案:
>本地存储库/旧版镜像
只需为最新安装的软件包创建自定义存储库快照,这样我们就可以设置/安装具有相同软件包的新服务器,即使它们不再受支持,我们也可以继续前进.
优点&缺点:易于安装,使用相同的YUM命令但不会破坏与其他可能更新的系统包的依赖关系是否有隐藏的水石头?
>从源代码编译
忘记YUM和RPM,并通过使用静态编译版本回到GCC编译器和依赖地狱的美好时光.
优点&缺点:不再依赖于存储库版本的更改(或者我仍然以某种间接方式?)但是必须手动获取所有源代码并对这些内容进行某种管理.
>构建和使用自定义图像
只需构建和配置一个合适的服务器,获取其快照(作为虚拟机或其物理HD iso映像),而不是仅在新物理服务器上扩展其映像或将虚拟机导入可视化主机.
优点&缺点:当然不再有版本更改和依赖性令人头疼,但它是如何可靠的?是的,如果我们谈论的是虚拟机,这是一个平静的事情,但是有一段时间我们必须在物理机器上部署项目,我们只有SSH访问.
>如果只是次要版本更改,则接受更新
不要担心错误修复和版本更改,因为修复了严重的安全问题,导致次要数量增加.请尽快更新.
优点&缺点:当然,迈克菲PCI合规部门会很高兴,我们的客户也会这样做,但这不是很危险吗?如果它是我们没有覆盖的默认PHP配置值的微小变化怎么办?这不可能是一场彻底的灾难吗?
亲爱的专家有什么建议吗?
解决方法
您面临的主要问题是您需要运行较新版本的PHP / MysqL,但是当您的QA团队在新系统上测试软件时,该版本已过时.
这不是你团队的失败;这是QA团队失败的原因.
您的QA团队应该有自动化测试用例.您的开发人员应该提供测试模块.例如.:
>开发人员构建按比例分配的发票系统
>开发人员提供了一个用于评级的测试界面(即接受测试系统所需的所有细节,但实际上并不生成发票.或者可能是这样,但在临时系统中).
> QA团队设计了一系列针对例行程序的测试.什么是输入,什么是正确的结果?例如.每月50美元的评级为半个月== 25美元.
最后一步应该是完全自动化的.它应该花费几分钟或几小时(取决于软件的复杂性或有多少测试)来确定任何错误.例如.
> PHP将其浮点数学从正常舍入更改为cieling(总是向上舍入)
>支持评级的测试案例,每月5美元,为期半个月
>正确答案:2.50美元,但测试用例返回3美元.自动失败.
现在,我知道这些都没有真正回答你的问题,所以如果你的QA团队无法修复,那么我们的其他选择是什么:
对此没有一个正确的答案.就个人而言,我们对软件的处理是您的最后一个选择 – 我们接受所有更新和服务包到我们的运行时环境,但是如果没有彻底和完整的QA分析,我们不会更改版本.虽然,我们在运行时使用的软件(MSsql和另一个后端,而不是PHP)仅每18个月到2年发布一个新版本,其中包含更新和服务包,因此主要部署之间有足够的时间.
在对我们的登台系统进行质量检查测试后,我们首先将更新部署到dogfood systems.如果我们没有发现任何重大问题,我们会将运行时更新推送到托管系统.如果我们仍然没有任何重大问题,我们会向我们的自托管客户发布通知,他们可以根据需要安装更新.
我个人每次获得预先打包的虚拟机时都会感到畏缩.即使它完全是最新的(它们从未如你所指出的那样),但我需要将其集成到我们的网络中.有时它们会附带可怕的过时操作系统或运行时.