# 提示词:部署与运行环境 目标环境:甲方 **同一台** Windows Server(`129.211.181.80` / `10_206_0_15`)。现网继续跑 `C:\yutongda`。新系统是**另一套应用**,不要改动现网 `ops\active-release.json`,不要占用 8080/8810/8813。现网发布仍按甲方原流程;测试环境用本目录 `12`。 ## 同机并存 | 项 | 现网(不动) | 新系统 | |---|---|---| | 目录 | `C:\yutongda` | 例如 `C:\ytd-test\` | | 主账 / 智能体 / AIBOT | 8080 / 8810 / 8813 | 另选端口,例如 8180 / 8910 / 8913 | | Nginx | `ai.ytd-scm.com` | **同一域名**;切流前不改 `ai.conf` 回调/H5 | | MySQL / PG / Redis / MinIO | `jeecg-boot`、`ytd_runtime`、`ytd:prod:node01-07`、桶 `ytd-inquiry` | 库 `ytd_test`、`ytd_test_runtime`;Redis **db1** 前缀 `ytd:test:`;桶 `ytd-test` | | TMS | `03` 现网 BaseURL + Client 三件套 | **原样使用**;只 query,默认不开 lock/release | | 企微询价应用 | `1000010` | **同一套**,配置抄 `03` | | 企微运维通知 | `1000014` | **同一套** | 切流替换现网进程时,再把 Nginx 反代指到新端口并停现网 AIBOT 桥,企微后台回调 URL 不用改。然后停下面这份现网清单。 ## 切流时停现网:域名与端口 **域名(现网站点,切流后由新系统接管同一名或下线)** | 地址 | 用途 | |---|---| | `https://ai.ytd-scm.com` | 后台静态 + 总入口 | | `https://ai.ytd-scm.com/jeecgboot/`、`/jeecg-boot/` | 反代现网 Java 8080 | | `https://ai.ytd-scm.com/wecom/callback` | 企微应用回调 → 现网 8811 | | `https://ai.ytd-scm.com/wecom/robot/callback` | 群机器人(现网空配置)→ 现网 8812 | | `https://ai.ytd-scm.com/inquiry-form/` | H5 → 现网 8810 | | `https://ai.ytd-scm.com/inquiry-form/upload/` | H5 上传 → 现网 8810 | 机器公网 `129.211.181.80`、SSH `22`、Nginx `80/443` **不要关**(新系统还要用)。`www.waxonai.cn` 只是仓库里示例 conf,生产以 `ai.ytd-scm.com` 为准。 **本机进程口(停现网应用服务)** | 端口 | 现网进程 | 切流后 | |---|---|---| | 8080 | Java JeecgBoot | 停 | | 8809 | Python bridge_api | 停 | | 8810 | Python agent_api | 停 | | 8811 | Python wecom_callback | 停 | | 8812 | Python wecom_robot | 停(若在跑) | | 8813 | AIBOT 仅 127.0.0.1 | 停 | | (无端口) | wecom/llm/recognition/quote/archive Worker | 停 NSSM | **不要当「询价服务」误关的** | 地址 | 原因 | |---|---| | 数据机 `10.206.0.14:3306/5432/6379` | 实例共用;只停用库 `jeecg-boot`、`ytd_runtime` 与前缀 `ytd:prod:node01-07` | | 本机 MinIO `9000` / 控制台 `9001` | 实例共用;只停用桶 `ytd-inquiry` | | TMS `http://113.106.62.254:3100/sangoe-boot` | 外部系统,新系统继续用 | | Gitea `gitea.lionqi.com` | 源码,无关运行 | 企微侧切流:后台 `1000010` 回调地址保持 `https://ai.ytd-scm.com/wecom/callback`,只改 Nginx 指到新智能体。停现网 8813 后再起新 AIBOT(同一 Bot)。运维 **`1000014` 仍共用**。测试告警正文带 `[test]`。 ## 必须保留的运维原则 1. 制品不可变:新版本写入 `releases\` 新目录,禁止覆盖活动目录。 2. 原子切换指针:`ops\active-release.json` 等;失败自动回指上一活动版。 3. 互斥锁:禁止两人同时部署。 4. 构建不含 `.env`、密钥、日志、用户附件、数据库 dump。 5. 健康检查 ≠ 业务验收。 6. 并存阶段:禁止真实 TMS **lock/release**、禁止改现网回调与防火墙、禁止改 `C:\yutongda\secure\`。查价可用现网 TMS。测试库 `ytd_test` / `ytd_test_runtime` 的加表加字段按 `05` 直接迁移,不必等批准。 ## 进程与端口 新系统自己监听(避开现网):**8180** 主账、**8910** 智能体 HTTP、**8913** AIBOT 回环、一个 Worker。现网 8080/8810/8813 保持原样。 现网 release 的 8809/8811/8812 以及五个 Worker:**切流前不要停**。新系统用自己的服务名与端口。发布测试版时停的是测试目录里的进程,不是 `C:\yutongda`。切流时才把 `ai.conf` 的 inquiry-form / wecom/callback 反代到新 HTTP 端口。不要 Redis 全局单例锁。 ## 基础设施 本机/服务器安装:JDK(若仍用 Java)、Python 3.12、Node(AIBOT 桥)、MySQL、PostgreSQL、Redis、MinIO 或 S3、LibreOffice、Nginx。 域名 `ai.ytd-scm.com` TLS 终止在 Nginx:静态后台、反代 `/jeecgboot`、inquiry-form 与企微回调到智能体 HTTP。 ## 环境文件 - 示例:仓库 `.env.example` 只有变量名。 - 生产:服务器本地文件,权限仅运行账号。明文对照 `03`。 - 本机开发:用脚本注入环境变量,关闭真实出站。 ## 你要交付的脚本 等价于现网:远程身份检查、累计发布、发布后 status、远程 PowerShell 封装。不要发明「scp 覆盖几个 py」的热修当正式发布。 ## SSH 用户 `ytd_extdev_0903`,Ed25519,`IdentityFile ~/.ssh/id_ed25519_ytd`。公钥指纹见 `03`。私钥永不进仓库。