基本上,我想知道网络公司最常见的服务器设置是什么。在我现在工作的公司,我们有一台服务器,上面有我们所有客户的站点。我们有时在本地工作并上传,但 90% 的时间最终还是在实时服务器上进行开发。现在这并不理想,它会导致各种问题,更不用说使问题查找变得困难(因为日志被调试错误等堵塞)。
我听到很多人拥有生产服务器、登台服务器和开发服务器,我想这就是可行的方法。
我正在考虑的设置是:
生产服务器- 只有实时站点才能使用此服务。除服务器管理员外,没有人有 FTP 访问权限。安装了 phpSuExec,因此每个站点都以自己的用户身份运行。服务器经过高度优化。所有不必要的端口均已禁用等。
临时服务器- 克隆生产服务器,没有 phpSuExec,但仍然限制访问。
开发服务器- 所有员工使用的内部服务器。没有 FTP 限制,可以安装 SASS、xdebug 等生产力辅助软件,并且安全规则限制较少等。
工作流程将是:每个人都在开发服务器上工作。当网站需要客户查看或在生产环境中进行测试时,它会被移至临时服务器。如果有问题,则返回开发服务器,解决问题并推送回临时服务器。然后,一旦所有问题都得到解决并且客户满意,我们就会将网站移至生产服务器。
我对上述系统的任何建议/缺陷以及其他公司如何做到这一点很感兴趣。
所有服务器都是 LAMP,运行 Ubuntu
答案1
原因很明显,三层设置非常常见。
不过,我建议对你已列出的内容进行一些修改:
你的临时服务器应该是精确的生产环境的副本。
这具有巨大的优势,即从准备阶段到生产阶段的部署尽可能地顺利和无错误,并且由于此类部署可能涉及停机,你要这个。也就是说,对暂存环境的实际访问可以比生产环境更少限制,这样 DEV 和 QA/UA 也可以出于故障排除目的获得访问权限。
您可能希望将其限制为只读访问以检查配置和读取日志文件,但从长远来看,这可能会节省时间;这通常取决于您对这些环境的使用模式。
如果商店足够大,您有单独的 DEV 和 QA 部门,那么一定要将暂存环境与 DEV 完全分开;大型商店通常有一个完全独立的发布团队它负责部署的这个阶段。
答案2
我同意@adaptr 的观点,并想补充一点,开发人员应该各自使用自己的环境进行开发,并将更改签入源代码控制。这样可以防止他们互相干扰,并防止一名开发人员破坏服务器,导致所有人一天无法工作。应从这些签入中自动发布到“开发服务器”,并将其作为所有更改的集成环境。