我在生产环境中有一个CentOS服务器。 我需要更新使用REMI存储库安装的PHP包。
很容易:
yum update php
但如果在更新过程中出现问题,会发生什么? 我该如何回滚?
什么是最好的技术,以确保不会因为更新而损害生产服务器?
从源代码编译PHP可能更好,而不是使用二进制包?
编辑:我不怕我的代码和新的PHP版本之间的不兼容(我已经testing了开发)。 我更害怕出现问题,而CentOS更新了二进制文件(断电,丢失连接,意外conflit)
谢谢,
担
二进制包由您的供应商build立,通常有相当数量的testing。 通过从源头上构build,您将失去包装系统的大部分优势,特别是:
从源代码构build肯定有一些优势 – 例如,您可能需要与供应商软件包中提供的configuration不同的configuration。 但是,即使您select在本地编译代码,从上面创build一个包并使用常规打包工具安装它(而不是直接在您的文件系统中运行make install )几乎总是一个更好的主意。
什么是最好的技术,以确保不会因为更新而影响生产服务器?
testing开发环境中的更新,确保它们在将其部署到生产系统之前按预期工作。 确保您的开发环境准确地反映您的生产环境。
无论您select如何安装更新的软件,情况都是如此。
在这种情况下,您可以做的绝对最好的事情就是彻底testing您的软件包集合,作为testing服务器上的一个版本,包括回滚到以前的集合或软件包。 我在一家非常大的互联网公司从事发布pipe理工作,我们正是这样做的。
在进行生产之前,通过彻底安装和回滚,可以消除令人讨厌的意外(确保查看安装日志!)。 你还需要考虑做裸机还原,在那里你安装一个基本的操作系统的主机,然后安装你的发行版。 当你以这种方式同时安装所有软件包时,你会经常发现许多隐藏的惊喜。
尝试在进行生产安装时尝试让主机停止轮换,并在安装完成时执行自动运行状况检查以确定它们是否正常工作。 这样,如果一个主机上发生了灾难性的错误,你可以把它留给我们。 然后在软件推送后回来,擦拭主机,然后重新安装。 显然这种方法依赖于build立冗余服务器。
假设当前版本是作为二进制文件安装的,那么最好使用二进制包。 你有什么testing环境来运行这个新的PHP包的试用吗? 目前安装了哪个版本的PHP? 运行rpm -qi php 。 你想要安装的版本是什么?