187 lines
4.6 KiB
Markdown
187 lines
4.6 KiB
Markdown
# 小智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月* |