mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-21 22:53:56 +08:00
udpate:更新文档
This commit is contained in:
@@ -0,0 +1,163 @@
|
||||
# 全模块源码部署自动升级方法
|
||||
|
||||
本教程是方便全模块源码部署的爱好者,如何通过自动命令,自动拉取源码,自动编译,自动启动端口运行。实现最高效率的升级系统。
|
||||
|
||||
本项目的测试平台`https://2662r3426b.vicp.fun`,从开放以来就使用了该方法,效果良好。
|
||||
|
||||
# 开始条件
|
||||
- 你的电脑/服务器是linux操作系统
|
||||
- 你已经跑通了整个流程
|
||||
- 你喜欢跟进最新功能,但是觉得每次手动部署有点麻烦,期待有一个自动更新的方法
|
||||
|
||||
第二个条件必须满足,因为本教程所涉及的某些文件,JDK、Node.js环境、Conda环境等,是需要你跑通整个流程才有的,如果你没有跑通,当我讲到某个文件的时候,你可能就不知道什么意思。
|
||||
|
||||
# 教程效果
|
||||
- 解决国内不能拉取最新项目源码问题
|
||||
- 自动拉取代码编译前端文件
|
||||
- 自动拉取代码编译java文件,自动杀掉8002端口,自动启动8002端口
|
||||
- 自动拉取python代码,自动杀掉8000端口,自动启动8000端口
|
||||
|
||||
# 第一步 选好你的项目目录
|
||||
|
||||
例如,我规划了我的项目目录是,这是一个新建的空白的目录,如果你不想出错,可以和我一样
|
||||
```
|
||||
/home/system/xiaozhi
|
||||
```
|
||||
|
||||
# 第二步 克隆本项目
|
||||
此刻,先要执行第一句话,拉取源码,这句命令适用于国内网络的服务器和电脑,无需翻墙
|
||||
|
||||
```
|
||||
cd /home/system/xiaozhi
|
||||
git clone https://ghproxy.net/https://github.com/xinnan-tech/xiaozhi-esp32-server.git
|
||||
```
|
||||
|
||||
执行完后,你的项目目录会多了一个文件夹`xiaozhi-esp32-server`,这个就是项目的源码
|
||||
|
||||
# 第三步 复制基础的文件
|
||||
|
||||
如果你之前已经跑通了整个流程,对funasr的模型文件`xiaozhi-server/models/SenseVoiceSmall/model.pt`和你的私有配置文件`xiaozhi-server/data/.config.yaml`这两个文件不会陌生。
|
||||
|
||||
此刻你需要把`model.pt`文件复制到新的目录去,你可以这样
|
||||
```
|
||||
cp 你原来的.config.yaml完整路径 /home/system/xiaozhi/xiaozhi-esp32-server/main/xiaozhi-server/data/.config.yaml
|
||||
cp 你原来的model.pt完整路径 /home/system/xiaozhi/xiaozhi-esp32-server/main/xiaozhi-server/models/SenseVoiceSmall/model.pt
|
||||
```
|
||||
|
||||
# 第四步 建立三个自动编译文件
|
||||
|
||||
## 4.1 自动编译mananger-web模块
|
||||
在`/home/system/xiaozhi/`目录下,创建名字为`update_8001.sh`的文件,内容如下
|
||||
|
||||
```
|
||||
cd /home/system/xiaozhi/xiaozhi-esp32-server
|
||||
git fetch --all
|
||||
git reset --hard
|
||||
git pull origin main
|
||||
|
||||
|
||||
cd /home/system/xiaozhi/xiaozhi-esp32-server/main/manager-web
|
||||
npm install
|
||||
npm run build
|
||||
rm -rf /home/system/xiaozhi/manager-web
|
||||
mv /home/system/xiaozhi/xiaozhi-esp32-server/main/manager-web/dist /home/system/xiaozhi/manager-web
|
||||
```
|
||||
|
||||
保存好后执行赋权命令
|
||||
```
|
||||
chmod 777 update_8001.sh
|
||||
```
|
||||
执行完后,继续往下
|
||||
|
||||
## 4.2 自动编译运行manager-api模块
|
||||
在`/home/system/xiaozhi/`目录下,创建名字为`update_8002.sh`的文件,内容如下
|
||||
|
||||
```
|
||||
cd /home/system/xiaozhi/xiaozhi-esp32-server
|
||||
git pull origin main
|
||||
|
||||
|
||||
cd /home/system/xiaozhi/xiaozhi-esp32-server/main/manager-api
|
||||
rm -rf target
|
||||
mvn clean package -Dmaven.test.skip=true
|
||||
cd /home/system/xiaozhi/
|
||||
|
||||
# 查找占用8002端口的进程号
|
||||
PID=$(sudo netstat -tulnp | grep 8002 | awk '{print $7}' | cut -d'/' -f1)
|
||||
|
||||
rm -rf /home/system/xiaozhi/xiaozhi-esp32-api.jar
|
||||
mv /home/system/xiaozhi/xiaozhi-esp32-server/main/manager-api/target/xiaozhi-esp32-api.jar /home/system/xiaozhi/xiaozhi-esp32-api.jar
|
||||
|
||||
# 检查是否找到进程号
|
||||
if [ -z "$PID" ]; then
|
||||
echo "没有找到占用8002端口的进程"
|
||||
else
|
||||
echo "找到占用8002端口的进程,进程号为: $PID"
|
||||
# 杀掉进程
|
||||
kill -9 $PID
|
||||
kill -9 $PID
|
||||
echo "已杀掉进程 $PID"
|
||||
fi
|
||||
|
||||
nohup java -jar xiaozhi-esp32-api.jar --spring.profiles.active=dev &
|
||||
```
|
||||
|
||||
保存好后执行赋权命令
|
||||
```
|
||||
chmod 777 update_8002.sh
|
||||
```
|
||||
执行完后,继续往下
|
||||
|
||||
## 4.3 自动编译运行Python项目
|
||||
在`/home/system/xiaozhi/`目录下,创建名字为`update_8000.sh`的文件,内容如下
|
||||
|
||||
```
|
||||
cd /home/system/xiaozhi/xiaozhi-esp32-server
|
||||
git pull origin main
|
||||
|
||||
# 查找占用8000端口的进程号
|
||||
PID=$(sudo netstat -tulnp | grep 8000 | awk '{print $7}' | cut -d'/' -f1)
|
||||
|
||||
# 检查是否找到进程号
|
||||
if [ -z "$PID" ]; then
|
||||
echo "没有找到占用8000端口的进程"
|
||||
else
|
||||
echo "找到占用8000端口的进程,进程号为: $PID"
|
||||
# 杀掉进程
|
||||
kill -9 $PID
|
||||
kill -9 $PID
|
||||
echo "已杀掉进程 $PID"
|
||||
fi
|
||||
cd main/xiaozhi-server
|
||||
pip install -r requirements.txt
|
||||
nohup python app.py >/dev/null &
|
||||
```
|
||||
|
||||
保存好后执行赋权命令
|
||||
```
|
||||
chmod 777 update_8000.sh
|
||||
```
|
||||
执行完后,继续往下
|
||||
|
||||
# 日常更新
|
||||
|
||||
以上的脚本都建立好后,日常更新,我们只要依次执行以下命令就可以做到自动更新和启动
|
||||
|
||||
```
|
||||
# 进入pyhton环境
|
||||
conda activate xiaozhi-esp32-server
|
||||
cd /home/system/xiaozhi
|
||||
# 更新并启动Java程序
|
||||
./update_8001.sh
|
||||
# 更新web程序
|
||||
./update_8002.sh
|
||||
# 更新并启动python程序
|
||||
./update_8000.sh
|
||||
# 查看Java日志
|
||||
tail -f nohup.out
|
||||
# 查看Python日志
|
||||
tail -f /home/system/xiaozhi/xiaozhi-esp32-server/main/xiaozhi-server/tmp/server.log
|
||||
```
|
||||
|
||||
# 注意事项
|
||||
测试平台`https://2662r3426b.vicp.fun`,是使用nginx做了反向代理。nginx.conf详细配置可以[参考这里](https://github.com/xinnan-tech/xiaozhi-esp32-server/issues/791)
|
||||
Reference in New Issue
Block a user