您如何组织服务器进行 Web 开发?
我正在设置一些用于网站开发的服务器。我希望它以相当标准的方式组织。您如何组织服务器来开发相对较小的网站,每个网站都有一点独特的代码?
我关心的一些细节包括(但不限于):
在开发过程中存在哪些不同的服务器?它们的目的是什么?
您的主源存储库在哪里?
开发工作在哪里完成?
测试在哪里进行?
I am setting up some servers for website development. I want it to be organized in a fairly standard way. How do you organize your servers for development of relatively small websites, each with a little bit of unique code?
Some details I am concerned about include (but not limited to):
What distinct servers exist with respect to the development process? What is their purpose?
Where is your master source repository?
Where is development work done?
Where is testing done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

发布评论
评论(3)
1) 在开发过程中存在哪些不同的服务器?
他们的目的是什么?
根据我的经验,唯一重要的概念/想法是所有环境(服务器 => 开发、登台、生产)在操作系统、Web 服务器方面即使不完全相同,也应该相似版本、服务包、补丁、修补程序等。现在,拥有至少 3 个(或更多)不同环境可能可行,也可能不可行,但根据我的经验,这往往是常态。就硬件而言,只要它们非常相似或相同,就不会造成任何问题。
2) 你的主源在哪里
存储库?
与互联网隔离且戒备森严。许多防火墙规则可以保护它免受不良尝试的访问。只有内部开发人员才能访问存储库。
3)开发工作在哪里完成?
在较大的项目或组织中,开发往往在程序员的计算机上本地完成,或者借助源存储库(SVN、CVS、VSS 等)在本地完成工作的副本。
4)测试在哪里进行?
有些人在“开发”环境中进行测试,其他人在“分阶段”中进行测试,这对我来说更有意义。选择两者之一并坚持下去。就我个人而言,我认为如果开发人员对开发进行更改,则可以进行测试以避免版本更改。
您如何组织您的服务器
发展规模相对较小
网站,每个网站都有一点点
独特的代码?
基本上,网上商店将其环境组织为:开发=>开发,登台=>阶段,生产=>产品。开发人员在自己的计算机上本地工作,一旦完成添加/更改,他们就会将更改提交到源存储库。某些商店会执行称为 CI(持续集成)的操作,因此在开发人员每次提交后,CI 服务器都会自动重建到站点。这可以帮助开发人员/测试人员查看开发人员更改是否有任何问题。
通常,这些更改会发布到他们的开发环境中,供所有开发人员使用。当开发人员到达某个里程碑/检查点并想要开始测试时,他们将其网站的版本“升级”到暂存环境,以便测试人员进行锤炼,同时开发人员可以继续在开发中工作。
一旦每个人都对暂存中的一切感到满意,他们就会将暂存中的版本升级为产品。更改应该仅以一种方式流动:开发->阶段->产品。如果您想对生产进行更改,请从开发开始,然后在登台进行测试,然后升级到生产。这是一种痛苦,但它可以保持事情的一致性并防止许多令人头痛的事情。您会惊讶地发现,有多少公司只是在生产中进行了更改,几个月/几年后,他们在同步环境时遇到了问题,而只要遵循协议就可以为他们省去很多痛苦。
如果您指的是您的工作“小”,比如简单或不复杂,除了一些动态页面和一些数据库调用之外,我会说尝试使用 3 个环境,但您可能可以“摆脱”2 个环境(暂存)和生产)。你可以让你自己的电脑成为所谓的开发环境。
在工作中,我们偶尔会有两个人在同一个站点上工作,因此情况如下:
每个站点都处于源代码控制(Microsoft Source Safe)中,并且我们大多数时间在自己的计算机上使用和测试本地副本。幸运的是,Visual Studio 2008 通过其内置的 Web 服务器使这一切变得简单。
当我们想要对多个用户进行内部测试时,我们会部署到内部开发服务器。 (我们始终会在部署到生产之前执行此操作。)
当我们希望一些外部聘请的顾问在进入生产之前检查站点时,我们可能会部署到我们的生产服务器,但使用特殊的主机头将其与实时站点分开,例如 staging.yourdomain.com(此步骤经常被跳过)。
最后一步,我们部署到数据中心的生产服务器。
多年来我尝试过这种方法的各种变体。但这样做只需要2台物理服务器和开发人员的工作站。但它的结构足够好,对我们来说是一个可靠的过程。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在开发过程中存在哪些不同的服务器?它们的目的是什么?
仅限内部访问。
用于自动化构建/测试的服务器。
工件,在之间共享下载
开发团队
用于运行实际的硬件/软件
应用。
您的主源存储库在哪里?
通常仅限内部访问,可以与其他目的(例如 CI)共享此计算机。
开发工作在哪里完成?
在每个开发人员的本地计算机上最好,然后通过 SCM 和 CI 集成更改。
测试在哪里进行?
通常在预留用于测试的服务器上。通常有一组环境,并且构建在通过测试时会在每个阶段进行升级:
What distinct servers exist with respect to the development process? What is their purpose?
internal access only.
server for automated builds/testing.
artifacts, sharing downloads between
the development team
hard/software for running your actual
application.
Where is your master source repository?
Usually internal access only, can share this machine with another purpose e.g. CI.
Where is development work done?
On each developers local machine is best, then integrate changes via SCM and CI.
Where is testing done?
Usually on a server set aside for testing. Normally there is a set of environments and builds are promoted through each stage as they pass testing: