HKGAI Modelhub / 运维

部署与运维

服务器、PM2、Nginx、更新和重启。

部署与运维

当前部署

项目值
服务器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。