4.4 KiB
4.4 KiB
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 | 本仓库 server/(ADM_API_PORT 默认 8085,与 Memind portal 解耦) |
| 日志 | /Users/john/Project/memind_adm/adm-preview.log |
前置条件
- 本机可 SSH 到 100 服务器(Tailscale 已连接):
ssh john@100.99.38.66 - 本机已安装 Node.js,项目依赖已安装(
npm install)。 - 100 服务器上 memind_adm Admin API 在
8085运行(remote_restart.sh会自动启动),MySQL 与 Memind 共用。
gadm 独立登录
https://gadm.tkmind.cn 应部署 本仓库 memind_adm,勿再反代到 Memind/ops Vite dev(旧版未登录会跳 localhost:5173)。
| 项 | 说明 |
|---|---|
| 登录 | 本页 /auth/login,账号来自共用 MySQL |
| 会话 | 设置 H5_PUBLIC_BASE_URL=https://gadm.tkmind.cn,不要设 H5_COOKIE_DOMAIN=.tkmind.cn |
| 路径 | https://gadm.tkmind.cn/ 直达超管后台;Plaza 运营在 /ops;/ops/admin 已废弃 |
| API | ADM_DEV_BACKEND=http://127.0.0.1:8085(preview 反代目标) |
| 初始化 admin | 首次部署后运行 npm run admin:init,密码只写入数据库,不放 .env |
nginx 示例见 scripts/gadm-nginx.conf.example(/ops/ → preview,/auth /admin-api /api → Admin API 8085)。
更新部署(推荐)
在本机项目根目录执行:
./scripts/rsync_to_server.sh
脚本会依次:
- 本地
npm run build生成dist/ rsync同步源码到远端(排除node_modules、.git、.env等)- 单独同步
dist/ - 若远端尚无
.env,写入默认配置(不覆盖已有.env) - 调用
scripts/remote_restart.sh重启服务
常用参数
# 跳过本地构建(沿用当前 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
仅重启服务
代码已在远端、无需重新同步时:
ssh john@100.99.38.66 'ADM_ROOT=/Users/john/Project/memind_adm ADM_PORT=5174 bash -s' \
< scripts/remote_restart.sh
或在 100 服务器上直接执行:
cd /Users/john/Project/memind_adm
ADM_PORT=5174 ./scripts/remote_restart.sh
重启逻辑:结束占用 5174 的进程 → nohup npm run preview → 检查首页是否返回 200。
验证
本机通过 SSH 检查:
ssh john@100.99.38.66 'curl -sI http://127.0.0.1:5174/ | head -1'
# 期望: HTTP/1.1 200 OK
查看远端日志:
ssh john@100.99.38.66 'tail -f /Users/john/Project/memind_adm/adm-preview.log'
远端配置
编辑远端 .env(首次部署后路径:/Users/john/Project/memind_adm/.env):
# preview 反代目标(/auth、/admin-api、/api)— 指向本仓库 Admin API
ADM_API_PORT=8085
ADM_DEV_BACKEND=http://127.0.0.1:8085
H5_PUBLIC_BASE_URL=https://gadm.tkmind.cn
VITE_BASE_PATH=/ops
# 「返回对话」跳转主 H5(可选)
VITE_MAIN_APP_URL=https://h5.tkmind.cn
修改 .env 后需重启服务生效。
故障排查
| 现象 | 处理 |
|---|---|
无法 SSH 到 john@100.99.38.66 |
确认 Tailscale 在线;必要时 ssh-copy-id john@100.99.38.66 |
| 首页 200 但登录失败 | 检查 100 上 8085 Admin API 是否运行(curl http://127.0.0.1:8085/health) |
| 打开后跳 localhost:5173 | nginx 仍指向 Memind/ops dev;改反代到 memind_adm :5174,并重新部署 |
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 排除规则 |