- 从 main 获取 single_uniapp22miao 子项目 - dart-sass: /deep/ -> ::v-deep,calc 运算符加空格 - DEPLOY.md 采用 shccd159 版本(4 子项目架构说明) Made-with: Cursor
5.6 KiB
5.6 KiB
打包与部署说明
本文档说明项目的 4 个子项目 如何单独或组合打包部署。2 个 jar 包 分别对应 2 个前端,可独立执行编译、打包、部署。
一、架构概览
2 个 jar 包 ↔ 2 个前端
| jar 包 | 对应前端 | 说明 |
|---|---|---|
| miao-admin-2.2.jar | frontend(admin 后台 Vue) |
管理后台 API + 后台静态站点 |
| miao-front-2.2.jar | single_uniapp22miao(用户端 H5/uni-app) |
积分商城、用户端 API |
4 个子项目(可单独打包部署)
| 子项目 | 产出 | 打包命令 | 说明 |
|---|---|---|---|
| crmeb-admin | miao-admin-2.2.jar |
mvn clean package -pl crmeb-admin -am -DskipTests |
管理后台后端 |
| crmeb-front | miao-front-2.2.jar |
mvn clean package -pl crmeb-front -am -DskipTests |
用户端 API |
| frontend | frontend/dist |
npm run build:prod |
管理后台前端静态 |
| single_uniapp22miao | single_uniapp22miao/unpackage/dist/build/h5 |
npm run build:h5 |
用户端 H5 静态 |
二、部署配置(deploy.conf)
配置位于 backend/deploy.conf,按段落区分环境(by80、miao50、shjjy153 等)。
通用变量
| 变量 | 说明 | 示例 |
|---|---|---|
SERVER_HOST |
服务器 IP | 123.56.214.80 |
SERVER_USER |
SSH 用户 | root |
SERVER_PORT |
SSH 端口 | 22 |
REMOTE_DIR_JAR |
jar 上传目录(两个 jar 可同目录) | /www/wwwroot/crmeb |
REMOTE_DIR_ADMIN |
admin 后台静态站点目录 | /www/wwwroot/jfadmin.bosenyuan.com |
REMOTE_DIR_FRONT |
用户端 H5 静态站点目录(部分环境有) | /www/wwwroot/jjy-jf.fwxgpt.com |
FRONT_JAR_NAME |
用户端 jar 文件名 | miao-front-2.2.jar |
ADMIN_JAR_NAME |
管理后台 jar 文件名 | miao-admin-2.2.jar |
FRONT_LOCAL_PORT |
用户端 API 端口 | 30031 |
ADMIN_LOCAL_PORT |
管理后台 API 端口 | 30032 |
环境示例(deploy.conf)
- by80:
REMOTE_DIR_JAR、REMOTE_DIR_ADMIN,profile=miao80 - miao50:
REMOTE_DIR(jar 目录),profile=miao50 - shjjy153:
REMOTE_DIR_JAR、REMOTE_DIR_ADMIN、REMOTE_DIR_FRONT,profile=shjjy153
三、单独打包(4 个子项目)
1. 仅打包 crmeb-admin(miao-admin-2.2.jar)
cd backend
mvn clean package -pl crmeb-admin -am -DskipTests
# 产出:backend/crmeb-admin/target/miao-admin-2.2.jar
2. 仅打包 crmeb-front(miao-front-2.2.jar)
cd backend
mvn clean package -pl crmeb-front -am -DskipTests
# 产出:backend/crmeb-front/target/miao-front-2.2.jar
3. 仅打包 admin 后台前端(frontend)
cd frontend
export NODE_OPTIONS="${NODE_OPTIONS:-} --openssl-legacy-provider" # Node 17+ 需要
npm run build:prod
# 产出:frontend/dist
4. 仅打包用户端 H5 前端(single_uniapp22miao)
cd single_uniapp22miao
npm run build:h5
# 产出:single_uniapp22miao/unpackage/dist/build/h5
四、单独启动(本机)
启动 miao-admin(管理后台 API)
cd backend
nohup java -jar crmeb-admin/target/miao-admin-2.2.jar \
--spring.profiles.active=miao80 \
--server.port=30032 > admin.log 2>&1 &
启动 miao-front(用户端 API)
cd backend
./shell/start-front-miao33.sh # 使用 miao33 配置,端口 30031
# 或指定 profile:
nohup java -jar crmeb-front/target/miao-front-2.2.jar \
--spring.profiles.active=miao33 > front-miao33.log 2>&1 &
五、by80 环境一键部署(admin 后台)
部署目标:miao-admin-2.2.jar + admin 后台静态,上传到 by80 配置的服务器。
1. 配置 SSH 免密(一次性)
ssh-copy-id -i ~/.ssh/id_ed25519_crmeb_deploy.pub root@123.56.214.80
2. 执行部署脚本
cd backend
./shell/deploy-admin-by80.sh
使用其他密钥:SSH_IDENTITY=~/.ssh/你的私钥 ./shell/deploy-admin-by80.sh
3. 脚本执行步骤
| 步骤 | 说明 |
|---|---|
| 1 | 编译 crmeb-admin,生成 miao-admin-2.2.jar |
| 2 | 编译 frontend,生成 dist |
| 3 | 远程备份原有 jar 与后台静态 |
| 4 | 上传 miao-admin-2.2.jar 到 REMOTE_DIR_JAR |
| 5 | 上传 frontend/dist 到 REMOTE_DIR_ADMIN |
| 6 | 远程重启 admin 服务(profile=miao80, port=30032) |
六、其他环境
- miao50:使用
./shell/deploy-admin-miao50.sh,逻辑类似,配置来自 deploy.conf 中 miao50 段。 - shjjy153:deploy.conf 中配置了
REMOTE_DIR_FRONT,可扩展脚本上传 single_uniapp22miao 的 H5 构建产物到该目录。
七、远程服务器手动重启
重启 admin(miao-admin-2.2.jar)
ssh root@<SERVER_HOST>
cd /www/wwwroot/crmeb # 或 REMOTE_DIR_JAR
pkill -f miao-admin-2.2.jar || true
sleep 2
nohup java -Xms128m -Xmx200m -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 已启动"
重启 front(miao-front-2.2.jar)
ssh root@<SERVER_HOST>
cd /www/wwwroot/crmeb # 或 REMOTE_DIR_JAR
pkill -f miao-front-2.2.jar || true
sleep 2
nohup java -Xms128m -Xmx200m -jar miao-front-2.2.jar --spring.profiles.active=miao33 --server.port=30031 > front.log 2>&1 &
pgrep -f miao-front-2.2.jar && echo "Front 已启动"
八、故障排查
- SSH Permission denied:检查
ssh-copy-id是否成功,或指定正确SSH_IDENTITY。 - 前端构建 OpenSSL 报错:设置
export NODE_OPTIONS="--openssl-legacy-provider"。 - jar 未启动:SSH 登录查看对应 log 文件及
pgrep -f <jar名>。