guoyu/外网部署指南.md

13 KiB
Raw Blame History

国语教育平台 - 外网服务器部署指南

部署环境: 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.89api.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项目管理器推荐

  1. 安装Java环境

    • 宝塔面板 → 软件商店 → 搜索"Tomcat" → 安装会自动安装JDK
    • 或者软件商店 → 搜索"Java项目管理器" → 安装
  2. 添加Java项目

    • 宝塔面板 → 网站 → Java项目
    • 项目名称:ry-study-admin
    • 项目路径上传JAR包所在目录
    • 项目类型:Jar
    • 启动文件:ry-study-admin.jar
    • 启动端口:30091
    • 启动命令:
      java -jar -Xms512m -Xmx1024m ry-study-admin.jar
      
  3. 配置防火墙

    • 宝塔面板 → 安全 → 添加端口规则
    • 端口:30091
    • 协议:TCP
    • 备注:国语教育平台后端

方式B手动部署备选

  1. 上传JAR包

    # 将编译好的JAR包上传到服务器
    # 路径示例D:\www\java\ry-study-admin.jar
    
  2. 创建启动脚本 (start.bat)

    @echo off
    title 国语教育平台后端服务
    java -jar -Xms512m -Xmx1024m ry-study-admin.jar
    pause
    
  3. 创建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

📱 步骤2APP端配置

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 方案BAPP运行时动态配置灵活

APP支持运行时配置服务器地址无需重新打包

  1. 通过代码设置在APP启动时

    // 在App.vue的onLaunch中添加
    uni.setStorageSync('server_host', 'your_server_ip')
    uni.setStorageSync('server_port', 30091)
    
  2. 通过设置页面需要实现UI

    • 在APP中添加"服务器设置"页面
    • 让用户输入服务器地址
    • 调用 config.setServerConfig(host, port) 保存

2.3 测试APP连接

安装APK后

  1. 打开APP进入"我的" → "设置" → "关于"
  2. 查看服务器地址是否正确
  3. 尝试登录,测试网络连接

步骤3功能验证清单

部署完成后,逐项测试:

3.1 基础功能测试

  • 登录功能

    • 能否正常登录
    • Token能否正常获取
  • 课程列表

    • 能否加载课程列表
    • 图标能否正常显示(离线测试:关闭网络)

3.2 视频播放测试

  • 视频加载

    • 课件能否正常加载
    • 视频播放是否流畅
  • 路径检查

    • 视频URL格式http://your_server:30091/profile/upload/2024/12/09/xxx.mp4
    • 确认路径中包含 /profile/ 前缀

3.3 语音识别测试(关键)

  • 环境检查

    • 服务器能否访问百度API
      # 在服务器上测试
      ping aip.baidubce.com
      Test-NetConnection -ComputerName aip.baidubce.com -Port 443
      
  • 配置检查

    • 数据库中百度API密钥已配置
    • 密钥是否有效(在百度控制台查看)
  • 功能测试

    • 进入"语音测评"页面
    • 录音并识别,查看结果
    • 检查后端日志是否有错误

3.4 后端日志检查

在宝塔面板或服务器上查看日志:

# 日志位置(根据实际情况调整)
# 通常在JAR包同目录下的logs文件夹
tail -f D:\www\java\logs\sys-info.log

关键日志内容:

收到语音识别请求 - 格式: pcm
调用百度云API识别格式: pcm...
识别成功: xxx

⚠️ 常见问题排查

问题1APP无法连接服务器

症状: 登录时提示"网络错误"或"服务器无响应"

排查步骤:

  1. 确认服务器防火墙已开放30091端口
  2. 确认服务器公网IP/域名是否正确
  3. 用手机浏览器访问:http://your_server:30091
  4. 检查APP中服务器地址配置是否正确

问题2视频无法播放

症状: 点击视频课件,显示加载失败

排查步骤:

  1. 检查课件文件是否存在于:D:\wwwroot\study_web\web\profile\upload\...
  2. 检查目录权限Everyone需要读取权限
  3. 检查数据库中file_path字段是否包含 /profile/ 前缀
  4. 用浏览器直接访问视频URL测试

问题3语音识别失败

症状: 录音后提示"识别失败"或"param format invalid"

排查步骤:

  1. 服务器网络检查:

    ping aip.baidubce.com
    

    如果ping不通检查服务器网络或防火墙设置

  2. 百度API配置检查:

    • 登录百度AI开放平台查看API密钥是否正确
    • 查看API调用次数是否已用完
    • 确认已开通"短语音识别"服务
  3. 后端日志检查: 查看是否有 param format invalid 错误

    • 如果有说明格式问题APP需使用1.3.9版本)
  4. APP版本检查:

    • 确认使用1.3.9或更高版本
    • 低版本可能使用mp3格式不支持

问题4图标显示为方框

症状: APP中图标显示为 □

排查步骤:

  1. 确认使用1.3.9或更高版本APK
  2. 在离线环境(关闭网络)测试
  3. 如果仍不显示需要重新打包APK

问题5宝塔部署Java项目失败

症状: Java项目无法启动或频繁重启

排查步骤:

  1. 检查JDK版本java -version需要1.8+
  2. 检查端口占用:netstat -ano | findstr 30091
  3. 查看启动日志,查找错误信息
  4. 检查MySQL/Redis是否正常运行

🔐 安全建议

生产环境必做配置

  1. 修改默认密码

    • 管理员账号默认密码需修改
    • 数据库root密码需强化
  2. 关闭调试模式

    # application.yml
    swagger:
      enabled: false  # 关闭Swagger文档
    
    logging:
      level:
        com.ddnai: info  # 改为info级别
    
  3. 配置HTTPS(可选但推荐)

    • 申请SSL证书
    • 宝塔面板 → 网站 → SSL → 配置证书
    • 修改APP配置使用HTTPS
  4. 防火墙配置

    • 只开放必要端口80, 443, 30091
    • 禁止直接暴露MySQL(3306)和Redis(6379)

📞 需要的额外信息

为了提供更精确的部署指导,请提供:

关于服务器

  1. 服务器访问地址

    • 公网IP________________
    • 域名如有________________
    • 已开放的端口________________
  2. 宝塔面板版本

    • 宝塔版本________________
    • 已安装的软件Java版本____MySQL版本____Redis版本____
  3. 课件文件

    • 课件存储路径________________
    • 课件总大小________________
    • 是否需要迁移现有课件? □是 □否

关于APP

  1. 当前使用版本

    • APK版本________________
    • 是否需要修改服务器地址后重新打包? □是 □否
  2. 用户设备

    • 用户网络环境:□公网 □内网 □两者都有
    • 是否需要支持离线使用? □是 □否

关于百度API

  1. 百度语音识别
    • 是否已申请百度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已安装到测试设备
  • 能正常登录
  • 图标显示正常(离线测试)
  • 视频能正常播放
  • 语音能正常识别

网络连通性

  • 手机能访问服务器(浏览器测试)
  • 服务器能访问百度APIping 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 → 登录 → 测试图标/视频/语音

🆘 获取帮助

如果在部署过程中遇到问题,请提供:

  1. 错误信息:完整的错误日志或截图
  2. 配置信息application.yml内容脱敏后
  3. 测试结果:哪些功能正常,哪些异常
  4. 网络环境服务器IP、端口、防火墙设置

部署完成后,请填写上方"需要的额外信息"部分,我可以提供更具体的指导! 🚀