Files
integral-shop/backend/DEPLOY.md
2026-03-19 17:24:15 +08:00

239 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 打包与部署说明
本文档说明项目的 **4 个子项目** 如何单独或组合打包部署。**2 个 jar 包** 分别对应 **2 个前端**,可独立执行编译、打包、部署。
---
## 一、架构概览
### 2 个 jar 包 ↔ 2 个前端
| jar 包 | 对应前端 | 说明 |
|--------|----------|------|
| **miao-admin-2.2.jar** | `backend-adminend`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 |
| **backend-adminend** | `backend-adminend/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-adminmiao-admin-2.2.jar
```bash
cd backend
mvn clean package -pl crmeb-admin -am -DskipTests
# 产出backend/crmeb-admin/target/miao-admin-2.2.jar
```
### 2. 仅打包 crmeb-frontmiao-front-2.2.jar
```bash
cd backend
mvn clean package -pl crmeb-front -am -DskipTests
# 产出backend/crmeb-front/target/miao-front-2.2.jar
```
### 3. 仅打包 admin 后台前端backend-adminend
```bash
cd backend-adminend
export NODE_OPTIONS="${NODE_OPTIONS:-} --openssl-legacy-provider" # Node 17+ 需要
npm run build:prod
# backend-adminend/dist
```
### 4. 仅打包用户端 H5 前端single_uniapp22miao
```bash
cd single_uniapp22miao
npm run build:h5
# 产出single_uniapp22miao/unpackage/dist/build/h5
```
---
## 四、单独启动(本机)
### 启动 miao-admin管理后台 API
```bash
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
```bash
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 免密(一次性)
```bash
ssh-copy-id -i ~/.ssh/id_ed25519_crmeb_deploy.pub root@123.56.214.80
```
### 2. 执行部署脚本
```bash
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 | 编译 backend-adminend生成 dist |
| 3 | 远程备份原有 jar 与后台静态 |
| 4 | 上传 miao-admin-2.2.jar 到 REMOTE_DIR_JAR |
| 5 | 上传 backend-adminend/dist 到 REMOTE_DIR_ADMIN |
| 6 | 远程重启 admin 服务profile=miao80, port=30032 |
---
## 六、部署 miao-front用户端 API
### shccd159 环境
```bash
cd backend
./shell/deploy-front-shccd159.sh
```
脚本步骤:编译 crmeb-front → **云服务器备份原有 jar** → 上传 jar → 远程重启。
使用其他密钥:`SSH_IDENTITY=~/.ssh/你的私钥 ./shell/deploy-front-shccd159.sh`
**前置条件**:配置 SSH 免密,例如:
```bash
ssh-copy-id -i ~/.ssh/id_ed25519_crmeb_deploy.pub root@182.92.78.159
```
---
## 七、shjjy153 环境 admin 部署(可拆分)
shjjy153 支持 admin 全量部署,也可**单独部署 API 或 Vue 前端**。
### 1. 全量部署API + Vue
```bash
cd backend
./shell/deploy-admin-shjjy153.sh
```
依次执行 `deploy-admin-api-shjjy153.sh``deploy-admin-vue-shjjy153.sh`
### 2. 仅部署 miao-admin APImiao-admin-2.2.jar
```bash
cd backend
./shell/deploy-admin-api-shjjy153.sh
```
步骤:编译 crmeb-admin → 云服务器备份 jar → 上传 jar → 远程重启 admin 服务。
### 3. 仅部署 backend-adminendVue 前端)
```bash
cd backend
./shell/deploy-admin-vue-shjjy153.sh
```
步骤:编译 backend-adminend → 云服务器备份静态 → 上传 dist 到 REMOTE_DIR_ADMIN。
使用其他密钥:`SSH_IDENTITY=~/.ssh/你的私钥 ./shell/deploy-admin-api-shjjy153.sh`
---
## 八、其他环境
- **miao50**:使用 `./shell/deploy-admin-miao50.sh`,逻辑类似,配置来自 deploy.conf 中 miao50 段。
- **shjjy153**deploy.conf 中配置了 `REMOTE_DIR_FRONT`,可扩展脚本上传 single_uniapp22miao 的 H5 构建产物到该目录。
---
## 九、远程服务器手动重启
### 重启 adminmiao-admin-2.2.jar
```bash
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 已启动"
```
### 重启 frontmiao-front-2.2.jar
```bash
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名>`