151 lines
3.9 KiB
Markdown
151 lines
3.9 KiB
Markdown
# gadm 由 105 入口转发到 Studio
|
||
|
||
`gadm.tkmind.cn` 的生产链路和 Plaza 一样,都是 `105 入口 -> Studio 生产机`。
|
||
这里的后端服务名是 `memind_adm`,代码入口在本仓库的 `admin-server.mjs`。
|
||
根路径 `/` 默认进入 `gadm` 的管理页,也就是 `ops` 前端里的 `/admin` 段。
|
||
|
||
## 角色拆分
|
||
|
||
```text
|
||
浏览器 / 内部管理人员
|
||
↓
|
||
105 公网入口(gadm.tkmind.cn)
|
||
↓ nginx / 反代
|
||
Studio / 本机生产机
|
||
├─ ops 前台(/ops/,Vite 开发服务)
|
||
└─ memind_adm :8082(admin-server.mjs)
|
||
├─ /healthz
|
||
├─ /admin-api/*
|
||
└─ /api/ops/v1/*
|
||
```
|
||
|
||
`memind_adm` 只负责后端管理 API,不直接托管大部分前台页面。
|
||
`ops/` 里的后台 SPA 是独立页面,生产上由 `gadm.tkmind.cn/` 先跳转到 `/ops/admin/`,再由 105 反代回 Studio。
|
||
|
||
## 本地开发
|
||
|
||
```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
|
||
```
|
||
|
||
## 生产发布流程
|
||
|
||
生产上,`gadm.tkmind.cn` 解析到 105,105 负责把:
|
||
|
||
- `/` 重定向到 `/ops/admin/`
|
||
- `/ops/` 反代到 Studio 上的 ops 页面
|
||
- `/admin-api/` 和 `/api/ops/v1/` 反代到 Studio 上的 `memind_adm`
|
||
|
||
### 0. 本地改动确认
|
||
|
||
推荐从本地开发目录发布到 Studio:
|
||
|
||
```bash
|
||
cd /Users/john/PycharmProjects/test/test-memind
|
||
git status --short
|
||
```
|
||
|
||
如果你改的是 `admin-server.mjs`、`admin-routes.mjs`、`admin-*.mjs` 或 `ops/`,记得先本地自测。
|
||
|
||
### 1. 本地启动 / 自测
|
||
|
||
```bash
|
||
pnpm dev:adm
|
||
```
|
||
|
||
默认监听 `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` 最终都应该由同一个入口启动:
|
||
|
||
```bash
|
||
cd /Users/john/Project/Memind
|
||
node admin-server.mjs
|
||
```
|
||
|
||
如果你们在 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 入口反代
|
||
|
||
105 上的 nginx 应该把 `gadm.tkmind.cn` 回源到 Studio 的 `memind_adm :8082`。
|
||
|
||
如果你要确认 nginx 当前配置,优先看:
|
||
|
||
```bash
|
||
ssh ssh105 'nginx -t && systemctl reload nginx'
|
||
ssh ssh105 'sed -n "1,220p" /etc/nginx/conf.d/gadm.tkmind.cn.conf'
|
||
```
|
||
|
||
上线后优先验证:
|
||
|
||
```bash
|
||
curl -I https://gadm.tkmind.cn/
|
||
curl -I https://gadm.tkmind.cn/ops/admin/
|
||
curl -s -D - -o /dev/null https://gadm.tkmind.cn/admin-api/summary
|
||
curl -s https://gadm.tkmind.cn/healthz
|
||
```
|
||
|
||
## 故障排查顺序
|
||
|
||
如果 `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` 是否限制过严
|
||
5. `ops/` 是否还在用正确的 `'/admin-api'` 代理地址
|
||
|
||
## 相关文件
|
||
|
||
- [`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)
|