Files
memind_adm/docs/DEPLOY.md
T
john 680e2c9427 Add LAN deploy scripts and improve admin billing/users UX.
Provide rsync deploy and restart tooling for the 100 server, document the workflow, and add pagination plus user filtering across billing and user management pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 20:46:59 +08:00

120 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# memind_adm 部署与重启
管理后台前端(React + Vite)部署到局域网 100 服务器(Tailscale `100.99.38.66`)。
## 环境概览
| 项 | 默认值 |
|---|---|
| 部署目标 | `john@100.99.38.66:/Users/john/Project/memind_adm` |
| 服务端口 | `5174` |
| 运行方式 | `vite preview`(静态资源 + API 反代) |
| 后端 API | 远端 `.env``ADM_DEV_BACKEND`(默认 `http://127.0.0.1:8081` |
| 日志 | `/Users/john/Project/memind_adm/adm-preview.log` |
## 前置条件
1. 本机可 SSH 到 100 服务器(Tailscale 已连接):
```bash
ssh john@100.99.38.66
```
2. 本机已安装 Node.js,项目依赖已安装(`npm install`)。
3. 100 服务器上后端(Memind portal / `server.mjs`)在 `8081` 运行,否则页面能打开但登录、API 会失败。
## 更新部署(推荐)
在本机项目根目录执行:
```bash
./scripts/rsync_to_server.sh
```
脚本会依次:
1. 本地 `npm run build` 生成 `dist/`
2. `rsync` 同步源码到远端(排除 `node_modules`、`.git`、`.env` 等)
3. 单独同步 `dist/`
4. 若远端尚无 `.env`,写入默认配置(**不覆盖已有 `.env`**
5. 调用 `scripts/remote_restart.sh` 重启服务
### 常用参数
```bash
# 跳过本地构建(沿用当前 dist/)
./scripts/rsync_to_server.sh --skip-build
# 只同步文件,不重启
./scripts/rsync_to_server.sh --no-restart
# 环境变量覆盖
DEPLOY_HOST=john@100.99.38.66 \
REMOTE_DIR=/Users/john/Project/memind_adm \
ADM_PORT=5174 \
./scripts/rsync_to_server.sh
```
## 仅重启服务
代码已在远端、无需重新同步时:
```bash
ssh john@100.99.38.66 'ADM_ROOT=/Users/john/Project/memind_adm ADM_PORT=5174 bash -s' \
< scripts/remote_restart.sh
```
或在 100 服务器上直接执行:
```bash
cd /Users/john/Project/memind_adm
ADM_PORT=5174 ./scripts/remote_restart.sh
```
重启逻辑:结束占用 `5174` 的进程 → `nohup npm run preview` → 检查首页是否返回 200。
## 验证
本机通过 SSH 检查:
```bash
ssh john@100.99.38.66 'curl -sI http://127.0.0.1:5174/ | head -1'
# 期望: HTTP/1.1 200 OK
```
查看远端日志:
```bash
ssh john@100.99.38.66 'tail -f /Users/john/Project/memind_adm/adm-preview.log'
```
## 远端配置
编辑远端 `.env`(首次部署后路径:`/Users/john/Project/memind_adm/.env`):
```env
# preview 反代目标(/auth、/admin-api、/api
ADM_DEV_BACKEND=http://127.0.0.1:8081
# 「返回对话」跳转地址
VITE_MAIN_APP_URL=http://127.0.0.1:8081
```
修改 `.env` 后需重启服务生效。
## 故障排查
| 现象 | 处理 |
|---|---|
| `无法 SSH 到 john@100.99.38.66` | 确认 Tailscale 在线;必要时 `ssh-copy-id john@100.99.38.66` |
| 首页 200 但登录失败 | 检查 100 上 `8081` 后端是否运行 |
| `dist 不存在` | 先在本机 `npm run build`,或完整执行 `./scripts/rsync_to_server.sh` |
| 启动失败 | 查看 `adm-preview.log`;确认远端 Node 在 PATH 中(需 Homebrew `node@22` 等) |
| 端口被占用 | `remote_restart.sh` 会自动 kill 旧进程;仍异常时可手动 `lsof -iTCP:5174 -sTCP:LISTEN` |
## 相关脚本
| 脚本 | 说明 |
|---|---|
| `scripts/rsync_to_server.sh` | 构建 + rsync + 重启(一键部署) |
| `scripts/remote_restart.sh` | 仅在远端重启 `vite preview` |
| `scripts/.rsync-exclude-lan` | rsync 排除规则 |