Files
memind/docs/gadm-local.md
T

151 lines
3.9 KiB
Markdown
Raw Normal View History

2026-06-20 15:41:22 +08:00
# gadm 由 105 入口转发到 Studio
`gadm.tkmind.cn` 的生产链路和 Plaza 一样,都是 `105 入口 -> Studio 生产机`。
2026-06-20 16:11:57 +08:00
这里的后端服务名是 `memind_adm`,代码入口在本仓库的 `admin-server.mjs`。
根路径 `/` 默认进入 `gadm` 的管理页,也就是 `ops` 前端里的 `/admin` 段。
2026-06-20 15:41:22 +08:00
## 角色拆分
```text
浏览器 / 内部管理人员
↓
105 公网入口(gadm.tkmind.cn)
↓ nginx / 反代
Studio / 本机生产机
2026-06-20 16:09:03 +08:00
├─ ops 前台(/ops/,Vite 开发服务)
2026-06-20 15:41:22 +08:00
└─ memind_adm :8082(admin-server.mjs)
├─ /healthz
├─ /admin-api/*
└─ /api/ops/v1/*
```
`memind_adm` 只负责后端管理 API,不直接托管大部分前台页面。
2026-06-20 16:11:57 +08:00
`ops/` 里的后台 SPA 是独立页面,生产上由 `gadm.tkmind.cn/` 先跳转到 `/ops/admin/`,再由 105 反代回 Studio。
2026-06-20 15:41:22 +08:00
## 本地开发
```bash
pnpm dev:adm
```
默认监听 `http://127.0.0.1:8082`。
常见本地访问地址:
| 服务 | 地址 |
|------|------|
| memind_adm | http://127.0.0.1:8082 |
| ops 后台 | http://127.0.0.1:3002/ops/ |
## 测试机同步
如果要同步到测试目录,`memind_adm` 对应的是:
- 源码目录:`/Users/john/PycharmProjects/test/test-memind`
- 测试镜像目录:`/Users/john/PycharmProjects/test/test-memindadm`
同步脚本:
```bash
bash scripts/deploy-to-test-host.sh --only-adm
```
如果你要同步三套目录,也可以直接:
```bash
bash scripts/deploy-to-test-host.sh
```
## 生产发布流程
2026-06-20 16:09:03 +08:00
生产上,`gadm.tkmind.cn` 解析到 105,105 负责把:
2026-06-20 16:11:57 +08:00
- `/` 重定向到 `/ops/admin/`
2026-06-20 16:09:03 +08:00
- `/ops/` 反代到 Studio 上的 ops 页面
- `/admin-api/` 和 `/api/ops/v1/` 反代到 Studio 上的 `memind_adm`
2026-06-20 15:41:22 +08:00
2026-06-20 15:46:32 +08:00
### 0. 本地改动确认
2026-06-20 15:41:22 +08:00
推荐从本地开发目录发布到 Studio:
```bash
cd /Users/john/PycharmProjects/test/test-memind
git status --short
```
如果你改的是 `admin-server.mjs`、`admin-routes.mjs`、`admin-*.mjs` 或 `ops/`,记得先本地自测。
2026-06-20 15:46:32 +08:00
### 1. 本地启动 / 自测
2026-06-20 15:41:22 +08:00
```bash
pnpm dev:adm
```
2026-06-20 15:46:32 +08:00
默认监听 `http://127.0.0.1:8082`,启动后先看:
```bash
curl -s http://127.0.0.1:8082/healthz
```
### 2. 同步到测试机
```bash
bash scripts/deploy-to-test-host.sh --only-adm
```
测试镜像目录是 `/Users/john/PycharmProjects/test/test-memindadm`。
### 3. Studio 生产机启动 / 重启
在 Studio 机器上,`memind_adm` 最终都应该由同一个入口启动:
2026-06-20 15:41:22 +08:00
```bash
2026-06-20 15:46:32 +08:00
cd /Users/john/Project/Memind
2026-06-20 15:41:22 +08:00
node admin-server.mjs
```
2026-06-20 15:46:32 +08:00
如果你们在 Studio 上用了 launchd / pm2 / systemd,就让守护脚最终执行上面这条命令。
常见的生产检查:
```bash
curl -s http://127.0.0.1:8082/healthz
curl -s http://127.0.0.1:8082/admin-api/summary
```
### 4. 105 入口反代
2026-06-20 15:41:22 +08:00
105 上的 nginx 应该把 `gadm.tkmind.cn` 回源到 Studio 的 `memind_adm :8082`。
2026-06-20 15:46:32 +08:00
如果你要确认 nginx 当前配置,优先看:
```bash
ssh ssh105 'nginx -t && systemctl reload nginx'
ssh ssh105 'sed -n "1,220p" /etc/nginx/conf.d/gadm.tkmind.cn.conf'
```
2026-06-20 15:41:22 +08:00
上线后优先验证:
```bash
2026-06-20 16:09:03 +08:00
curl -I https://gadm.tkmind.cn/
2026-06-20 16:11:57 +08:00
curl -I https://gadm.tkmind.cn/ops/admin/
2026-06-20 15:46:32 +08:00
curl -s -D - -o /dev/null https://gadm.tkmind.cn/admin-api/summary
2026-06-20 16:09:03 +08:00
curl -s https://gadm.tkmind.cn/healthz
2026-06-20 15:41:22 +08:00
```
## 故障排查顺序
如果 `gadm.tkmind.cn` 挂了,按这个顺序查:
1. Studio 上 `http://127.0.0.1:8082/healthz` 是否正常
2. Studio 上 `memind_adm` 是否还在运行
3. 105 上 nginx 是否把 `gadm.tkmind.cn` 转发到了 Studio
4. `ADMIN_CONSOLES`、`ADMIN_API_ALLOWED_HOSTS`、`OPS_API_ALLOWED_HOSTS` 是否限制过严
2026-06-20 15:46:32 +08:00
5. `ops/` 是否还在用正确的 `'/admin-api'` 代理地址
2026-06-20 15:41:22 +08:00
## 相关文件
- [`admin-server.mjs`](/Users/john/PycharmProjects/test/test-memind/admin-server.mjs)
- [`scripts/deploy-to-test-host.sh`](/Users/john/PycharmProjects/test/test-memind/scripts/deploy-to-test-host.sh)
- [`scripts/local-test-proxy.mjs`](/Users/john/PycharmProjects/test/test-memind/scripts/local-test-proxy.mjs)