680e2c9427
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>
120 lines
3.3 KiB
Markdown
120 lines
3.3 KiB
Markdown
# 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 排除规则 |
|