by80: 部署文档与脚本、配置更新
- backend/DEPLOY.md: 打包与自动部署说明(by80/miao80) - backend/shell/deploy-admin-by80.sh: 一键编译+备份+上传+重启(tar 上传前端) - frontend/DEPLOY.md: 前端打包与自动部署发布说明 - deploy.conf / .env 配置更新 Made-with: Cursor
This commit is contained in:
125
backend/DEPLOY.md
Normal file
125
backend/DEPLOY.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# 打包与自动部署说明
|
||||
|
||||
本文档说明如何编译、打包并自动部署 **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`。
|
||||
Reference in New Issue
Block a user