Files
integral-shop/backend/DEPLOY.md
apple daa1c54cc0 by80: 部署文档与脚本、配置更新
- backend/DEPLOY.md: 打包与自动部署说明(by80/miao80)
- backend/shell/deploy-admin-by80.sh: 一键编译+备份+上传+重启(tar 上传前端)
- frontend/DEPLOY.md: 前端打包与自动部署发布说明
- deploy.conf / .env 配置更新

Made-with: Cursor
2026-03-12 16:51:44 +08:00

126 lines
4.7 KiB
Markdown
Raw 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.
# 打包与自动部署说明
本文档说明如何编译、打包并自动部署 **admin 后端miao-admin-2.2.jar****admin 后台前端** 到远程服务器(含备份后上传、重启)。
---
## 一、环境与前置条件
- **本机**:已安装 JDK 8、Maven、Node.js、npm项目根目录为 `single-shop-22`,其下包含 `backend``frontend`
- **SSH 免密**:已配置本机到目标服务器的 SSH 公钥(推荐使用 `id_ed25519_crmeb_deploy`,或通过环境变量指定密钥)。
- **部署配置**`backend/deploy.conf` 中配置了各环境(如 by80、miao50的服务器地址、目录、jar 名等。
---
## 二、by80 环境一键部署(推荐)
部署目标Spring Profile **miao80**,产出 **miao-admin-2.2.jar** + admin 后台静态,上传到 by80 配置的服务器。
### 1. 配置 SSH 免密(一次性)
在项目外任意目录执行(将 `root``123.56.214.80` 换成实际用户与主机):
```bash
ssh-copy-id -i ~/.ssh/id_ed25519_crmeb_deploy.pub root@123.56.214.80
```
提示输入 **远程服务器 root 密码**(不要用 `sudo`,否则会提示的是本机密码)。成功后即可免密 SSH/SCP。
### 2. 执行自动部署脚本
**backend 目录** 下执行:
```bash
cd /path/to/single-shop-22/backend
./shell/deploy-admin-by80.sh
```
使用其他密钥时:
```bash
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. 编译前端 | 在 `frontend` 目录执行 `npm run build:prod`(带 Node 17+ OpenSSL 兼容),生成 `frontend/dist` |
| 3. 远程备份 | 备份远程已有 jar 到 `REMOTE_DIR_JAR/backups/`,后台静态打包为 `jfadmin_backup_yyyyMMdd_HHmmss.tar.gz` |
| 4. 上传 jar | 将 `miao-admin-2.2.jar` 上传到 `REMOTE_DIR_JAR`by80 默认 `/www/wwwroot/crmeb` |
| 5. 上传后台静态 | 将 `frontend/dist` 通过 tar 管道上传到 `REMOTE_DIR_ADMIN`by80 默认 `/www/wwwroot/jfadmin.bosenyuan.com` |
| 6. 远程重启 | 在远程执行 `pkill -f miao-admin-2.2.jar` 后使用 `--spring.profiles.active=miao80``--server.port=30032` 启动 jar |
---
## 三、部署配置deploy.conf
配置位于 **backend/deploy.conf**,按段落区分环境(如 by80、miao50。by80 段示例:
- `SERVER_HOST`:服务器 IP如 123.56.214.80
- `SERVER_USER`SSH 用户(如 root
- `SERVER_PORT`SSH 端口(如 22
- `REMOTE_DIR_JAR`jar 上传目录(如 /www/wwwroot/crmeb
- `REMOTE_DIR_ADMIN`admin 后台静态站点目录(如 /www/wwwroot/jfadmin.bosenyuan.com
- `ADMIN_JAR_NAME`admin jar 文件名(如 miao-admin-2.2.jar
- `ADMIN_LOCAL_PORT`admin 服务端口(如 30032
修改后无需改脚本,脚本会从该文件读取对应段配置。
---
## 四、仅编译/打包(不部署)
### 仅后端miao-admin-2.2.jar
```bash
cd backend
mvn clean package -pl crmeb-admin -am -DskipTests
# 产出backend/crmeb-admin/target/miao-admin-2.2.jar
```
运行时指定 profile`java -jar miao-admin-2.2.jar --spring.profiles.active=miao80 --server.port=30032`
### 仅前端admin 后台)
```bash
cd frontend
export NODE_OPTIONS="${NODE_OPTIONS:-} --openssl-legacy-provider" # Node 17+ 需要
npm run build:prod
# 产出frontend/dist
```
---
## 五、远程服务器上手动重启 admin
若自动重启未生效,可 SSH 登录后手动操作:
```bash
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
```
---
## 六、其他环境(如 miao50
miao50 使用脚本 **backend/shell/deploy-admin-miao50.sh**,逻辑类似:编译 admin、上传 jar、远程重启profile=miao50。配置来自 deploy.conf 中 miao50 段。若需同时部署前端静态,可参考 by80 脚本在 miao50 脚本中增加备份与上传 `frontend/dist` 的步骤。
---
## 七、故障排查
- **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.log``pgrep -f miao-admin-2.2.jar`