Files
karuo-ai/01_卡资(金)/金仓_存储备份/服务器管理/references/宝塔Node项目管理_SKILL.md

8.6 KiB
Raw Blame History

宝塔 Node 项目管理 Skill独立

统一管理所有宝塔服务器的 Node 项目。仅使用宝塔 Node 接口,禁用 PM2。本 Skill 集中存放凭证、常见错误与处理、脚本路径。


一、凭证速查(三台宝塔)

1.1 SSH

服务器 IP SSH 端口 账号 密码/密钥 备注
kr宝塔 43.139.27.93 22022 或 22 root Zhiqun1984大写 Z或 id_ed25519 密码用小写会失败
存客宝 42.194.245.239 22022 root Zhiqun1984 同 kr宝塔
本机 Docker 宝塔 127.0.0.1 22 - - 本地 Docker 容器

ckb 为宝塔面板登录账号,SSH 需用 root。详见 references/SSH登录方式与故障排查.md

SSH 连接示例

# 方式一:密钥(推荐)
ssh -p 22022 -o StrictHostKeyChecking=no -i "/Users/karuo/Documents/开发/4、小工具/服务器管理/Steam/id_ed25519" root@43.139.27.93

# 方式二:密码(注意 Z 大写)
sshpass -p 'Zhiqun1984' ssh -p 22022 -o StrictHostKeyChecking=no -o PubkeyAuthentication=no root@43.139.27.93

# 方式三:封装脚本(自动尝试多种方式)
bash scripts/kr宝塔_SSH登录.sh "whoami"

1.2 宝塔面板登录

  • 账号ckb
  • 密码zhiqun1984

1.3 宝塔 API 密钥

服务器 面板地址 API 密钥
kr宝塔 https://43.139.27.93:9988 qcWubCdlfFjS2b2DMT1lzPFaDfmv1cBT
存客宝 https://42.194.245.239:9988 TNKjqDv5N1QLOU20gcmGVgr82Z4mXzRi
本机 Docker http://127.0.0.1:8888/btpanel 面板内查看

API 白名单:若本机调用 API 报「IP校验失败」须到对应面板 设置 → API 接口 将本机公网 IP 加入白名单。当前常见 IP211.156.84.135、211.156.92.72、140.245.37.56。


二、宝塔 Node API仅用此禁用 PM2

2.1 接口列表

接口 说明 参数
/project/nodejs/get_project_list 获取 Node 项目列表
/project/nodejs/start_project 启动项目 project_name
/project/nodejs/stop_project 停止项目 project_name
/project/nodejs/restart_project 重启项目 project_name

2.2 签名算法Python

import time, hashlib
def sign(api_key):
    t = int(time.time())
    s = str(t) + hashlib.md5(api_key.encode()).hexdigest()
    return {"request_time": t, "request_token": hashlib.md5(s.encode()).hexdigest()}

每次 POST 须携带 request_timerequest_token,并与业务参数一并提交。

2.3 本机调用 API 示例kr宝塔

python3 "01_卡资/金仓_存储备份/服务器管理/scripts/kr宝塔_宝塔API_修复502.py"

需本机 IP 已加入 kr宝塔 API 白名单。


三、脚本与执行方式

3.1 批量启动/修复 Node 项目kr宝塔

脚本scripts/kr宝塔_node项目批量修复.py

说明:在服务器上调用 127.0.0.1:9988 宝塔 API对本机 Node 项目逐项 stop → 清端口/清 pid → start。

