13 KiB
国语教育平台 - 外网服务器部署指南
部署环境: Windows Server + 宝塔面板 + 外网访问 更新日期: 2025-12-09 版本: 1.3.9
📋 部署前准备清单
1. 服务器环境要求
✅ 操作系统: Windows Server(已有)
✅ 面板工具: 宝塔面板(已安装)
✅ Java环境: JDK 1.8+ 或 JDK 11+
✅ 数据库: MySQL 5.7+ 或 MySQL 8.0
✅ 缓存: Redis 6.0+
✅ 网络: 能访问百度云API(语音识别必需)
2. 关键信息收集
需要提前准备的信息:
| 项目 | 说明 | 示例 |
|---|---|---|
| 服务器IP/域名 | 外网可访问的地址 | 123.45.67.89 或 api.example.com |
| 后端端口 | Spring Boot端口 | 30091(建议保持不变) |
| 课件存储路径 | 视频/音频文件存储位置 | D:\wwwroot\study_web\web\profile |
| 数据库地址 | MySQL连接信息 | localhost:3306 |
| Redis地址 | Redis连接信息 | localhost:6379 |
| 百度API密钥 | 语音识别所需 | App ID + API Key + Secret Key |
🔧 步骤1:服务器端配置
1.1 创建目录结构
在服务器上创建以下目录:
# 课件存储目录(必须与application.yml中profile配置一致)
mkdir D:\wwwroot\study_web\web\profile
mkdir D:\wwwroot\study_web\web\profile\upload
# 确保目录有读写权限
icacls D:\wwwroot\study_web\web\profile /grant Everyone:F /T
1.2 修改后端配置文件
编辑 ry-study-admin/src/main/resources/application.yml:
# 项目相关配置
ruoyi:
# 文件路径(⚠️ 重要:必须与服务器实际路径一致)
profile: D:\wwwroot\study_web\web\profile
# 服务器配置
server:
port: 30091 # 保持不变(APP默认使用此端口)
# Spring配置
spring:
# Redis配置
redis:
host: 127.0.0.1 # 如果Redis在本机,使用localhost
port: 6379
password: # 如果Redis设置了密码,填写在这里
# 数据库配置(在application-druid.yml中)
编辑 ry-study-admin/src/main/resources/application-druid.yml:
spring:
datasource:
druid:
master:
url: jdbc:mysql://localhost:3306/ry_study?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root # ⚠️ 修改为实际数据库用户名
password: your_password # ⚠️ 修改为实际数据库密码
1.3 配置百度语音API
百度API配置存储在数据库的 sys_config 表中,需要确保以下配置项存在:
-- 在MySQL中执行,确保百度API配置存在
INSERT INTO sys_config (config_name, config_key, config_value, config_type, create_by, remark)
VALUES
('百度语音AppID', 'baidu.speech.appId', 'your_app_id', 'Y', 'admin', '百度语音识别AppID'),
('百度语音APIKey', 'baidu.speech.apiKey', 'your_api_key', 'Y', 'admin', '百度语音识别API Key'),
('百度语音SecretKey', 'baidu.speech.secretKey', 'your_secret_key', 'Y', 'admin', '百度语音识别Secret Key')
ON DUPLICATE KEY UPDATE config_value = VALUES(config_value);
⚠️ 重要:
- 百度API密钥需要在 百度AI开放平台 申请
- 服务器必须能访问百度云API(测试:
ping aip.baidubce.com)
1.4 宝塔面板部署Java项目
方式A:使用宝塔Java项目管理器(推荐)
-
安装Java环境
- 宝塔面板 → 软件商店 → 搜索"Tomcat" → 安装(会自动安装JDK)
- 或者软件商店 → 搜索"Java项目管理器" → 安装
-
添加Java项目
- 宝塔面板 → 网站 → Java项目
- 项目名称:
ry-study-admin - 项目路径:上传JAR包所在目录
- 项目类型:
Jar - 启动文件:
ry-study-admin.jar - 启动端口:
30091 - 启动命令:
java -jar -Xms512m -Xmx1024m ry-study-admin.jar
-
配置防火墙
- 宝塔面板 → 安全 → 添加端口规则
- 端口:
30091 - 协议:
TCP - 备注:
国语教育平台后端
方式B:手动部署(备选)
-
上传JAR包
# 将编译好的JAR包上传到服务器 # 路径示例:D:\www\java\ry-study-admin.jar -
创建启动脚本 (
start.bat)@echo off title 国语教育平台后端服务 java -jar -Xms512m -Xmx1024m ry-study-admin.jar pause -
创建Windows服务(可选,实现开机自启)
- 使用工具:NSSM (Non-Sucking Service Manager)
# 下载nssm.exe后 nssm install RyStudyService "java" "-jar D:\www\java\ry-study-admin.jar" nssm set RyStudyService AppDirectory "D:\www\java" nssm set RyStudyService Description "国语教育平台后端服务" nssm start RyStudyService
1.5 测试后端服务
# 测试服务是否启动
curl http://localhost:30091
# 测试API接口
curl http://localhost:30091/api/system/config/configKey/sys.user.initPassword
📱 步骤2:APP端配置
2.1 方案A:打包时配置服务器地址(推荐)
修改 fronted_uniapp/utils/config.js 第43行:
// ⚠️ 正式部署:修改为服务器的公网IP或域名
const DEFAULT_SERVER_HOST = 'your_server_ip_or_domain' // 例如:'123.45.67.89' 或 'api.example.com'
const DEFAULT_SERVER_PORT = 30091
然后重新打包APK(版本号升级到1.3.10)。
2.2 方案B:APP运行时动态配置(灵活)
APP支持运行时配置服务器地址(无需重新打包):
-
通过代码设置(在APP启动时)
// 在App.vue的onLaunch中添加 uni.setStorageSync('server_host', 'your_server_ip') uni.setStorageSync('server_port', 30091) -
通过设置页面(需要实现UI)
- 在APP中添加"服务器设置"页面
- 让用户输入服务器地址
- 调用
config.setServerConfig(host, port)保存
2.3 测试APP连接
安装APK后:
- 打开APP,进入"我的" → "设置" → "关于"
- 查看服务器地址是否正确
- 尝试登录,测试网络连接
✅ 步骤3:功能验证清单
部署完成后,逐项测试:
3.1 基础功能测试
-
登录功能
- 能否正常登录
- Token能否正常获取
-
课程列表
- 能否加载课程列表
- 图标能否正常显示(离线测试:关闭网络)
3.2 视频播放测试
-
视频加载
- 课件能否正常加载
- 视频播放是否流畅
-
路径检查
- 视频URL格式:
http://your_server:30091/profile/upload/2024/12/09/xxx.mp4 - 确认路径中包含
/profile/前缀
- 视频URL格式:
3.3 语音识别测试(关键)
-
环境检查
- 服务器能否访问百度API:
# 在服务器上测试 ping aip.baidubce.com Test-NetConnection -ComputerName aip.baidubce.com -Port 443
- 服务器能否访问百度API:
-
配置检查
- 数据库中百度API密钥已配置
- 密钥是否有效(在百度控制台查看)
-
功能测试
- 进入"语音测评"页面
- 录音并识别,查看结果
- 检查后端日志是否有错误
3.4 后端日志检查
在宝塔面板或服务器上查看日志:
# 日志位置(根据实际情况调整)
# 通常在JAR包同目录下的logs文件夹
tail -f D:\www\java\logs\sys-info.log
关键日志内容:
收到语音识别请求 - 格式: pcm
调用百度云API识别,格式: pcm...
识别成功: xxx
⚠️ 常见问题排查
问题1:APP无法连接服务器
症状: 登录时提示"网络错误"或"服务器无响应"
排查步骤:
- 确认服务器防火墙已开放30091端口
- 确认服务器公网IP/域名是否正确
- 用手机浏览器访问:
http://your_server:30091 - 检查APP中服务器地址配置是否正确
问题2:视频无法播放
症状: 点击视频课件,显示加载失败
排查步骤:
- 检查课件文件是否存在于:
D:\wwwroot\study_web\web\profile\upload\... - 检查目录权限(Everyone需要读取权限)
- 检查数据库中file_path字段是否包含
/profile/前缀 - 用浏览器直接访问视频URL测试
问题3:语音识别失败
症状: 录音后提示"识别失败"或"param format invalid"
排查步骤:
-
服务器网络检查:
ping aip.baidubce.com如果ping不通,检查服务器网络或防火墙设置
-
百度API配置检查:
- 登录百度AI开放平台查看API密钥是否正确
- 查看API调用次数是否已用完
- 确认已开通"短语音识别"服务
-
后端日志检查: 查看是否有
param format invalid错误- 如果有,说明格式问题(APP需使用1.3.9版本)
-
APP版本检查:
- 确认使用1.3.9或更高版本
- 低版本可能使用mp3格式(不支持)
问题4:图标显示为方框
症状: APP中图标显示为 □
排查步骤:
- 确认使用1.3.9或更高版本APK
- 在离线环境(关闭网络)测试
- 如果仍不显示,需要重新打包APK
问题5:宝塔部署Java项目失败
症状: Java项目无法启动或频繁重启
排查步骤:
- 检查JDK版本:
java -version(需要1.8+) - 检查端口占用:
netstat -ano | findstr 30091 - 查看启动日志,查找错误信息
- 检查MySQL/Redis是否正常运行
🔐 安全建议
生产环境必做配置
-
修改默认密码
- 管理员账号默认密码需修改
- 数据库root密码需强化
-
关闭调试模式
# application.yml swagger: enabled: false # 关闭Swagger文档 logging: level: com.ddnai: info # 改为info级别 -
配置HTTPS(可选但推荐)
- 申请SSL证书
- 宝塔面板 → 网站 → SSL → 配置证书
- 修改APP配置使用HTTPS
-
防火墙配置
- 只开放必要端口(80, 443, 30091)
- 禁止直接暴露MySQL(3306)和Redis(6379)
📞 需要的额外信息
为了提供更精确的部署指导,请提供:
关于服务器
-
服务器访问地址
- 公网IP:________________
- 域名(如有):________________
- 已开放的端口:________________
-
宝塔面板版本
- 宝塔版本:________________
- 已安装的软件:Java版本____,MySQL版本____,Redis版本____
-
课件文件
- 课件存储路径:________________
- 课件总大小:________________
- 是否需要迁移现有课件? □是 □否
关于APP
-
当前使用版本
- APK版本:________________
- 是否需要修改服务器地址后重新打包? □是 □否
-
用户设备
- 用户网络环境:□公网 □内网 □两者都有
- 是否需要支持离线使用? □是 □否
关于百度API
- 百度语音识别
- 是否已申请百度API? □是 □否
- App ID:________________
- API Key:________________
- Secret Key:________________
📋 部署检查清单
打印此清单,部署时逐项检查:
服务器端
- JDK已安装(版本≥1.8)
- MySQL已安装并运行
- Redis已安装并运行
- 课件目录已创建(
D:\wwwroot\study_web\web\profile) - 目录权限已设置
- application.yml配置已修改(profile路径)
- 数据库连接信息已配置
- 百度API密钥已配置(数据库)
- 防火墙已开放30091端口
- JAR包已上传
- 后端服务已启动
- 后端服务可访问(
http://localhost:30091)
APP端
- 服务器地址已配置(代码或运行时)
- APK已打包(版本1.3.9+)
- APK已安装到测试设备
- 能正常登录
- 图标显示正常(离线测试)
- 视频能正常播放
- 语音能正常识别
网络连通性
- 手机能访问服务器(浏览器测试)
- 服务器能访问百度API(
ping aip.baidubce.com) - 防火墙规则已配置
📝 部署记录模板
部署日期:________________
服务器IP:________________
端口:30091
课件路径:D:\wwwroot\study_web\web\profile
APP版本:1.3.9
测试结果:
□ 登录功能正常
□ 课程列表正常
□ 视频播放正常
□ 图标显示正常(离线)
□ 语音识别正常
遇到的问题:
1. ________________
2. ________________
解决方案:
1. ________________
2. ________________
🎯 快速部署摘要
如果您已经熟悉部署流程,可以按以下快速步骤操作:
# 1. 服务器准备
mkdir D:\wwwroot\study_web\web\profile
# 修改application.yml中的profile路径
# 配置数据库、Redis、百度API
# 2. 部署后端
# 上传JAR包
java -jar -Xms512m -Xmx1024m ry-study-admin.jar
# 3. 配置APP
# 修改config.js中的DEFAULT_SERVER_HOST
# 打包APK(版本1.3.10)
# 4. 测试
# 安装APK → 登录 → 测试图标/视频/语音
🆘 获取帮助
如果在部署过程中遇到问题,请提供:
- 错误信息:完整的错误日志或截图
- 配置信息:application.yml内容(脱敏后)
- 测试结果:哪些功能正常,哪些异常
- 网络环境:服务器IP、端口、防火墙设置
部署完成后,请填写上方"需要的额外信息"部分,我可以提供更具体的指导! 🚀