# 小智ESP32服务器CentOS部署文档 ## 系统要求 - CentOS 7/8(推荐CentOS 8) - 最小化安装 + 开发工具(gcc, make等) - 至少2GB内存(推荐4GB) - 至少10GB磁盘空间 ## 1. 环境准备 ### 1.1 安装基础工具 ```bash sudo yum install -y epel-release sudo yum install -y wget curl git vim unzip ``` ### 1.2 配置防火墙 ```bash sudo firewall-cmd --permanent --add-port=8084/tcp sudo firewall-cmd --permanent --add-port=8091/tcp sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload ``` ## 2. 安装Java JDK 8 ```bash sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel ``` 验证安装: ```bash java -version ``` ## 3. 安装MySQL 5.7 ```bash sudo yum localinstall -y https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm sudo yum install -y mysql-community-server ``` 启动MySQL服务: ```bash sudo systemctl start mysqld sudo systemctl enable mysqld ``` 获取临时密码: ```bash sudo grep 'temporary password' /var/log/mysqld.log ``` 安全设置: ```bash sudo mysql_secure_installation ``` ## 4. 安装Maven ```bash sudo yum install -y maven ``` 验证安装: ```bash mvn -v ``` ## 5. 安装Node.js 16 ```bash curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash - sudo yum install -y nodejs ``` 验证安装: ```bash node -v npm -v ``` ## 6. 安装FFmpeg ```bash sudo yum install -y ffmpeg ffmpeg-devel ``` 验证安装: ```bash ffmpeg -version ``` ## 7. 数据库配置 创建数据库和用户: ```sql mysql -u root -p CREATE DATABASE xiaozhi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'xiaozhi'@'localhost' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON xiaozhi.* TO 'xiaozhi'@'localhost'; FLUSH PRIVILEGES; exit ``` 导入初始化脚本: ```bash mysql -u root -p xiaozhi < db/init.sql ``` ## 8. 下载Vosk语音识别模型 ```bash wget https://alphacephei.com/vosk/models/vosk-model-cn-0.22.zip unzip vosk-model-cn-0.22.zip mkdir -p models mv vosk-model-cn-0.22 models/vosk-model ``` ## 9. 项目部署 ### 9.1 克隆项目 ```bash git clone https://github.com/joey-zhou/xiaozhi-esp32-server-java cd xiaozhi-esp32-server-java ``` ### 9.2 后端部署 ```bash mvn clean package -DskipTests java -jar target/xiaozhi.server-1.0.jar & ``` ### 9.3 前端部署 ```bash cd web npm install npm run build ``` ## 10. 配置系统服务(可选) ### 10.1 创建后端服务 编辑服务文件: ```bash sudo vim /etc/systemd/system/xiaozhi.service ``` 添加内容: ``` [Unit] Description=Xiaozhi ESP32 Server After=syslog.target network.target [Service] User=root WorkingDirectory=/path/to/xiaozhi-esp32-server-java ExecStart=/usr/bin/java -jar target/xiaozhi.server-1.0.jar SuccessExitStatus=143 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target ``` 启动服务: ```bash sudo systemctl daemon-reload sudo systemctl start xiaozhi sudo systemctl enable xiaozhi ``` ### 10.2 配置Nginx(可选) ```bash sudo yum install -y nginx sudo vim /etc/nginx/conf.d/xiaozhi.conf ``` 添加配置: ``` server { listen 80; server_name your_domain_or_ip; location / { root /path/to/xiaozhi-esp32-server-java/web/dist; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8091; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 启动Nginx: ```bash sudo systemctl start nginx sudo systemctl enable nginx ``` ## 11. 访问系统 - 直接访问:`http://your_server_ip:8084` - 如果配置了Nginx:`http://your_domain_or_ip` - 默认管理员账号:admin/123456 ## 常见问题解决 1. **MySQL初始化失败** ```bash sudo systemctl restart mysqld mysql_upgrade -u root -p ``` 2. **端口冲突** ```bash netstat -tulnp | grep 8084 kill -9 ``` 3. **Node.js版本问题** ```bash sudo yum remove -y nodejs npm curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo yum install -y nodejs ``` 4. **内存不足** 增加swap空间: ```bash sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab ``` 5. **Vosk模型加载失败** ```bash chmod -R 755 models ``` ## 维护命令 - 查看后端日志: ```bash journalctl -u xiaozhi -f ``` - 更新代码: ```bash git pull origin master mvn clean package -DskipTests sudo systemctl restart xiaozhi ``` - 数据库备份: ```bash mysqldump -u root -p xiaozhi > xiaozhi_backup_$(date +%Y%m%d).sql ``` ## 注意事项 1. **生产环境建议:** - 修改默认密码 - 配置HTTPS - 定期备份数据库 2. **性能优化:** 增加JVM内存: ```bash java -Xms512m -Xmx1024m -jar target/xiaozhi.server-1.0.jar ```