Files
MemRelay/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/生产部署与运维踩坑(宝塔-PM2-升级).md
T

2.0 KiB
Raw Blame History

title, type, permalink, stable_id, scope, project_id, memory_type, status, revision, restored_from_commit, created_at, updated_at, tags
title type permalink stable_id scope project_id memory_type status revision restored_from_commit created_at updated_at tags
生产部署与运维踩坑(宝塔/PM2/升级) experience main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/生产部署与运维踩坑宝塔-pm2-升级 2939ce96-a6f6-418a-9a70-568980dbdc2a project d44c219a-0b31-4de1-b160-323eb34a4c6a experience active 1 6a6a895eaf 2026-09-23T15:08:07.372480+00:00 2026-09-23T15:08:07.372574+00:00
production
pm2
baota
upgrade
pitfall
  • 宝塔“Node/PM2 项目”面板不会配置开机自启:只做 pm2 save 不够,服务器重启后应用不在线(2026-09-03 续费重启后发生)。新服务器部署后必须 pm2 startup systemd -u root --hp /root + pm2 save,并检查 systemctl is-enabled pm2-root。resurrect 对在跑应用幂等。
  • 服务器 MySQL 5.7 业务账号无 PROCESS 权限,mysqldump 必须加 --no-tablespaces。
  • 上传到 Linux 的 shell 脚本必须 LF 无 BOM(CRLF 会让 bash 报错);本机 ps1 正文用英文,读远端中文需 [Console]::OutputEncoding = UTF8。
  • 升级包必须解压到线上目录之外;upgrade.sh/ps1 会拒绝根目录/同目录/互相嵌套路径,并校验部署哨兵与包完整性;部署目录勿用 NTFS Junction。
  • 生产包启动报缺 .prisma/client/default:安装依赖后必须在 apps/api 执行 prisma generate(init/upgrade 脚本已包含)。
  • 安装向导建库:宝塔/云 DB 通常已预建库+账号,ensureDatabase 幂等跳过;自建 MySQL 业务账号需建库权限或填管理员账号,不自动 GRANT。
  • 升级模式保留旧 .env,旧部署无 SETTING_ENCRYPTION_KEY 会回退 JWT_SECRET(无回归);Docker/remote 复用 .deploy/deploy-secrets.json 保证密钥稳定,否则旧数据因新随机密码连不上。
  • 历史 appIconUrl 若存 /uploads/... URL,local→OSS 后可能指向旧路径;前端按所在端回退默认图标 /admin/app-icon.svg、/trace/app-icon.svg。