当前位置: 首页 > news >正文

【技术底稿 33】同机复用开发资源,搭建完整测试环境实战复盘一、核心背景

一、核心背景

在不新增机器、复用现有开发服务器硬件的基础上,搭建一套与开发环境逻辑隔离的测试环境。

核心原则:能共用的全共用,会冲突的必须隔离,最大化利用现有资源,同时彻底避免环境污染。


二、资源拆分与隔离落地

1. 中间件隔离(核心风险点)

  • MySQL、Redis、Zookeeper:单独实例 / 库隔离,测试与开发数据完全分离,互不串数据、互不抢锁。
  • 中间件层面实现了 100% 隔离,从根源杜绝测试数据污染开发环境。

2. 非核心资源全复用

  • Milvus、Nginx、服务器硬件、系统环境、基础运行时:全部共用开发机资源,不重复部署,节省成本与维护成本。

3. 日志隔离

  • 测试环境单独日志目录、单独归档策略,与开发日志完全拆分,排查问题互不干扰。

4. 构建与部署隔离

  • Jenkins 打包、部署脚本单独一套,dev/test 环境脚本分家,打包、拉包、启停互不干扰,避免误操作。

三、架构与域名布局

  • 两套前端:work.你的域名(开发)、test-work.你的域名(测试)
  • 两套网关入口:api.你的域名(开发)、test-api.你的域名(测试)
  • 后端微服务:一套物理部署,通过配置 + 隔离中间件区分环境,避免重复部署。

四、踩坑实录:Nginx 域名自环大坑

错误配置(踩坑现场)

test-work前端配置中,直接用公网域名做代理转发:

nginx

location /api/ { proxy_pass http://test-api.你的域名/; }

诡异现象

  • 单独访问test-api.你的域名正常返回 302 进入网关
  • test-work调用/api时,请求被前端location /规则拦截,直接返回 Vue 首页 HTML,无法命中 API 转发规则

无用排查过程

怀疑 location 顺序、怀疑配置未生效、怀疑域名冲突、怀疑前端问题,全部无效,浪费大量时间。


五、根治方案(两步解决)

1. 改造 test-api 配置

在配置顶部定义内网 upstream 组,统一管理网关入口:

nginx

upstream test_api_servers { server 127.0.0.1:你的网关端口; }

2. 改造 test-work 配置

将公网域名转发改为内网 upstream 直连:

nginx

location /api/ { proxy_pass http://test_api_servers/; }

原理说明

内部转发不走公网 DNS、不走公网 IP、不自环,纯内网直达,避开 Nginx 虚拟主机匹配错乱问题。


六、最终闭环结果

  • 中间件隔离、日志隔离、Jenkins 部署脚本隔离全部完成
  • 硬件和非核心资源最大化复用
  • Nginx 域名自环坑彻底根治,访问/api正常返回 JSON 业务接口
  • 开发环境、测试环境物理共用、逻辑完全隔离,整套架构稳定可用

至此,开发和测试两套环境共用一台机器,中间件隔离、日志不串、部署脚本分家、前端网关不打架。可以放心上线了。


七、固化铁律

同一台 Nginx 下,内部前端 / 服务互相代理,禁止使用公网域名,一律用 upstream 内网直连,从架构层面避免虚拟主机匹配错乱问题。


八、底稿收尾落款

本文是《技术底稿》系列第 33 篇,记录在不新增机器的前提下,复用开发服务器搭建完整测试环境的全流程实战复盘,包含资源隔离方案、域名架构设计与 Nginx 自环坑根治方案,可作为同机多环境部署的参考范本。

http://www.jsqmd.com/news/810505/

相关文章:

  • 基于Git工作流的OpenClaw状态备份工具clawsync设计与实践
  • 【仅限前500名】NotebookLM RAG私有化调优套件泄露版:含17个生产环境验证的prompt-sql混合检索模板+Latency-SLA监控看板
  • Python WebSocket 实时通信实战:构建实时Web应用
  • 告别答辩PPT焦虑:百考通AI一键生成,高效备战毕业答辩
  • AI时代的战神金刚——构建你的外部大脑与商业闭环@围巾哥萧尘
  • 【AI响应速度生死线】:Haiku在实时客服/编程助手/边缘设备的3大不可替代性验证
  • NotebookLM播客生成质量暴跌真相:训练数据污染率高达18.7%?我们逆向拆解了其RAG音频对齐层
  • LabVIEW主要设计特性与工程价值
  • STM32实战:BMP280气压模块IIC驱动与数据精准采集
  • 不靠感觉写代码:Matt Pocock 的 Skills 如何让 AI 写出你真正想要的代码
  • 半导体行业周期解析:从供需失衡到产业链博弈的生存指南
  • 终极音乐解锁指南:免费工具让你在任何设备播放加密音乐
  • 从底层逻辑了解AI
  • 基于SimpleX协议构建私有AI通信通道:OpenClaw插件部署指南
  • 氛围工程指南:如何量化与塑造技术团队的健康氛围
  • gptstudio:R语言数据分析的AI副驾驶,重塑RStudio工作流
  • 【ChatGPT Slogan生成黄金法则】:20年品牌技术专家亲授3步高转化文案炼金术
  • 假冒 TronLink 的 MV3 扩展钓鱼攻击机理与 Web3 钱包安全防御
  • 隐私保护机器学习技术:MPC与FHE对比与应用
  • 快速原型开发中利用Taotoken分钟级接入验证创意
  • PS图片文字修改教程 简单几步完美替换文字内容
  • 137.从 CUDA 环境到模型部署!YOLOv8 全流程实战,适配工业质检 / 自动驾驶多场景
  • 【实战指南】App Inventor对接阿里云:打造STM32温湿度数据可视化APP
  • 使用 OpenClaw 配置 Taotoken 作为其 AI 供应商的详细步骤
  • ComfyUI-FramePackWrapper:8GB显存也能流畅生成高质量AI视频的终极方案
  • 高效清理磁盘空间:DupeGuru重复文件查找工具完整指南 [特殊字符]
  • superpowers skill 6.2: receiving-code-review
  • 2026年金华餐饮SaaS系统选型参考:推荐3家具备落地服务能力的本地服务商 - 产业观察网
  • AI智能体驱动B2B线索挖掘:开源模板实现自动化客户发现与评分
  • 告别熬夜硬肝!百考通AI 助力高效完成答辩PPT,让毕业季更从容