如何更新实时网络服务器?

Modified on: Sun, 29 Sep 2019 21:00:02 +0800

我正在设置网络服务器,我想知道更新网站所包含的最佳实践方法是什么。我知道我应该有一些并行运行的'test'服务器,以便在它们上线之前首先尝试进行更改。那么测试服务器应该如何模仿生产箱,是否有任何已知的方法可以在测试后轻松地将相同的更改部署到生产箱中?

我真的希望有一种万无一失的测试方法,并将更改应用到生产网站上,对此有任何建议都非常感谢。

平台:强>
在linux ubuntu服务器上工作。运行mediawiki,wordpress和邮件服务器。我通过ssh有权访问该框。 Mediawiki和Wordpress都有PHP和MySQL后端。邮件服务器也使用MySQL数据库。

作者:,radman

最佳答案

我们使用一系列虚拟机,每个实时客户端服务器至少有一个虚拟机,与实时计算机保持同步(除了一些数据被激活,因此我们不处理个人识别或其他敏感信息)。

由于转到生产计算机而发生的任何一系列更改都放在一个补丁中,该补丁包含所需的任何文件/脚本和脚本(通常用于类Unix环境的shell脚本,批处理文件)或Windows下的vbs脚本或powershell脚本)适当地应用这些文件/脚本。然后,如果VM的副本过时(记得重新运行相关的SQL脚本以擦除或随机化敏感数据),我们将从相关VM获取,从生产副本更新其数据库并获取它处于此状态的快照(虚拟机和大多数vmware产品支持快照,包括免费的“vmware服务器”,也可能是大多数其他虚拟化解决方案)。然后,我们通过运行主控制脚本将修补程序应用于生产服务器。如果应用更改时出现错误,则VM将回滚到快照(最多需要几十秒),以便可以更新补丁并再次尝试。这将根据需要重复,直到补丁干净利落。一旦完成,一些测试人员会被要求全力以赴,以确保新的东西工作,而其他旧的东西没有被破坏(你花多长时间取决于变化的范围和严重程度以及你的水平偏执狂)。如果发现问题,则重复回滚,编辑和重新应用循环,直到看起来都很好。一旦一切看起来都很好,假设时间允许,最后一次回滚 - 补丁 - 测试循环就会运行。完成所有这些后,您希望通过运行具有适当参数的单个脚本(即相关密码,因为测试VM上的身份验证凭据应与生产计算机上的身份验证凭据不同),可以将补丁应用于生产环境,并且您可以非常有信心,它会干净利落,并且没有(或尽可能少)不受欢迎的效果。

在对生产系统应用任何重要事项之前,始终采取新的备份,无论您花多少时间测试更新,以防万一,并始终计划至少一点停机时间,在此期间您可以保留另一个用户出来并为最终更新的系统提供进一步的偏执测试(如果出现严重问题,请将其回滚到最新备份 - 如果您的生产环境是虚拟化的,那么快照工具在这里也很有用)。

作为一般流程,这可以适用于任何环境。


相关问答

添加新评论