Files
integral-shop/backend/DEPLOY.md
apple 6e1bce929b miao33: 部署脚本、打包前 API 检查、文档与配置
- 新增 backend/shell/deploy-admin-miao33.sh(miao33 一键打包部署)
- deploy.conf 增加 VUE_APP_BASE_API_EXPECTED,miao33/by80 打包前校验前端 API 地址
- deploy-admin-by80.sh / deploy-admin-miao33.sh 增加步骤:检查 .env.production 中 VUE_APP_BASE_API
- backend/DEPLOY.md、frontend/DEPLOY.md 补充 miao33 与 API 检查说明
- frontend/.env.production、frontend/deploy.conf 同步 miao33 配置
- by80 脚本 get_conf 仅解析 by80 段

Made-with: Cursor
2026-03-12 22:00:34 +08:00

7.5 KiB
Raw Blame History

打包与自动部署说明

本文档说明如何编译、打包并自动部署 admin 后端miao-admin-2.2.jaradmin 后台前端 到远程服务器(含备份后上传、重启)。


一、环境与前置条件

  • 本机:已安装 JDK 8、Maven、Node.js、npm项目根目录为 single-shop-22,其下包含 backendfrontend
  • SSH 免密:已配置本机到目标服务器的 SSH 公钥(推荐使用 id_ed25519_crmeb_deploy,或通过环境变量指定密钥)。
  • 部署配置backend/deploy.conf 中配置了各环境(如 by80、miao33、miao50的服务器地址、目录、jar 名等。
  • 前端 API 地址:管理后台前端打包前,需确认 frontend/.env.productionVUE_APP_BASE_API 为本项目接口地址(如 miao33 项目为 http://jfadmin.xiashengjun.comby80 项目为 http://jfadmin.bosenyuan.com)。部署脚本会在打包前自动检查,若与 deploy.conf 中该环境的 VUE_APP_BASE_API_EXPECTED 不一致将拒绝打包并提示修改。

二、miao33 环境一键部署

部署目标Spring Profile miao33,产出 miao-admin-2.2.jar + admin 后台静态,上传到 miao33 配置的服务器(默认 8.152.170.46,站点 jfadmin.xiashengjun.com

1. 配置 SSH 免密(一次性)

ssh-copy-id -i ~/.ssh/id_ed25519_crmeb_deploy.pub root@8.152.170.46

提示输入远程服务器 root 密码(不要用 sudo)。

2. 执行自动部署脚本

backend 目录 下执行:

cd /path/to/single-shop-22/backend
./shell/deploy-admin-miao33.sh

使用其他密钥:SSH_IDENTITY=~/.ssh/你的私钥 ./shell/deploy-admin-miao33.sh

3. 脚本执行步骤

步骤 说明
1. 编译后端 mvn clean package -pl crmeb-admin -am -DskipTests,生成 miao-admin-2.2.jar
2. 检查前端 API 校验 frontend/.env.productionVUE_APP_BASE_API 与 miao33 期望一致(http://jfadmin.xiashengjun.com),否则中止并提示修改
3. 编译前端 frontendnpm run build:prod(含 Node 17+ OpenSSL 兼容),生成 frontend/dist
4. 远程备份 备份已有 jar 到 REMOTE_DIR_JAR/backups/,后台静态打包为 jfadmin_backup_yyyyMMdd_HHmmss.tar.gz
5. 上传 jar 上传 miao-admin-2.2.jarREMOTE_DIR_JAR(默认 /www/wwwroot/crmeb
6. 上传后台静态 frontend/dist 通过 tar 管道上传到 REMOTE_DIR_ADMIN(默认 /www/wwwroot/jfadmin.xiashengjun.com
7. 远程重启 使用 --spring.profiles.active=miao33--server.port=30032 启动 jar

配置来自 deploy.confmiao33 段;VUE_APP_BASE_API_EXPECTED 用于打包前 API 地址校验。修改 SERVER_HOSTREMOTE_DIR_ADMIN 等即可更换目标服务器。


三、by80 环境一键部署

部署目标Spring Profile miao80,产出 miao-admin-2.2.jar + admin 后台静态,上传到 by80 配置的服务器(默认 123.56.214.80,站点 jfadmin.bosenyuan.com

1. 配置 SSH 免密(一次性)

在项目外任意目录执行(将 root123.56.214.80 换成实际用户与主机):

ssh-copy-id -i ~/.ssh/id_ed25519_crmeb_deploy.pub root@123.56.214.80

提示输入 远程服务器 root 密码(不要用 sudo,否则会提示的是本机密码)。成功后即可免密 SSH/SCP。

2. 执行自动部署脚本

backend 目录 下执行:

cd /path/to/single-shop-22/backend
./shell/deploy-admin-by80.sh

使用其他密钥时:

SSH_IDENTITY=~/.ssh/你的私钥 ./shell/deploy-admin-by80.sh

3. 脚本执行步骤

步骤 说明
1. 编译后端 mvn clean package -pl crmeb-admin -am -DskipTests,生成 crmeb-admin/target/miao-admin-2.2.jar
2. 检查前端 API 校验 frontend/.env.productionVUE_APP_BASE_API 与 by80 期望一致(http://jfadmin.bosenyuan.com),否则中止并提示修改
3. 编译前端 frontend 目录执行 npm run build:prod(带 Node 17+ OpenSSL 兼容),生成 frontend/dist
4. 远程备份 备份远程已有 jar 到 REMOTE_DIR_JAR/backups/,后台静态打包为 jfadmin_backup_yyyyMMdd_HHmmss.tar.gz
5. 上传 jar miao-admin-2.2.jar 上传到 REMOTE_DIR_JARby80 默认 /www/wwwroot/crmeb
6. 上传后台静态 frontend/dist 通过 tar 管道上传到 REMOTE_DIR_ADMINby80 默认 /www/wwwroot/jfadmin.bosenyuan.com
7. 远程重启 在远程执行 pkill -f miao-admin-2.2.jar 后使用 --spring.profiles.active=miao80--server.port=30032 启动 jar

四、部署配置deploy.conf

配置位于 backend/deploy.conf,按段落区分环境(如 miao33、by80、miao50。各段示例

  • SERVER_HOST:服务器 IP如 123.56.214.80
  • SERVER_USERSSH 用户(如 root
  • SERVER_PORTSSH 端口(如 22
  • REMOTE_DIR_JARjar 上传目录(如 /www/wwwroot/crmeb
  • REMOTE_DIR_ADMINadmin 后台静态站点目录(如 /www/wwwroot/jfadmin.bosenyuan.com
  • ADMIN_JAR_NAMEadmin jar 文件名(如 miao-admin-2.2.jar
  • ADMIN_LOCAL_PORTadmin 服务端口(如 30032
  • VUE_APP_BASE_API_EXPECTED:该环境期望的前端 API 地址;部署脚本在打包前会检查 frontend/.env.production 中的 VUE_APP_BASE_API 是否与此一致,避免打错项目。

修改后无需改脚本,脚本会从该文件读取对应段配置。


五、仅编译/打包(不部署)

仅后端miao-admin-2.2.jar

cd backend
mvn clean package -pl crmeb-admin -am -DskipTests
# 产出backend/crmeb-admin/target/miao-admin-2.2.jar

运行时指定 profilejava -jar miao-admin-2.2.jar --spring.profiles.active=miao80 --server.port=30032

仅前端admin 后台)

cd frontend
export NODE_OPTIONS="${NODE_OPTIONS:-} --openssl-legacy-provider"   # Node 17+ 需要
npm run build:prod
# 产出frontend/dist

六、远程服务器上手动重启 admin

若自动重启未生效,可 SSH 登录后手动操作:

ssh -i ~/.ssh/id_ed25519_crmeb_deploy root@123.56.214.80

cd /www/wwwroot/crmeb
pkill -f miao-admin-2.2.jar || true
sleep 2
nohup java -jar miao-admin-2.2.jar --spring.profiles.active=miao80 --server.port=30032 > admin.log 2>&1 &

# 检查是否启动
pgrep -f miao-admin-2.2.jar && echo "Admin 已启动" || tail -50 admin.log

七、其他环境

环境 脚本 Profile 说明
miao33 shell/deploy-admin-miao33.sh miao33 打包 jar + 前端,备份、上传、重启(见第二节)
by80 shell/deploy-admin-by80.sh miao80 打包 jar + 前端,备份、上传、重启(见第三节)
miao50 shell/deploy-admin-miao50.sh miao50 仅编译 admin、上传 jar、远程重启若需同时部署前端可参考 miao33/by80 脚本增加备份与上传 frontend/dist

配置均来自 deploy.conf 中对应段miao33、by80、miao50


八、故障排查

  • SSH Permission denied:检查是否已执行 ssh-copy-id,且未使用 sudo;或指定正确 SSH_IDENTITY
  • 前端构建报错 OpenSSL / digital envelope:在运行 npm run build:prod 前设置 export NODE_OPTIONS="--openssl-legacy-provider"(脚本已包含)。
  • 远程找不到 rsync:当前 by80 脚本已改为使用 tar 管道上传前端,不依赖远程 rsync。
  • jar 未启动SSH 登录服务器查看 admin.logpgrep -f miao-admin-2.2.jar