rad*_*man 6 website web-server update
我正在设置一个网络服务器,我想知道更新它所包含的网站的最佳实践方法是什么。我知道我应该并行运行某种“测试”服务器,以便可以在更改上线之前先对其进行尝试。那么测试服务器应该多接近地模仿生产设备,是否有任何已知的方法可以在经过测试后轻松地将相同的更改部署到生产设备?
我真的很想有一个万无一失的方法来测试和应用更改到生产网站,非常感谢任何与此相关的建议。
平台:
在 linux ubuntu 服务器上工作。运行 mediawiki、wordpress 和邮件服务器。我可以通过 ssh 访问该框。Mediawiki 和 Wordpress 都有 PHP 和 MySQL 后端。邮件服务器也使用 MySQL 数据库。
我们使用一系列虚拟机,每个实时客户端服务器至少使用一个,这些虚拟机与实时机器保持同步(除了一些数据被篡改,因此我们不会处理个人身份或其他敏感信息)。
由于要进入生产机器的任何系列更改都放在一个补丁中,该补丁由所需的任何文件/脚本和脚本(通常用于类 Unix 环境的 shell 脚本、批处理文件或 vbs 脚本组成)或 Windows 下的 powershell 脚本)适当地应用这些文件/脚本。然后,我们获取相关的 VM,如果 VM 的副本过时,则从生产副本更新其数据库(记住重新运行相关的 SQL 脚本以擦除或随机化敏感数据),然后执行在这种状态下的快照(virtualbox 和大多数 vmware 产品,包括免费的“vmware 服务器”,以及大多数其他虚拟化解决方案都支持快照)。然后我们通过运行主控制脚本将补丁应用到生产服务器。如果应用更改时出现错误,VM 将回滚到快照(最多需要几十秒),以便更新补丁并再次尝试。这根据需要重复,直到补丁干净地应用。一旦完成,一些测试人员会被要求试一试,以确保新的东西正常工作,而其他旧的东西没有被破坏(你花在这上面的时间取决于变化的范围和严重程度以及你的水平妄想症)。如果发现问题,将重复回滚、编辑和重新应用循环,直到一切正常。一旦一切看起来都很好,假设时间允许,最后一个回滚-补丁-测试周期将运行以防万一。完成所有这些后,您希望有一个补丁可以通过运行具有适当参数的单个脚本(即
在对生产系统应用任何重要内容之前,始终进行新备份,无论您花了多少时间测试更新,以防万一,并始终计划至少一点停机时间,在此期间您可以将其他用户拒之门外对生成的更新系统进行进一步的偏执测试(如果出现严重错误,将它们回滚到最新的备份 - 如果您的生产环境是虚拟化的,那么快照工具在这里也很有用)。
作为一般过程,这可以在任何环境中工作。
归档时间: |
|
查看次数: |
5168 次 |
最近记录: |