首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >保持测试和生产服务器环境的整洁、同步和一致

保持测试和生产服务器环境的整洁、同步和一致
EN

Stack Overflow用户
提问于 2009-03-12 17:33:34
回答 4查看 9.6K关注 0票数 16

我工作的公司似乎总是在为我们客户的服务器环境而苦苦挣扎。

具体地说,我们几乎总是会遇到测试服务器和生产服务器的问题,以及它们似乎总是配置不同的事实。当我们测试我们开发的应用程序时,测试服务器以一种方式运行,因此我们调整和配置我们的应用程序以适应特定的行为。但是,当我们在生产服务器上安装相同的应用程序时,我们观察到另一个与测试服务器不一致的行为,从而使我们的调整和配置变得无用。最令人沮丧的是,这种情况一直都在发生,似乎没有人知道该怎么做。

当然,我们对为什么会发生这种情况有一个大致的了解。每个克隆的环境在开始的前几天都是一样的,工作也是一样的,但迟早会有人在其中一个服务器环境中重新配置某些东西(无论是数据库更新、组件库更新、web文件更新还是其他配置),从而导致差异。随着时间的推移,越来越多的差异建立起来。但问题是:我们能做些什么呢?

我试着在网上搜索,但找不到任何关于如何做的好答案。我也试着自己找出一些解决方案,但我的大多数想法似乎在某种程度上存在问题。新的例程,无论多么严格,都可以绕过。定期克隆生产服务器以创建测试服务器是一个乏味且通常非常缓慢的过程。自动复制并不总是可靠的,甚至是不可能的。那么,我们到底应该如何解决这个问题呢?我们如何保证测试时的体验与上线时的体验相匹配?

我想其他人也有这个问题。或者他们是这样做的?也许只是我的公司不称职?你们中有谁遇到过这个问题吗?如果是这样,你对此做了什么?

由衷地,

Linus,瑞典系统开发人员

EN

回答 4

Stack Overflow用户

发布于 2009-03-12 17:40:35

您需要开始跟踪您对测试环境所做的每个更改,并提供一种将其传播到生产环境的方法。

对于代码,这意味着版本控制系统,如CVS、Subversion或GIT。

对于数据库,它意味着更新生产数据库的结构比较工具或部署脚本。

对于configuration,两个系统应该完全相同,任何“调整”或更改都需要首先应用于测试服务器,然后在部署期间应用于生产服务器。

除非你有一个可以工作的进程,否则你将继续遇到问题。

票数 6
EN

Stack Overflow用户

发布于 2009-03-12 17:37:42

您需要确保以一致的方式完成对环境的任何更改。

我会考虑要么从新的映像开始并强制执行严格的修改日志策略,要么使用Capistrano之类的东西在所有机器上执行远程命令并同时将代码部署到所有机器。

理想情况下,所有需求都应该签入到您的版本控制系统中(类似于Rails如何让您在/vendor目录中存储gem,并优先在运行时加载这些gem),以及一个确切描述如何设置环境的自述文件(所需的库等)。对环境进行更改的任何人都需要严格更新自述文件。

票数 0
EN

Stack Overflow用户

发布于 2009-03-12 17:41:25

你的问题很正常。据我所知,至少有两种策略效果不错:

如果您是在linux上分发,则可以在开发过程中构建rpms/debs并使用包管理功能。我知道很多项目在内部项目中都取得了巨大的成功。

另一种选择是将整个环境打包为某种shell脚本。此shell脚本可以/应该使用所有设置配置完整的环境。通常,这个脚本是由develeopment维护的,并且这个脚本会覆盖任何手动进行的修改。像这样的脚本通常由开发人员维护,在版本控制下保存,并作为完整的发行版发送到部署。我们使用cygwin来做这件事。通常,脚本读取可由操作管理的某种配置。我有一些实际从头开始设置整个系统的脚本,就像安装在一台完全空白的新安装的机器上一样。

这两种策略最好都应该包括从构建脚本/构建系统自动生成这些工件。这一过程运行得越顺利,对所有相关各方都越有利。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/639668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档