news 2026/8/22 14:06:17

sg-exam:从克隆到跑通的在线考试平台完整部署教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
sg-exam:从克隆到跑通的在线考试平台完整部署教程

sg-exam:从克隆到跑通的在线考试平台完整部署教程

【免费下载链接】sg-exam基于Spring Boot搭建的新一代教学管理平台,提供权限管理、考试、问卷、练习等功能项目地址: https://gitcode.com/gh_mirrors/sg/sg-exam

sg-exam 是一个基于 Spring Boot 与 Vue 构建的教学管理平台,提供课程、在线考试、题库、问卷与成绩管理,支持单选、多选、判断、简答及音视频题型,自带多租户与权限体系。本文带你完成一次完整部署:环境检查、克隆代码、本地或 Docker 两种方式启动,并解读最常改的几个配置项。

sg-exam 能做什么:从课程到成绩的一体化考试平台

一句话定位:它把「建课程 → 出题组卷 → 在线考试 → 阅卷出分」串成了一条完整链路,并配套了三个前端:

  • Web 前端frontend/sg-exam-web):学员端,在线考试、课程学习、个性化练习;
  • H5 客户端frontend/sg-exam-mobile):移动端精简版,专注考试参与;
  • 后台管理系统frontend/sg-exam-admin):管理端,课程、考试、题库、成绩全链条管理,外加单位、用户、角色、菜单等系统配置。

它适合谁?想搭一套内部培训考核系统、题库练习平台或问卷系统的团队;也适合学习 Spring Boot 多模块工程 + Vue 前后端分离架构的开发者。

启动前先备好:必选 4 项、可选 2 项

