我正在设置一些用于网站开发的服务器。我希望以相当标准的方式组织它们。对于开发相对较小的网站,每个网站都有一些独特的代码,您如何组织服务器?
我关心的一些细节包括(但不限于):
就开发过程而言,有哪些不同的服务器?它们的用途是什么?
您的主源存储库在哪里?
开发工作在哪里进行?
答案1
- 我推荐以下基础设施:
- 开发主服务器,包含源代码控制、错误跟踪、运行构建虚拟机等
- 强大的开发人员/QA 工作站(或笔记本电脑,如果需要)可用作桌面并运行开发人员测试虚拟机
- 在每个开发人员的机器上测试虚拟机,这些虚拟机镜像生产操作系统/配置,他们可以使用(以验证可能需要的配置更改的想法),并且可以在需要时将其移除并恢复到已知状态(从主映像);
- 在 QA 部门工作站上测试/QA VM,以便各个测试人员可以管理自己的测试/QA 流程,而不会影响其他人的利益;
- 构建/CI VM,可生成“已知良好”的构建以供内部测试;
- 暂存环境在各个方面都反映了生产情况,用于验证完整的构建以准备发布生产,也用于验证系统设置中的更改;
- 生产部门,禁止开发人员访问,所有实际工作都发生在这里(显然)
- 还有一堆系统管理员支持服务,比如黄金服务器不能直接供开发人员使用。
- 在开发主服务器上
- 在开发人员工作站上,可以直接使用(在他们认为最有效率的环境中),或者在他们的个人测试虚拟机中。
如果您所做的只是创建“相对较小的网站,每个网站都有一些独特的代码”,那么所有这些听起来都有点矫枉过正。听起来您是一个单人乐队,在这种情况下,请将所有东西都放在您的笔记本电脑上(具有良好的近线和异地备份),并在适当的虚拟机中。更重要的是,您需要考虑如何将代码构造成可重复使用的模块,以及如何使用修订控制系统的分支功能来使通用代码保持通用,并使独特代码保持独特且不相互干扰。但这个问题最好在 Stack Overflow 上提出,而不是在这里。