我正在为网站开发设置一些服务器。我希望它以一种相当标准的方式组织起来。你如何组织你的服务器来开发相对较小的网站,每个网站都有一点独特的代码?
我关心的一些细节包括(但不限于):
在开发过程中存在哪些不同的服务器?他们的目的是什么?
您的主源存储库在哪里?
开发工作在哪里完成?
测试在哪里进行?
我正在为网站开发设置一些服务器。我希望它以一种相当标准的方式组织起来。你如何组织你的服务器来开发相对较小的网站,每个网站都有一点独特的代码?
我关心的一些细节包括(但不限于):
在开发过程中存在哪些不同的服务器?他们的目的是什么?
您的主源存储库在哪里?
开发工作在哪里完成?
测试在哪里进行?
在开发过程中存在哪些不同的服务器?他们的目的是什么?
您的主源存储库在哪里?
通常仅限内部访问,可以与其他用途(例如 CI)共享这台机器。
开发工作在哪里完成?
在每个开发人员本地机器上最好,然后通过 SCM 和 CI 集成更改。
测试在哪里进行?
通常在为测试预留的服务器上。通常有一组环境,并且在每个阶段通过测试时都会提升构建:
在工作中,我们偶尔会有两个人在同一个网站上工作,所以它是这样的:
每个站点都处于源代码控制(Microsoft Source Safe)中,我们大部分时间都在我们自己的计算机上使用和测试本地副本。幸运的是,Visual Studio 2008 使用其内置的 Web 服务器使这变得简单。
当我们想与多个用户进行内部测试时,我们会部署到我们的内部开发服务器。(我们将始终在部署到生产之前执行此操作。)
当我们希望一些外部聘请的顾问在投入生产之前审查该站点时,我们可能会部署到我们的生产服务器,但使用一个特殊的主机标头将其与实时站点分开,例如 staging.yourdomain.com(这一步通常被跳过)。
作为最后一步,我们将部署到数据中心的生产服务器。
多年来,我尝试过这种变化。但这样做只需要 2 台物理服务器和开发人员的工作站。然而,它的结构足够好,对我们来说是一个可靠的过程。
1) 在开发过程中存在哪些不同的服务器?他们的目的是什么?
以我的经验,唯一重要的概念/想法是所有环境(服务器 => 开发、登台、生产)如果不完全相同,在操作系统、Web 服务器版本、服务包、补丁、修补程序方面应该相似等等。现在,拥有至少 3 个(或更多)不同的环境可能可行,也可能不可行,但根据我的经验,这往往是常态。在硬件方面,只要它们非常相似或相同,就不会造成任何问题。
2)您的主源存储库在哪里?
与互联网访问隔离并受到严密保护。许多防火墙规则可以保护它免受不受欢迎的访问尝试。只有内部开发人员才能访问存储库。
3) 开发工作在哪里完成?
在较大的项目或组织中,开发往往在程序员的计算机上本地完成,或者在源存储库(SVN、CVS、VSS 等)的帮助下,工作的副本在本地完成。
4) 测试在哪里进行?
有些人在他们的“开发”环境中进行测试,其他人在“暂存”环境中进行测试,这对我来说更有意义。选择两者中的一个并坚持下去。就个人而言,我认为 staging 是测试的地方,如果开发人员正在对开发进行更改,可以避免版本更改。
你如何组织你的服务器来开发相对较小的网站,每个网站都有一点独特的代码?
基本上,网上商店将他们的环境组织为:开发=>开发,登台=>阶段,生产=>产品。开发人员在自己的机器上本地工作,一旦完成添加/更改,他们就会将更改提交到源存储库。某些商店会执行称为 CI(持续集成)的操作,因此在开发人员每次提交后,CI 服务器会自动重建到站点。这有助于开发人员/测试人员查看开发人员更改是否有任何问题。
通常,这些更改会发布到他们的开发环境中,供所有开发人员使用。当开发人员达到某个里程碑/检查点并想要开始测试时,他们会将其站点的版本“提升”到暂存环境,以便测试人员在开发人员可以继续在开发中工作时进行锤击。
一旦每个人都对 staging 中的所有内容感到满意,他们就会将 staging 中的版本推广到 prod。更改只能以一种方式进行:dev->stage->prod。如果您想对生产进行更改,请从 dev 开始,然后在 staging 中进行测试,然后再升级到生产。这是一种痛苦,但它使事情保持一致并防止出现许多头痛。您会惊讶于有多少公司只是在生产中进行更改,几个月/几年后他们在同步环境时遇到了问题,而仅仅遵循协议就会为他们节省很多痛苦。
如果您将您的工作称为“小”,因为除了一些动态页面和一些数据库调用之外的简单或不复杂,我会说尝试使用 3 个环境,但您可能会“摆脱”2 个环境(暂存和生产)。你可以把自己的电脑做成所谓的开发环境。