执行:必须在 kr宝塔 服务器内 执行(本地无法直连 127.0.0.1:9988

# 方式一SSH 管道执行(账号 ckb密码 zhiqun1984端口 22022
sshpass -p 'zhiqun1984' ssh -p 22022 -o StrictHostKeyChecking=no ckb@43.139.27.93 'python3 -' < "01_卡资/金仓_存储备份/服务器管理/scripts/kr宝塔_node项目批量修复.py"

# 方式二宝塔面板终端SSH 不可用时)
# 详见 references/宝塔面板终端_Node批量启动指南.md
# 在 宝塔面板 → 终端 复制粘贴文档中的 cat > /tmp/... 整段命令执行即可

SSH 风控:若出现 Connection closed by remote hostPermission denied,优先用 宝塔面板 → 终端 执行,减少 SSH 连接次数。

3.2 宝塔 API 批量启动(以界面真实状态为准)

脚本scripts/kr宝塔_宝塔API_Node批量启动.py

说明:通过宝塔 API 获取 Node 项目列表(界面显示即真实运行状态),对 run=False 项目执行 stop → start。

python3 "01_卡资/金仓_存储备份/服务器管理/scripts/kr宝塔_宝塔API_Node批量启动.py"

前置:本机公网 IP 已加入 kr宝塔 设置 → API 接口 白名单。否则报「IP校验失败」。

3.3 word/ai_hair/is_phone 诊断修复(宝塔 API + TAT

脚本scripts/腾讯云_TAT_word_ai_hair_is_phone_诊断修复.py

执行:通过 TAT 在服务器内调用 127.0.0.1 宝塔 API获取项目列表与路径查看启动日志遇 MODULE_NOT_FOUND 则 pnpm install最后 restart_project。

./scripts/.venv_tx/bin/python scripts/腾讯云_TAT_word_ai_hair_is_phone_诊断修复.py

3.4 502 修复kr宝塔

脚本scripts/kr宝塔_宝塔API_修复502.py

执行:在本机执行,通过 HTTPS 调用 kr宝塔 面板 API重启 Nginx 和 soul 相关 Node 项目。

python3 "01_卡资/金仓_存储备份/服务器管理/scripts/kr宝塔_宝塔API_修复502.py"

四、常见错误与处理

4.1 EADDRINUSE端口被占用

现象start_project 返回失败,日志提示端口已被占用。

处理

  1. 在服务器上查端口:ss -tlnp | grep :端口号
  2. 杀掉占用进程:kill -9 <PID>
  3. 清理 pid 文件:/www/server/nodejs/vhost/pids/<项目名>.pid 置空或删
  4. 再次调用 start_project

kr宝塔_node项目批量修复.py 已内置上述逻辑,可自动处理。

4.2 Node 版本不匹配(如 kr_wb 需 Node ≥ 20.9.0

现象:项目启动失败,提示 Node 版本过低。

处理:在宝塔 网站 → Node 项目 → 编辑将「Node 版本」或「启动脚本路径」改为 v22.14.0 等更高版本,保存后重启项目。

4.3 502 Bad Gateway

现象:访问域名返回 502Nginx 正常但上游无响应。

处理

  1. API 方式python3 scripts/kr宝塔_宝塔API_修复502.py(需 API 白名单)
  2. 面板终端nginx -t && nginx -s reload,再在 Node 项目中重启对应站点
  3. 检查项目是否在运行:get_project_listruntruelisten_oktrue

4.4 API 调用「IP 校验失败」

原因:本机 IP 未加入该宝塔的 API 白名单。

处理:到对应面板 设置 → API 接口,将当前公网 IP 加入白名单。

4.5 SSH 风控Connection closed / Permission denied

原因:频繁 SSH 或异常登录触发风控。

处理:优先用宝塔面板终端;或用 ckb/zhiqun1984 直连,端口 22022。

4.6 MODULE_NOT_FOUND如 AITOUFA

现象Error: Cannot find module '/www/wwwroot/ext/tools/AITOUFA'(迁移前为 扩展/小工具Node 把项目根目录当入口执行。

原因:启动命令配置错误,例如写成 node /项目根目录 而非 node server.jsnpm start

处理:宝塔 Node 项目 → 编辑该项目,将启动命令改为:

  • Next.jscd /www/wwwroot/ext/tools/AITOUFA && npm run startpnpm start
  • 或正确的入口:node server.js / node index.js(在项目根目录执行)

4.7 宝塔与 PM2 冲突

规则一律用宝塔 Node 项目管理,禁用独立 PM2

若存在残留 PM2 进程导致端口冲突:

# 在服务器上执行
pm2 kill
# 或停用 PM2 托管项目,释放端口后再用宝塔 start_project

五、各服务器 Skill 引用

  • kr宝塔:见 references/kr宝塔_宝塔管理SKILL.md
  • 存客宝:见 references/存客宝_宝塔管理SKILL.md

六、脚本路径速查

脚本 功能 执行位置
scripts/kr宝塔_node项目批量修复.py 批量 stop→清端口→start Node 项目 服务器内
scripts/腾讯云_TAT_word_ai_hair_is_phone_诊断修复.py word/ai_hair/is_phone 日志+MODULE_NOT_FOUND+restart宝塔 API 本机TAT
scripts/kr宝塔_宝塔API_修复502.py 重启 Nginx + soul 相关 Node 项目 本机API
脚本/快速检查服务器.py 检查多台服务器状态 本机API
scripts/kr宝塔_腾讯云带宽与CPU近24h.py 腾讯云监控数据 本机

七、强制规则

  1. Node 管理:只用宝塔 Node API不用 PM2
  2. 凭证:本 Skill 为唯一权威来源,主 SKILL 仅引用
  3. 错误处理:遇新错误时,在本 Skill 第四节补充,并同步相关服务器 Skill
  4. SSH 频率:能用手动/面板终端完成则减少 SSH 调用