部署与运维
当前部署
| 项目 | 值 |
|---|---|
| 服务器 | 115.190.241.26 |
| 部署目录 | /data/AIBox/HkgaiModels |
| 访问地址 | https://docs-hkgai.mooschh.com |
| 应用端口 | 127.0.0.1:9001(Nginx 反向代理) |
| 进程管理 | PM2,应用名 hkgai-models |
| 代码来源 | Git 仓库 main 分支 |
服务器上的 .env 只保存在部署机,不提交到 Git。更新密钥时直接修改服务器上的 .env,不要把真实值写入文档、日志或提交。
登录与查看状态
ssh agent@115.190.241.26
cd /data/AIBox/HkgaiModels
PM2=/opt/node-v22.22.1-linux-x64/bin/pm2
$PM2 status
服务器的 Node.js 位于 /opt/node-v22.22.1-linux-x64,因此命令使用 PM2 绝对路径;如果当前 Shell 已将该目录加入 PATH,也可以直接使用 pm2。
更新代码并重启
代码更新使用 Git,不上传压缩包或手工复制构建产物:
ssh agent@115.190.241.26 '
set -e
cd /data/AIBox/HkgaiModels
git pull --ff-only origin main
npm ci --no-audit --no-fund
npm run build
PM2=/opt/node-v22.22.1-linux-x64/bin/pm2
$PM2 restart hkgai-models --update-env
$PM2 save
'
说明:npm ci 和 npm run build 在服务器执行;如果只是修改 .env,不需要重新安装依赖或构建,直接执行下面的重启命令即可。
修改 .env 后重启
ssh agent@115.190.241.26 '
cd /data/AIBox/HkgaiModels
PM2=/opt/node-v22.22.1-linux-x64/bin/pm2
$PM2 restart hkgai-models --update-env
$PM2 save
'
--update-env 用于让 PM2 重新读取进程环境;Next.js 启动时会从部署目录加载 .env。可用 /api/config 的 hasApiKey 字段确认是否读取到 Key,但不要输出 Key 本身。
日志与健康检查
# 实时查看应用日志
ssh agent@115.190.241.26 \
'/opt/node-v22.22.1-linux-x64/bin/pm2 logs hkgai-models'
# 查看最近日志,不持续跟随
ssh agent@115.190.241.26 \
'/opt/node-v22.22.1-linux-x64/bin/pm2 logs hkgai-models --lines 100 --nostream'
# 检查域名与 API 配置状态
curl -sS https://docs-hkgai.mooschh.com/api/config
# 检查服务首页
curl -I https://docs-hkgai.mooschh.com/
开机自启
PM2 已为 agent 用户注册并启用 systemd 单元 pm2-agent.service,应用清单保存在 /home/agent/.pm2/dump.pm2。检查命令:
ssh agent@115.190.241.26 '
systemctl is-enabled pm2-agent.service
systemctl is-active pm2-agent.service
'
正常结果分别为 enabled 和 active。手工新增、删除或修改 PM2 应用后,必须执行:
/opt/node-v22.22.1-linux-x64/bin/pm2 save
Nginx 反向代理
Nginx 配置文件为:
/etc/nginx/sites-available/docs-hkgai.mooschh.com
/etc/nginx/sites-enabled/docs-hkgai.mooschh.com
域名的 HTTP 请求会跳转到 HTTPS,HTTPS 请求代理到 127.0.0.1:9001。修改 Nginx 后先检查再重载:
sudo nginx -t
sudo systemctl reload nginx
证书由服务器现有的 acme.sh 任务管理,不要把证书私钥复制到项目或提交到 Git。
模型探测结果数据
模型可用性测试和脱敏调试摘要保存在:
/data/AIBox/HkgaiModels/data/model-probes.sqlite
该目录已加入 .gitignore,执行 git pull、npm ci 或重新构建时不要删除 data/。如果迁移服务器,需单独备份并恢复这个 SQLite 文件;恢复后重启 PM2 即可继续读取历史测试时间和结果。
常见处理
| 情况 | 处理 |
|---|---|
| 页面打不开 | 检查 $PM2 status、ss -ltnp | grep :9001 和 Nginx 日志。 |
| 页面正常但模型不可用 | 检查服务器 .env 是否存在、/api/config 的 hasApiKey,再确认 Key 权限。 |
| 更新后代码未生效 | 确认 git pull 成功、npm run build 成功,再执行 PM2 重启。 |
| 重启服务器后应用未恢复 | 检查 systemctl status pm2-agent.service,并执行 $PM2 resurrect 或重新 pm2 save。 |