Files
server/docs/deploy-springboot.md
2025-11-02 19:34:16 +08:00

187 lines
4.6 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.
# 小智ESP32服务器部署脚本说明
本项目提供两个自动化部署脚本用于快速部署后端Java服务和前端Web应用。
## deploy-java.sh - 后端服务部署脚本
### 核心功能
自动化部署Spring Boot后端服务实现智能进程管理和无缝服务重启。
### 主要特性
- **智能JAR文件发现**: 自动在`target`目录中查找最新的JAR文件排除`.original`文件)
- **灵活进程匹配**: 使用应用名称前缀JAR文件名中"-"之前的部分)匹配进程,支持不同版本的应用
- **优雅停止机制**: 先尝试正常终止进程,如果失败则强制杀死进程
- **后台启动**: 使用`nohup`在后台启动服务,输出日志到`output.log`
- **启动状态检查**: 自动验证服务是否成功启动
### 使用方法
```bash
# 给脚本执行权限
chmod +x deploy-java.sh
# 执行部署
./deploy-java.sh
```
### 执行流程
1.`target`目录中查找JAR文件
2. 提取应用名称前缀用于进程匹配
3. 查找并停止正在运行的相关进程
4. 启动新的服务实例
5. 验证服务启动状态
### 前置条件
- 项目已通过`mvn clean package`构建完成
- `target`目录中存在可执行的JAR文件
---
## deploy-web.sh - 前端应用部署脚本
### 核心功能
自动化构建和部署Vue.js前端应用实现安全的生产环境更新。
### 主要特性
- **自动构建**: 执行`npm run build`构建生产版本
- **安全备份**: 部署前自动备份现有的生产文件到`/tmp/dist_backup`
- **无缝部署**: 将新构建的文件部署到`/var/www/html/dist`
- **Nginx重载**: 自动测试和重载Nginx配置确保服务连续性
### 使用方法
```bash
# 给脚本执行权限
chmod +x deploy-web.sh
# 执行部署
./deploy-web.sh
```
### 执行流程
1. 进入`web`目录
2. 执行`npm run build`构建前端应用
3. 备份现有的部署文件(如果存在)
4. 将新构建的文件移动到生产目录
5. 测试并重载Nginx配置
### 前置条件
- Node.js和npm已正确安装
- `web`目录中的依赖包已安装(`npm install`
- Nginx服务正在运行
- 具有`/var/www/html`目录的写入权限
---
## stop-java.sh - 后端服务停止脚本
### 核心功能
安全停止Spring Boot后端服务提供优雅的服务关闭机制。
### 主要特性
- **智能进程查找**: 自动查找target目录中的JAR文件或通过xiaozhi关键字匹配进程
- **优雅停止机制**: 先发送TERM信号优雅停止失败后强制杀死进程
- **PID文件清理**: 自动清理可能存在的PID文件
- **详细状态反馈**: 提供完整的停止过程信息
### 使用方法
```bash
# 停止后端服务
./stop-java.sh
```
### 执行流程
1. 查找target目录中的JAR文件
2. 根据JAR文件名或xiaozhi关键字查找运行中的进程
3. 优雅停止进程发送TERM信号
4. 如果优雅停止失败,强制杀死进程
5. 清理PID文件
---
## stop-web.sh - 前端服务停止脚本
### 核心功能
停止Web前端服务保持Nginx运行状态提供服务维护页面。
### 主要特性
- **安全备份**: 停止前自动备份现有的Web服务文件
- **维护页面**: 自动创建友好的维护页面
- **保持Nginx**: 不停止Nginx服务只清理Web应用文件
- **状态检查**: 检查Nginx运行状态并提供相应提示
### 使用方法
```bash
# 停止前端服务
./stop-web.sh
```
### 执行流程
1. 检查Web服务目录是否存在
2. 备份当前的Web服务文件到临时目录
3. 清理Web服务目录中的所有文件
4. 创建维护页面
5. 检查Nginx状态不停止Nginx
---
## 快速部署
### 完整部署流程
```bash
# 1. 构建后端项目
mvn clean package -DskipTests
# 2. 部署后端服务
./deploy-java.sh
# 3. 部署前端应用
./deploy-web.sh
```
### 服务管理
```bash
# 停止后端服务
./stop-java.sh
# 停止前端服务保持Nginx运行
./stop-web.sh
# 重新部署后端
./stop-java.sh && ./deploy-java.sh
# 重新部署前端
./stop-web.sh && ./deploy-web.sh
```
### 服务验证
```bash
# 检查后端服务状态
ps -ef | grep xiaozhi
# 检查前端部署
ls -la /var/www/html/dist
# 查看后端服务日志
tail -f output.log
# 检查Nginx状态
nginx -t && systemctl status nginx
```
### 故障排除
```bash
# 如果后端服务无法停止
ps -ef | grep java | grep xiaozhi
kill -9 <PID>
# 如果前端服务异常
ls -la /tmp/web_backup_* # 查看备份文件
cp -r /tmp/web_backup_<timestamp>/dist/* /var/www/html/dist/ # 恢复备份
# 检查端口占用
netstat -tlnp | grep :8091 # 后端端口
netstat -tlnp | grep :80 # 前端端口
```
---
*最后更新: 2024年12月*