# 基于Spring Cloud的在线学院微服务项目 **Repository Path**: wuccloud/springcloud_onlineedu ## Basic Information - **Project Name**: 基于Spring Cloud的在线学院微服务项目 - **Description**: 基于https://gitee.com/lisaqqqww/springcloud_replica.git,迭代! 基于SpringCloud微服务架构的在线教育平台,提供完整的在线教育解决方案,包括课程管理、讲师管理、文件上传、视频点播等功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-07-16 - **Last Updated**: 2025-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SpringCloud在线教育平台 ## 项目简介 基于SpringCloud微服务架构的在线教育平台,提供完整的在线教育解决方案,包括课程管理、讲师管理、文件上传、视频点播等功能。 ## 技术栈 - **微服务框架**: Spring Cloud 2023.0.0 - **服务注册与发现**: Nacos 2.3.0 - **API网关**: Spring Cloud Gateway - **数据库**: MySQL 8.0 - **ORM框架**: MyBatis-Plus 3.5.5 - **文档工具**: SpringDoc OpenAPI 2.3.0 - **对象存储**: 阿里云OSS - **视频点播**: 阿里云VOD - **Excel处理**: EasyExcel 3.3.2 - **JSON处理**: FastJSON 2.0.25 - **构建工具**: Maven 3.9+ - **JDK版本**: JDK 17+ ## 项目结构 ``` springcloud_onlineedu/ ├── common/ # 公共模块 │ ├── common-utils/ # 通用工具类 │ └── service-base/ # 服务基础配置 ├── service/ # 业务服务模块 │ ├── service-cms/ # 内容管理服务 │ ├── service-edu/ # 教育服务 │ ├── service-oss/ # 对象存储服务 │ └── service-vod/ # 视频点播服务 ├── gateway/ # API网关 ├── sql/ # 数据库脚本 ├── API_DOCUMENTATION.md # API接口文档 ├── SECURITY.md # 安全配置指南 ├── docker-compose.yml # Docker编排文件 └── pom.xml # 父级POM文件 ``` ## 模块说明 ### 1. common-utils (通用工具模块) - 统一返回结果封装 (R) - 结果状态码定义 (ResultCode) - 响应工具类 (ResponseUtil) ### 2. service-base (服务基础模块) - 全局异常处理 - 自定义异常类 - MyBatis-Plus配置 - 自动填充处理器 ### 3. service-cms (内容管理服务) - 横幅管理 (CmsBanner) - 横幅分页查询和条件查询 - 获取活跃横幅列表 - 横幅详情查询 - 提供完整的CRUD操作 - 集成Swagger API文档 - 支持MyBatis-Plus分页插件 ### 4. service-edu (教育服务) - 讲师管理 (EduTeacher) - 课程管理 (EduCourse) - 课程科目管理 (EduSubject) - 支持Excel批量导入 - 章节管理 (EduChapter) - 支持嵌套结构 - 视频管理 (EduVideo) - 课程描述管理 (EduCourseDescription) - 提供完整的CRUD操作和分页查询 ### 5. service-oss (对象存储服务) - 文件上传到阿里云OSS - 文件删除功能 - 文件列表查询 - 支持头像、课程封面等文件上传 - 自动生成唯一文件名和日期分类 - 完整的文件管理API ### 6. service-vod (视频点播服务) - 视频上传到阿里云VOD - 视频删除(单个/批量) - 获取视频播放凭证 - 获取视频详细信息 - 分页查询视频列表 - 完整的视频管理API ### 7. gateway (API网关) - 统一入口和路由转发 - 跨域配置 - 负载均衡 - API文档聚合 ## 快速开始 ### 环境要求 - **JDK**: 17+ (推荐使用Oracle JDK或OpenJDK) - **Maven**: 3.9+ - **MySQL**: 8.0+ (推荐8.0.33+) - **Nacos**: 2.3.0+ (服务注册与发现) - **IDE**: IntelliJ IDEA 2023+ 或 Eclipse 2023+ ### 第一步:环境检查 ```powershell # 检查Java版本 java -version # 应显示: openjdk version "17.x.x" 或更高版本 # 检查Maven版本 mvn -version # 应显示: Apache Maven 3.9.x 或更高版本 # 检查MySQL服务状态 (Windows) net start | findstr MySQL # 或者 sc query mysql80 ``` ### 第二步:下载并启动Nacos ```powershell # 1. 下载Nacos 2.3.0 # 访问: https://github.com/alibaba/nacos/releases/tag/2.3.0 # 下载: nacos-server-2.3.0.zip # 2. 解压到指定目录 (建议: C:\nacos) Expand-Archive -Path "nacos-server-2.3.0.zip" -DestinationPath "C:\nacos" # 3. 进入nacos目录并启动 cd C:\nacos\nacos\bin .\startup.cmd -m standalone # 4. 验证Nacos启动成功 # 访问: http://localhost:8848/nacos # 默认用户名/密码: nacos/nacos ``` ### 第三步:数据库初始化 ```sql -- 1. 连接MySQL (使用MySQL Workbench或命令行) mysql -u root -p -- 2. 创建数据库 CREATE DATABASE onlineedu DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 3. 使用数据库 USE onlineedu; -- 4. 导入SQL脚本 (如果存在) -- source d:/shixunxiangmuji/100/springcloud_onlineedu/sql/onlineedu.sql; -- 5. 验证数据库创建成功 SHOW DATABASES; SHOW TABLES; ``` ### 第四步:配置文件修改 #### 4.1 内容管理服务配置 (service-cms) 修改 `service/service-cms/src/main/resources/application.yml`: ```yaml server: port: 8094 # 内容管理服务端口 spring: application: name: service-cms datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/onlineedu?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 你的MySQL密码 cloud: nacos: discovery: server-addr: 127.0.0.1:8848 enabled: false # 可选:禁用Nacos服务发现 ``` #### 4.2 教育服务配置 (service-edu) 修改 `service/service-edu/src/main/resources/application.yml`: ```yaml server: port: 8091 # 注意:实际端口是8091,不是8001 spring: application: name: service-edu datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/onlineedu?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 你的MySQL密码 cloud: nacos: discovery: server-addr: 127.0.0.1:8848 ``` #### 4.3 OSS服务配置 (service-oss) 修改 `service/service-oss/src/main/resources/application.yml`: ```yaml server: port: 8092 # 注意:实际端口是8092,不是8002 spring: application: name: service-oss cloud: nacos: discovery: server-addr: 127.0.0.1:8848 # 阿里云OSS配置 (可选,用于文件上传) aliyun: oss: file: endpoint: your-endpoint keyid: your-access-key-id keysecret: your-access-key-secret bucketname: your-bucket-name ``` #### 4.4 VOD服务配置 (service-vod) 修改 `service/service-vod/src/main/resources/application.yml`: ```yaml server: port: 8093 # 注意:实际端口是8093,不是8003 spring: application: name: service-vod cloud: nacos: discovery: server-addr: 127.0.0.1:8848 # 阿里云VOD配置 (可选,用于视频上传) aliyun: vod: file: keyid: your-access-key-id keysecret: your-access-key-secret ``` #### 4.5 网关配置 (gateway) 修改 `gateway/src/main/resources/application.yml`: ```yaml server: port: 8080 spring: application: name: service-gateway cloud: nacos: discovery: server-addr: 127.0.0.1:8848 gateway: discovery: locator: enabled: true routes: - id: service-cms uri: lb://service-cms predicates: - Path=/cmsservice/** - id: service-edu uri: lb://service-edu predicates: - Path=/eduservice/** - id: service-oss uri: lb://service-oss predicates: - Path=/eduoss/** - id: service-vod uri: lb://service-vod predicates: - Path=/eduvod/** ``` ### 第五步:项目编译 ```powershell # 1. 进入项目根目录 cd d:\shixunxiangmuji\100\springcloud_onlineedu # 2. 清理并编译项目 mvn clean compile # 3. 安装依赖到本地仓库 mvn clean install -DskipTests # 4. 验证编译成功 # 检查target目录是否生成 ls service/service-cms/target/ ls service/service-edu/target/ ls service/service-oss/target/ ls service/service-vod/target/ ls gateway/target/ ``` ### 第六步:启动服务 (重要:按顺序启动) #### 方式一:使用Maven命令启动 (推荐开发环境) ```powershell # 1. 启动内容管理服务 (新开PowerShell窗口) cd d:\shixunxiangmuji\100\springcloud_onlineedu\service\service-cms mvn spring-boot:run # 等待看到 "Started CmsApplication" 日志 # 2. 启动教育服务 (新开PowerShell窗口) cd d:\shixunxiangmuji\100\springcloud_onlineedu\service\service-edu mvn spring-boot:run # 等待看到 "Started ServiceEduApplication" 日志 # 3. 启动OSS服务 (新开PowerShell窗口) cd d:\shixunxiangmuji\100\springcloud_onlineedu\service\service-oss mvn spring-boot:run # 等待看到 "Started ServiceOssApplication" 日志 # 4. 启动VOD服务 (新开PowerShell窗口) cd d:\shixunxiangmuji\100\springcloud_onlineedu\service\service-vod mvn spring-boot:run # 等待看到 "Started ServiceVodApplication" 日志 # 5. 启动网关服务 (新开PowerShell窗口) cd d:\shixunxiangmuji\100\springcloud_onlineedu\gateway mvn spring-boot:run # 等待看到 "Started GatewayApplication" 日志 ``` #### 方式二:使用JAR包启动 (推荐生产环境) ```powershell # 1. 启动内容管理服务 cd d:\shixunxiangmuji\100\springcloud_onlineedu\service\service-cms java -jar target\service-cms-0.0.1-SNAPSHOT.jar # 2. 启动教育服务 (新开窗口) cd d:\shixunxiangmuji\100\springcloud_onlineedu\service\service-edu java -jar target\service-edu-0.0.1-SNAPSHOT.jar # 3. 启动OSS服务 (新开窗口) cd d:\shixunxiangmuji\100\springcloud_onlineedu\service\service-oss java -jar target\service-oss-0.0.1-SNAPSHOT.jar # 4. 启动VOD服务 (新开窗口) cd d:\shixunxiangmuji\100\springcloud_onlineedu\service\service-vod java -jar target\service-vod-0.0.1-SNAPSHOT.jar # 5. 启动网关服务 (新开窗口) cd d:\shixunxiangmuji\100\springcloud_onlineedu\gateway java -jar target\gateway-0.0.1-SNAPSHOT.jar ``` ### 第七步:验证服务启动 #### 7.1 检查Nacos服务注册 1. 访问 Nacos 控制台:http://localhost:8848/nacos 2. 登录 (用户名/密码: nacos/nacos) 3. 进入 "服务管理" -> "服务列表" 4. 确认以下服务已注册: - service-cms - service-edu - service-oss - service-vod - service-gateway #### 7.2 测试API接口 ```powershell # 测试网关路由 Invoke-WebRequest -Uri "http://localhost:8080/eduservice/teacher/findAll" -Method GET # 测试教育服务直连 Invoke-WebRequest -Uri "http://localhost:8091/eduservice/teacher/findAll" -Method GET # 测试分页查询 Invoke-WebRequest -Uri "http://localhost:8080/eduservice/teacher/1/10" -Method GET ``` #### 7.3 访问API文档 - **网关聚合文档**: http://localhost:8080/swagger-ui.html - **内容管理服务文档**: http://localhost:8094/swagger-ui.html - **教育服务文档**: http://localhost:8091/swagger-ui.html - **OSS服务文档**: http://localhost:8092/swagger-ui.html - **VOD服务文档**: http://localhost:8093/swagger-ui.html - **API测试页面**: http://localhost:8080/../api-test.html (项目根目录) ### 第八步:常见启动问题排查 #### 8.1 端口占用问题 ```powershell # 检查端口占用 netstat -ano | findstr :8080 netstat -ano | findstr :8091 netstat -ano | findstr :8092 netstat -ano | findstr :8093 netstat -ano | findstr :8094 netstat -ano | findstr :8848 # 杀死占用端口的进程 taskkill /PID <进程ID> /F ``` #### 8.2 数据库连接问题 ```powershell # 测试数据库连接 mysql -h localhost -u root -p -e "SELECT 1;" # 检查数据库是否存在 mysql -u root -p -e "SHOW DATABASES LIKE 'onlineedu';" ``` #### 8.3 Nacos连接问题 ```powershell # 检查Nacos是否启动 Invoke-WebRequest -Uri "http://localhost:8848/nacos" -Method GET # 检查Nacos日志 Get-Content C:\nacos\nacos\logs\start.out -Tail 50 ``` ### 启动成功标志 ✅ **所有服务启动成功的标志:** 1. Nacos控制台显示5个服务全部注册 2. 各服务日志显示 "Started xxxApplication" 3. API接口测试返回正常JSON数据 4. Swagger文档页面可以正常访问 5. 网关路由转发正常工作 ### 第九步:使用API测试页面 项目根目录提供了一个完整的API测试页面 `api-test.html`,集成了所有服务的接口测试功能: #### 9.1 打开测试页面 ```powershell # 方式一:直接在浏览器中打开 start d:\shixunxiangmuji\100\springcloud_onlineedu\api-test.html # 方式二:通过文件资源管理器打开 explorer d:\shixunxiangmuji\100\springcloud_onlineedu # 然后双击 api-test.html 文件 ``` #### 9.2 测试页面功能 - **横幅管理**: 查询、添加、修改、删除横幅信息 - **讲师管理**: 查询、添加、修改、删除讲师信息 - **课程管理**: 完整的课程CRUD操作和发布功能 - **科目管理**: 课程科目的层级管理 - **章节管理**: 课程章节和视频的嵌套管理 - **文件上传**: OSS文件上传测试 - **视频管理**: VOD视频上传和管理测试 #### 9.3 使用说明 1. 确保所有服务已启动并注册到Nacos 2. 在测试页面中选择要测试的功能模块 3. 填写必要的参数(如ID、分页参数等) 4. 点击"测试"按钮发送请求 5. 查看返回结果和状态码 6. 根据需要调整参数进行多次测试 #### 9.4 测试建议 - 先测试查询接口(GET请求) - 再测试添加接口(POST请求) - 最后测试修改和删除接口 - 注意观察Nacos控制台的服务状态 - 查看各服务的控制台日志输出 ## API接口说明 ### 内容管理服务 (service-cms) #### 横幅管理接口 - `GET /cmsservice/banner/pageBanner/{current}/{limit}` - 分页查询横幅列表 - `POST /cmsservice/banner/pageBannerCondition/{current}/{limit}` - 条件分页查询横幅 - `GET /cmsservice/banner/getActiveBanners` - 获取活跃横幅列表 - `GET /cmsservice/banner/{id}` - 根据ID查询横幅详情 - `POST /cmsservice/banner` - 添加横幅 - `PUT /cmsservice/banner` - 修改横幅信息 - `DELETE /cmsservice/banner/{id}` - 根据ID删除横幅 ### 教育服务 (service-edu) #### 讲师管理接口 - `GET /eduservice/teacher` - 查询所有讲师 - `POST /eduservice/teacher` - 添加讲师 - `PUT /eduservice/teacher` - 修改讲师信息 - `DELETE /eduservice/teacher/{id}` - 根据ID删除讲师 - `GET /eduservice/teacher/{id}` - 根据ID查询讲师详情 - `GET /eduservice/teacher/{current}/{limit}` - 分页查询讲师列表 - `POST /eduservice/teacher/pageTeacherCondition/{current}/{limit}` - 条件分页查询讲师 #### 课程管理接口 - `GET /eduservice/course/findAll` - 查询所有课程 - `POST /eduservice/course/addCourse` - 添加课程 - `POST /eduservice/course/updateCourse` - 修改课程信息 - `DELETE /eduservice/course/{id}` - 根据ID删除课程 - `GET /eduservice/course/getCourse/{courseId}` - 根据ID查询课程详情 - `GET /eduservice/course/{current}/{limit}` - 分页查询课程列表 - `POST /eduservice/course/pageCourseCondition/{current}/{limit}` - 条件分页查询课程 - `POST /eduservice/course/publishCourse/{id}` - 发布课程 - `GET /eduservice/course/getPublishCourseInfo/{id}` - 获取课程发布信息 #### 课程科目管理接口 - `GET /eduservice/subject/` - 查询所有课程科目 - `POST /eduservice/subject/save` - 添加课程科目 - `PUT /eduservice/subject/update` - 修改课程科目 - `DELETE /eduservice/subject/{id}` - 删除课程科目 - `GET /eduservice/subject/getAllSubject` - 获取嵌套的课程科目列表 - `POST /eduservice/subject/addSubject` - Excel批量导入课程科目 #### 课程章节管理接口 - `GET /eduservice/chapter/getChapterVideo/{courseId}` - 根据课程ID获取章节和小节 - `POST /eduservice/chapter/addChapter` - 添加章节 - `POST /eduservice/chapter/updateChapter` - 修改章节信息 - `DELETE /eduservice/chapter/{chapterId}` - 删除章节 - `GET /eduservice/chapter/getChapter/{chapterId}` - 根据ID获取章节信息 #### 课程视频管理接口 - `GET /eduservice/video/getVideoList/{chapterId}` - 根据章节ID获取视频列表 - `POST /eduservice/video/addVideo` - 添加视频 - `POST /eduservice/video/updateVideo` - 修改视频信息 - `DELETE /eduservice/video/{id}` - 删除视频 - `GET /eduservice/video/getVideo/{videoId}` - 根据ID获取视频信息 ### OSS服务 (service-oss) - `POST /eduoss/fileoss/upload` - 文件上传到阿里云OSS - `DELETE /eduoss/fileoss/delete` - 删除OSS文件 - `GET /eduoss/fileoss/list` - 获取文件列表 ### VOD服务 (service-vod) - `POST /eduvod/video/uploadAlyVideo` - 视频上传到阿里云VOD - `DELETE /eduvod/video/removeAlyVideo/{id}` - 根据视频ID删除视频 - `DELETE /eduvod/video/deleteBatch` - 批量删除视频 - `GET /eduvod/video/getPlayAuth/{id}` - 根据视频ID获取播放凭证 - `GET /eduvod/video/getVideoInfo/{id}` - 获取视频详细信息 - `GET /eduvod/video/list/{current}/{limit}` - 分页查询视频列表 ## 开发规范 ### 代码规范 - 遵循阿里巴巴Java开发手册 - 使用统一的代码格式化配置 - 必须编写单元测试,测试覆盖率不低于80% - 代码提交前必须通过代码检查和静态分析 - 使用有意义的变量名和方法名 - 添加必要的注释,特别是复杂业务逻辑 - 使用Lombok简化代码 - 统一异常处理 - 统一返回结果格式 ### 接口规范 - 统一使用RESTful API设计 - 统一返回结果格式(R类封装) - 统一异常处理(GlobalExceptionHandler) - 接口文档使用Swagger自动生成 - API版本控制策略 - 请求参数验证(@Valid注解) ### 数据库规范 - 表名、字段名使用下划线命名 - 必须有主键,推荐使用雪花算法生成ID - 软删除字段统一使用is_deleted - 时间字段统一使用gmt_create和gmt_modified - 索引命名规范:idx_字段名 ### 安全规范 - 敏感信息不得硬编码 - 使用环境变量或配置中心管理配置 - API接口必须进行权限验证 - 输入参数必须进行校验和过滤 - 定期更新依赖包版本 ### 命名规范 - 包名: com.csxy.nsh - 实体类: Edu前缀 + 业务名称 - 服务类: Service后缀 - 控制器: Controller后缀 ### 注释规范 - 类和方法必须添加注释 - 使用Swagger注解描述API - 复杂业务逻辑添加详细注释 ## 部署说明 ### 开发环境部署 1. **环境准备** - JDK 17+ (推荐Oracle JDK或OpenJDK) - Maven 3.9+ - MySQL 8.0+ (推荐8.0.33+) - Nacos 2.3.0+ (服务注册与发现) - IDE: IntelliJ IDEA 2023+ 或 Eclipse 2023+ 2. **服务启动顺序** - 启动Nacos服务注册中心 (端口: 8848) - 启动内容管理服务 service-cms (端口: 8094) - 启动教育服务 service-edu (端口: 8091) - 启动OSS服务 service-oss (端口: 8092) - 启动VOD服务 service-vod (端口: 8093) - 启动API网关 gateway (端口: 8080) 3. **配置文件修改** - 修改数据库连接配置 (MySQL连接字符串) - 修改Nacos注册中心地址 (127.0.0.1:8848) - 修改阿里云OSS/VOD配置 (可选,用于文件和视频上传) - 确保各服务端口配置正确 ### 生产环境部署 #### Windows环境部署 **1. 环境准备** ```powershell # 检查Java版本 java -version # 检查Maven版本 mvn -version # 检查MySQL服务状态 net start mysql80 ``` **2. 下载和安装Nacos** ```powershell # 下载Nacos 2.3.0 # 访问 https://github.com/alibaba/nacos/releases # 下载 nacos-server-2.3.0.zip # 解压到指定目录 Expand-Archive -Path "nacos-server-2.3.0.zip" -DestinationPath "C:\nacos" # 进入nacos目录 cd C:\nacos\nacos\bin # 启动Nacos(单机模式) .\startup.cmd -m standalone ``` **3. 数据库初始化** ```powershell # 连接MySQL mysql -u root -p # 创建数据库 CREATE DATABASE onlineedu DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 使用数据库 USE onlineedu; # 导入SQL脚本(如果有) source d:\shixunxiangmuji\100\springcloud_onlineedu\sql\onlineedu.sql; ``` **4. 项目编译** ```powershell # 进入项目根目录 cd d:\shixunxiangmuji\100\springcloud_onlineedu # 清理并编译项目 mvn clean compile # 打包项目(跳过测试) mvn clean package -DskipTests ``` **5. 配置文件修改** 修改各服务的application.yml文件: ```yaml # service-edu/src/main/resources/application.yml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/onlineedu?serverTimezone=GMT%2B8 username: root password: your_password cloud: nacos: discovery: server-addr: 127.0.0.1:8848 # 阿里云配置 aliyun: oss: file: endpoint: your-endpoint keyid: your-access-key-id keysecret: your-access-key-secret bucketname: your-bucket-name vod: file: keyid: your-access-key-id keysecret: your-access-key-secret ``` **6. 启动服务** 按顺序启动各个服务: ```powershell # 启动内容管理服务 (端口: 8094) cd service\service-cms mvn spring-boot:run # 或者运行jar包 java -jar target\service-cms-0.0.1-SNAPSHOT.jar # 新开命令窗口,启动教育服务 (端口: 8091) cd service\service-edu mvn spring-boot:run # 或者运行jar包 java -jar target\service-edu-0.0.1-SNAPSHOT.jar # 新开命令窗口,启动OSS服务 (端口: 8092) cd service\service-oss mvn spring-boot:run # 或者运行jar包 java -jar target\service-oss-0.0.1-SNAPSHOT.jar # 新开命令窗口,启动VOD服务 (端口: 8093) cd service\service-vod mvn spring-boot:run # 或者运行jar包 java -jar target\service-vod-0.0.1-SNAPSHOT.jar # 新开命令窗口,启动网关 (端口: 8080) cd gateway mvn spring-boot:run # 或者运行jar包 java -jar target\gateway-0.0.1-SNAPSHOT.jar ``` **7. 验证部署** ```powershell # 检查Nacos控制台 # 访问 http://localhost:8848/nacos # 用户名/密码: nacos/nacos # 检查服务注册情况 # 在Nacos控制台查看服务列表,确认以下服务已注册: # - service-cms (端口: 8094) # - service-edu (端口: 8091) # - service-oss (端口: 8092) # - service-vod (端口: 8093) # - service-gateway (端口: 8080) # 测试API接口 # 通过网关测试 Invoke-WebRequest -Uri "http://localhost:8080/eduservice/teacher/findAll" -Method GET # 直接测试教育服务 Invoke-WebRequest -Uri "http://localhost:8091/eduservice/teacher/findAll" -Method GET # 测试分页查询 Invoke-WebRequest -Uri "http://localhost:8080/eduservice/teacher/1/10" -Method GET # 访问API文档 # 网关聚合文档: http://localhost:8080/swagger-ui.html # 内容管理服务文档: http://localhost:8094/swagger-ui.html # 教育服务文档: http://localhost:8091/swagger-ui.html # OSS服务文档: http://localhost:8092/swagger-ui.html # VOD服务文档: http://localhost:8093/swagger-ui.html # API测试页面: 项目根目录/api-test.html ``` **8. Windows服务配置(可选)** 将应用注册为Windows服务: ```powershell # 使用NSSM工具注册服务 # 下载NSSM: https://nssm.cc/download # 注册教育服务 nssm install OnlineEdu-Service "C:\Program Files\Java\jdk-17\bin\java.exe" nssm set OnlineEdu-Service Arguments "-jar d:\shixunxiangmuji\100\springcloud_onlineedu\service\service-edu\target\service-edu-0.0.1-SNAPSHOT.jar" nssm set OnlineEdu-Service AppDirectory "d:\shixunxiangmuji\100\springcloud_onlineedu" nssm start OnlineEdu-Service ``` #### Docker部署 ```bash # 构建镜像 docker-compose build # 启动服务 docker-compose up -d # 查看服务状态 docker-compose ps ``` #### 传统部署 1. **服务器配置** - 至少4GB内存 - 双核CPU - 100GB存储空间 2. **部署步骤** - 打包应用:`mvn clean package` - 上传jar包到服务器 - 配置systemd服务 - 启动服务并设置开机自启 3. **监控配置** - 配置Prometheus监控 - 配置Grafana仪表板 - 配置日志收集(ELK Stack) - 配置告警通知 4. **负载均衡** - 使用Nginx进行负载均衡 - 配置健康检查 - 配置SSL证书 5. **CI/CD流水线** - 代码提交触发构建 - 自动化测试 - 自动化部署 - 回滚策略 ### 生产环境配置 - 配置生产环境的数据库连接 - 配置真实的阿里云OSS和VOD参数 - 配置Nacos集群 - 配置日志收集和监控 ## 常见问题 ### Q: 服务启动失败怎么办? A: 1. 检查端口是否被占用: ```powershell netstat -ano | findstr :8080 # 网关端口 netstat -ano | findstr :8091 # 教育服务端口 netstat -ano | findstr :8092 # OSS服务端口 netstat -ano | findstr :8093 # VOD服务端口 netstat -ano | findstr :8094 # 内容管理服务端口 netstat -ano | findstr :8848 # Nacos端口 ``` 2. 检查配置文件是否正确,特别是数据库和Nacos配置 3. 查看日志文件定位具体错误:`Get-Content logs/spring.log -Tail 50` 4. 检查JDK版本是否符合要求(JDK 17+):`java -version` 5. 检查Maven版本:`mvn -version` 6. 确保Nacos服务已启动:访问 http://localhost:8848/nacos ### Q: 数据库连接失败? A: 1. 检查MySQL服务是否启动: ```powershell # Windows服务检查 net start | findstr MySQL # 或者 sc query mysql80 ``` 2. 检查数据库连接配置(用户名、密码、URL) 3. 检查数据库是否存在,表是否创建: ```sql mysql -u root -p -e "SHOW DATABASES LIKE 'onlineedu';" ``` 4. 检查防火墙设置和端口3306是否开放 5. 测试数据库连接: ```powershell mysql -h localhost -u root -p -e "SELECT 1;" ``` 6. 检查JDBC连接字符串是否正确,特别是时区设置 ### Q: Nacos注册失败? A: 1. 检查Nacos服务是否启动:访问 http://localhost:8848/nacos 2. 检查网络连接和防火墙设置 3. 检查application.yml中的Nacos配置 4. 查看Nacos控制台的服务列表 ### Q: 文件上传到OSS失败? A: 1. 检查阿里云OSS配置信息是否正确 2. 检查AccessKey权限是否足够 3. 检查Bucket是否存在且可访问 4. 检查网络连接 5. 查看详细错误日志 ### Q: 视频上传到VOD失败? A: 1. 检查阿里云VOD服务是否开通 2. 检查AccessKey和AccessSecret是否正确 3. 检查视频格式是否支持 4. 检查文件大小是否超过限制 5. 查看VOD控制台的上传记录 ### Q: 跨域问题如何解决? A: 1. 在网关中配置CORS 2. 检查前端请求头设置 3. 确认API接口路径是否正确 ### Q: 内存溢出怎么办? A: 1. 增加JVM内存参数:`-Xms512m -Xmx1024m` 2. 检查是否有内存泄漏 3. 优化数据库查询,避免一次性加载大量数据 4. 使用分页查询 ### Q: 如何查看服务日志? A: 1. 应用日志:`logs/spring.log` 2. 错误日志:`logs/error.log` 3. 实时查看:`tail -f logs/spring.log` 4. 日志级别配置:修改logback-spring.xml ## 贡献指南 1. Fork 项目 2. 创建特性分支 3. 提交代码 4. 推送到分支 5. 创建 Pull Request ## 许可证 MIT License ## 联系方式 如有问题,请提交Issue或联系开发团队。