依赖版本必选/可选说明
JDK17必选后端编译与运行均要求 17(Dockerfile 安装的是java-17-openjdk,build.gradle 指定VERSION_17
Gradle用自带 wrapper必选无需单独安装,直接用仓库根目录的./gradlew
Node.js + yarn仓库未提供,请查看 frontend/sg-exam-admin/package.json 确认必选(构建前端时)只部署后端接口可不装
Redis任意主流版本必选dev 配置默认连本机127.0.0.1:6379,docker-compose.yml 已内嵌redis:latest
MySQL5.7.27可选仅 docker 配置需要;dev 配置走 H2 文件库,docker-compose.yml 已内嵌
MinIO任意版本可选默认的附件/图片存储,docker-compose.yml 已内嵌
Docker + Compose任意较新版本容器化部署时必选本地开发模式可不用

一个容易踩的坑:sg-exam-mobile构建时注入了NODE_OPTIONS=--openssl-legacy-provider(见 setup.sh),如果你单独构建 H5 端,也要带上这个环境变量,仓库未提供对 Node 的具体版本要求,请查看 frontend/sg-exam-mobile/package.json 确认。

三步完成首次启动

第一步:克隆仓库

git clone https://gitcode.com/gh_mirrors/sg/sg-exam

你应看到:进入目录后,sg-apisg-commonsg-user-servicesg-exam-service等后端模块,frontend/下三个前端,以及存放部署配置的config-repo/都在。

第二步:构建

后端只构建一个可执行产物,在仓库根目录执行:

./gradlew build -x test

你应看到:sg-user-service/build/libs/目录下生成可执行 jar——Dockerfile 打包镜像时取的就是这个路径。

前端用一条脚本构建三个站(内部对各端执行yarn build):

./setup.sh -build_f

你应看到:frontend/sg-exam-web/distfrontend/sg-exam-admin/distfrontend/sg-exam-mobile/dist三个目录生成。

第三步:启动(二选一)

方式 A:本地开发模式(H2 内存库,免装 MySQL)

java -jar sg-user-service/build/libs/sg-user-service-0.0.15.jar \ --spring.profiles.active=dev \ --spring.config.additional-location=file:./config-repo/application.yml,file:./config-repo/sg-user-service.yml

这条命令的含义:激活dev配置(用 H2 文件库替代 MySQL),并把 config-repo/ 下的两份 YAML 纳入 Spring 配置——与 sg-exam.env 中SPRING_CONFIG_LOCATION的写法一致。你应看到:服务在8080 端口启动,上下文路径是/sg-user-service;数据库自动初始化自 config-repo/h2/schema-h2.sql,H2 控制台开在/h2,数据落在本地data/h2/目录。

方式 B:Docker 一键部署(MySQL + Redis + MinIO + 应用全套)

前端构建完成后,执行:

./setup.sh -build

它完成「后端构建 + 打sg-exam:latest镜像」,然后再启动:

./setup.sh -start

你应看到:docker ps里出现mysql-serviceredis-serviceminio-servicesg-exam四个容器。MySQL 首次启动会自动执行 config-repo/mysql/init.sql 建库建表。

部署前最常改的 5 个配置项

以下配置项都集中在 config-repo/sg-user-service.yml 和 config-repo/sg-exam.env 两个文件里。

1. 配置文件切换:spring.profiles.activesg-user-service.yml里有多段 profile:dev段用 H2 文件库,docker段用 MySQL。改它等于切换数据库,改错会出现「连库失败」或「表不存在」。

2. MySQL / Redis 连接:SG_DB_USER_HOSTSG_REDIS_USER_HOST(env 文件)容器网络内默认值是服务名mysql-service/redis-service。如果换成外部数据库,把这两个值改成对应 IP,同时改SG_DB_USER_PASSWORD(默认123456,对应 compose 里的MYSQL_ROOT_PASSWORD)。不改它、却换了库的位置,启动时数据源连接会被拒绝。

3.MINIO_ACCESS_DOMAIN(env 文件)这是前端访问附件的地址,官方注释明确写了「比较重要」:部署到服务器后要改成「服务器 IP 或域名 + 端口」,且不能以斜杠结尾。不改它,页面上的课程图片、附件下载会 404。

4.ATTACH_DEFAULT_STORAGE_TYPE(env 文件)2= MinIO,1= 七牛云。换成 1 就必须同时填QINIU_*一组配置,否则附件上传失败。

5. 端口:server.port与 docker 端口映射后端默认 8080、路径前缀/sg-user-service;Docker 部署时应用容器同时映射 80(nginx 出前端)和 8080(后端)。宿主机端口被占用时,改 docker-compose.yml 中sg-exam服务的- "80:80"一行即可,例如改成- "8081:80"

💡 另外,sg-exam.env 里的JAVA_OPTS默认-Xmx512m,生产环境请按机器内存上调。

部署成功长什么样:验证与排错

验证服务是否可用

  • 后端:浏览器访问http://localhost:8080/sg-user-service,能收到接口响应即代表 Java 服务活着;
  • 前端(Docker 模式):访问http://localhost(nginx 默认出 Web 学员端);
  • MinIO 控制台(Docker 模式):http://localhost:9090,账号admin/admin123456(见 docker-compose.yml),能登录说明存储就绪;
  • 容器状态:docker ps四个容器均为Up

常见问题速答

  • 启动报数据库连接失败:90% 是 env 文件里的 host 写成了127.0.0.1。Docker 网络内必须用mysql-service/redis-service服务名。
  • 页面图片、附件加载 404:改MINIO_ACCESS_DOMAIN为实际访问地址,注意去掉结尾斜杠。
  • 80 端口冲突:按上文改 docker-compose 端口映射,并同步调整MINIO_ACCESS_DOMAIN的端口部分。
  • 本地开发想清空数据重来:dev 模式数据在data/h2/目录,每次启动会重新执行 schema 脚本,具体行为以 sg-user-service.yml 的sql.init段为准。

跑通之后,继续深入这几处

  • 启动入口:sg-user-service/src/main/java/com/github/tangyi/UserServiceApplication.java;
  • 表结构与业务含义:docs/数据库设计文档.md、config-repo/mysql/init.sql;
  • 版本演进记录:CHANGELOG.md。

【免费下载链接】sg-exam基于Spring Boot搭建的新一代教学管理平台,提供权限管理、考试、问卷、练习等功能项目地址: https://gitcode.com/gh_mirrors/sg/sg-exam

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 14:05:32

免费QQ空间备份工具GetQzonehistory:扫码导出你的全部历史说说

免费QQ空间备份工具GetQzonehistory:扫码导出你的全部历史说说 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 去年整理旧照片时,你想从QQ空间里翻出大学时期的几…

作者头像 李华
网站建设 2026/8/22 14:05:18

深入PCSX2模拟器架构:EE/IOP/GS/SPU2硬件虚拟化原理全解析

深入PCSX2模拟器架构:EE/IOP/GS/SPU2硬件虚拟化原理全解析 【免费下载链接】pcsx2 PCSX2 - The Playstation 2 Emulator 项目地址: https://gitcode.com/gh_mirrors/pcsx24/pcsx2 PCSX2 是一款免费开源的 PS2 模拟器(PlayStation 2 Emulator&…

作者头像 李华
网站建设 2026/8/22 14:02:18

毕业生福利!2026年高口碑AI论文网站推荐,助力高效写作

还在为写论文发愁?实用AI论文写作工具来了! 还在为写期刊论文、毕业论文或者职称论文发愁吗?用传统方法写论文的时候,要查好多资料,找文献就像大海捞针一样,格式要求复杂得让人头疼,还得反复修…

作者头像 李华