如何组织服务器进行Web开发?

时间:2009-09-25 21:20:34

标签: organization

我正在为网站开发设置一些服务器。我希望它以一种相当标准的方式组织起来。你如何组织服务器来开发相对较小的网站,每个网站都有一些独特的代码?

我关注的一些细节包括(但不限于):

  1. 在开发过程中存在哪些不同的服务器?他们的目的是什么?

  2. 您的主源代码存储库在哪里?

  3. 开发工作在哪里完成?

  4. 测试在哪里?

3 个答案:

答案 0 :(得分:1)

在开发过程中存在哪些不同的服务器?他们的目的是什么?

  • SCM服务器,例如SVN,Git,CVS - 通常是中央源代码库 仅限内部访问。
  • CI服务器,例如CruiseControl,Hudson - 持续集成 用于自动构建/测试的服务器。
  • FileServer ,例如Samba,共享Windows目录 - 用于存储构建 工件,共享下载之间 开发团队
  • 测试/暂存/生产服务器 - 根据相同规格构建的计算机 用于运行实际的硬件/软件 应用

您的主源资源库在哪里?

通常只有内部访问,可以与其他目的共享此机器,例如CI

开发工作在哪里完成?

在每个开发人员本地计算机上最好,然后通过SCM和CI集成更改。

测试在哪里?

通常在预留用于测试的服务器上。通常情况下,有一组环境和构建在通过测试时通过每个阶段进行推广:

  • 测试机器 - 用于检查构建,通常反映devlopers机器的设置。
  • 临时机 - 用于通过基本测试的构建版本 - 此服务器将更像是实时生产系统的镜像。
  • Pre-live - 一个可选服务器,将在服务器完全上线之前提供给业务用户进行测试。
  • 实时/制作 - 当测试人员和业务部门接受这些服务器时,会将其升级到此服务器。

答案 1 :(得分:1)

在工作中我们偶尔有两个人在同一个网站上工作,所以它是这样的:

  • 每个站点都在源代码管理中(Microsoft Source Safe),我们大多数时间都在自己的计算机上使用和测试本地副本。幸运的是,Visual Studio 2008通过其内置的Web服务器使这一点变得简单。

  • 当我们想要在内部测试多个用户时,我们会部署到我们的内部开发服务器。 (我们将在部署到生产之前始终执行此操作。)

  • 当我们希望一些外部聘请的顾问在投入生产之前审查该网站时,我们可能会部署到我们的生产服务器,但是会有一个特殊的主机标题将其与实际网站分开,例如: staging.yourdomain.com(经常跳过此步骤。)

  • 作为最后一步,我们将部署到数据中心的生产服务器。

多年来,我尝试过各种变化。但这样做只需要2个物理服务器和开发人员的工作站。然而,它的结构足以让我们成为一个可靠的过程。

答案 2 :(得分:1)

  

1)在开发过程中存在哪些不同的服务器?   他们的目的是什么?

根据我的经验,唯一应该重要的概念/想法是所有环境(服务器=>开发,登台,生产)应该是完全相同的,类似于操作系统,Web服务器版本,服务包,补丁,修补程序等。现在,至少有3个(或更多)不同的环境可能有也可能不可行,但这个趋于成为常态我的经验。在硬件方面,只要他们的非常类似或相同,它就不会在未来出现任何问题。

  

2)你的主要来源在哪里?   存储库

与互联网访问隔离,严重保护。许多防火墙规则可以保护它免受不良尝试获取访问权限。只有内部开发人员才能访问存储库。

  

3)开发工作在哪里完成?

在大型项目或组织中,开发往往是在程序员的计算机上本地完成的,或者借助源代码库(SVN,CVS,VSS等)来完成工作的副本在当地完成。

  

4)测试在哪里?

有些人在他们的“开发”环境中进行测试,有些人在“升级”中进行测试,这对我来说更有意义。选择其中一个并坚持下去。就个人而言,我认为如果开发人员正在对开发进行更改,那么暂存是测试以避免版本更改的地方。

  

如何整理服务器   发展比较小   网站,每个都有一点点   唯一代码?

基本上,网上商店将他们的环境组织为:development => dev,staging => stage,production => prod。开发人员在他们自己的机器上本地工作,一旦他们的添加/更改完成,他们就会将更改提交到源存储库。某些商店执行称为CI(持续集成)的操作,因此在开发人员进行每次提交后,CI服务器会自动重建到站点。这有助于开发人员/测试人员查看开发人员更改是否有任何问题。

通常,这些更改将发布到其开发环境,供所有开发人员使用。当开发人员到达某个里程碑/检查点并希望开始测试时,他们会将其网站版本“推广”到临时环境,以便测试人员可以在开发人员继续在开发人员中工作时进行攻击。

一旦每个人都满足于分期中的所有内容,他们就会将分段中的版本提升为prod。更改应以一种方式流动:dev-> stage-> prod。如果要对生产进行更改,请从开始,然后在分段中进行测试,然后进行生产。这是一种痛苦,但它可以使事情保持一致,并防止出现无数令人头痛的问题。令人惊讶的是,有多少公司只是在生产方面做出改变,而在数月/数年之后他们遇到同步环境时遇到问题,只要遵循协议就会给他们带来很大的痛苦。

如果你将你的工作称为“小”,除了一些动态页面和一些数据库调用之外的简单或不复杂,我会说尝试去3个环境,但你可能会“逃脱”2环境(分期和生产)。您可以将自己的计算机变成所谓的开发环境。