
任何运行网络项目的人都知道这个时刻:一个小更新应该“非常快”地部署,突然该网站就消失了。或者邮件投递。或者登录。实际的错误本身是无害的。它之所以变得严重,是因为它直接发生在现场环境中。
这正是暂存和测试环境是为了.它们不是大公司的奢侈品,而只是实验和操作之间的分离。这种分离可以在专用 VPS 上干净地实现。
为什么单独的测试环境有意义
测试环境是您的设置的副本,您可以在其中尝试更改在真正的用户看到它们之前。听起来微不足道,但这就是需要几分钟的更新和以紧急回滚结束的更新之间的区别。
最迟当满足以下条件之一时,它就变得值得:
- 当网站短暂无法访问时,无论是商店、预订页面还是俱乐部网站,您都会收到投诉。
- 您运行多个交互的组件:Web 服务器、数据库、缓存,也许还有反向代理。
- 您希望测试软件的更新或新版本,但又不想立即对所有访问者造成影响。
- 你与他人一起工作,并不是所有的改变都来自于你。
中心思想:你在测试中犯下的错误不会让任何人失去信任。你在生产中破坏的东西就会发生。
Docker 在这张图中改变了什么
Docker 不是这里的实际主题,但它使设置测试环境变得更加容易。容器将您的应用程序及其依赖项封装在一起,以便它们在测试机器上运行的方式与后来在生产中的运行方式大致相同。
如果没有容器,差异往往会蔓延:不同的 PHP 版本、不同的包、不同的配置。这些差异通常是某些东西“在测试中有效”但在生产中仍然出现故障的原因。
容器不一定是火箭科学。只需了解每个组件(Web 服务器、数据库、应用程序)都在其自己的独立单元中运行,并且您可以在测试 VPS 上构建、丢弃和重新启动这些单元,而无需接触服务器本身。
分期、测试和现场比较
这些术语在实践中并不总是被精确使用。一个可行的区别:
- 测试:快速且通常是一次性的环境。在这里,您可以检查更改是否构建、启动以及大致执行其预期的操作。
- 分期:尽量离住的近。在这里,您将演练更新在遇到数据、真实 URL 和实际条件时的行为方式。
- 现场(制作):这就是真正的用户所在。这是部署发生的地方,没有尝试其他任何东西。
对于较小的项目,两阶段模型通常就足够了:一个实时系统和一个处理测试和登台任务的 VPS。重要的是它们是独立的系统。

为什么专用 VPS 是一个不错的选择
理论上,测试环境也可以在你自己的机器上运行。在实践中,这会带来一些问题:其他人无法访问它,真实网络条件下的行为缺失,并且一旦笔记本电脑关闭,测试也会消失。
VPS 带来了几个明显的优势:
- 像实时系统一样可访问,拥有自己的 IP、自己的 DNS 记录、自己的 TLS 配置。
- 独立于您的工作设备,即使机器关闭,测试也会继续运行。
- 干净一次性:拍摄快照、进行实验,并在需要时回滚到快照。
- 与生产分离:如果测试系统出现问题,则无法访问实时数据。
最后一点是决定性的:你无法即兴创造真正的分离,你需要一个专用的系统。
当它还不值得,当它绝对值得的时候
在某些情况下,单独的测试环境是多余的:没有登录的小型静态站点,没有数据库,没有定期更新。备份通常就足够了,案件已结。
然而,至少在这些点上,这一举措确实得到了回报:
- 一旦收入或约会取决于可用性。
- 只要你运行多个组件相互依赖。
- 一旦几个人正在开发同一个应用程序。
- 一旦你开始定期推出更大的更新。
任何在没有测试环境的情况下在这些情况下工作的人最终都只能依靠运气。而且运气是无法衡量的。
典型的工作流程是什么样的
您不需要为此开发自己的部署概念。一个简单、强大的工作流程就足够了:
- 将更改应用到测试VPS并检查一切是否开始。
- 在同一个或第二个系统上,验证更现实的条件(数据、URL、负载)。
- 然后才推出直播,最好预先拍摄快照或备份。
- 如果出现问题:回滚,修复它,再次测试。不要在生产中修补东西。
这种努力听起来像是更多的工作,但总体而言,效果较小,因为你拯救了自己深夜会议、回滚和解释。
哪些网杯产品适合
对于测试和分段设置,虚拟专用服务器通常是完全合适的:足够的性能来进行实际测试,进入门槛低,与生产明确分离。
- 虚拟专用服务器:理想的切入点测试和暂存环境、较小的容器设置和更新预检查。
- 根服务器:当测试环境永久托管更复杂的堆栈或当您想要更直接地控制系统时很有用。
- 虚拟主机:非常适合实时站点,而测试则有意在单独的 VPS 环境上运行。