项目作者: open-scratch

项目描述 :
Scratch少儿编程教学平台,将集成Scratch、ScratchJr、Python、课程、班级部门、作业、权限、题库、赛事、社区等。
高级语言: Java
项目地址: git://github.com/open-scratch/teaching-open.git
创建时间: 2019-11-22T06:30:08Z
项目社区:https://github.com/open-scratch/teaching-open

开源协议:Apache License 2.0

下载


Teaching 在线教学平台 v2.7

===============

项目介绍

Teaching针对机构、学校提供STEAM在线教育解决方案, 提供一个低成本试错的机会。

平台集成CRM系统、教务系统、作业系统、题库系统、赛事系统、社区系统。并封装了常用的工具,如各种工具类、微信生态对接、支付对接等等。

前往官网

查看本开源版DEMO

QQ交流群 : 191723983

开源版功能

  1. ├─首页
  2. ├─社区
  3. ├─创作
  4. ├─Scratch
  5. ├─Python
  6. ├─ScratchJr
  7. ├─Blockly
  8. ├─学生中心
  9. ├─我的作品
  10. ├─班级作业
  11. ├─个人设置
  12. ├─我的课程
  13. ├─卡片形式
  14. ├─地图形式
  15. ├─作业管理
  16. ├─作品管理
  17. ├─布置班级作业
  18. ├─课程管理
  19. ├─课程管理
  20. ├─课程单元管理
  21. ├─系统管理
  22. ├─用户管理
  23. | ├─角色管理
  24. ├─权限设置
  25. ├─班级管理
  26. ├─字典管理
  27. ├─后台菜单管理
  28. ├─前台菜单管理
  29. ├─网站配置
  30. ├─Scratch素材库
  31. ├─系统监控
  32. ├─ ……

教学工具对接

技术架构

后端技术: SpringBoot_2.1.3.RELEASE + Mybatis-plus_3.1.2 + Shiro_1.4.0 + Jwt_3.7.0 + Swagger-ui + Redis

前端技术: Ant-design-vue + Vue + Webpack

其他技术: Druid(数据库连接池)、Logback(日志工具) 、poi(Excel工具)、Quartz(定时任务)、lombok(简化代码)、七牛云存储、Scratch二次开发

项目构建: Maven、Jdk8、npm或yarn

编译和部署教程

点击查看宝塔面板部署教程

环境准备

以CentOS服务器为例,其他系统操作流程基本一样。

安装mysql5.6

  1. 设置数据库表名忽略大小写(重要)

    lower_case_table_names=1

  2. 导入api/db文件夹的sql文件。如果是升级,需要依次按版本号执行升级sql。

安装 redis 6.0

安装Java

CentOS系统可执行命令一键安装
yum install -y java-1.8.0-openjdk

安装Nginx

注册配置七牛云

  • 登录 www.qiniu.com 注册后实名认证
  • 新建对象存储Kodo,访问控制设为:开放,记录bucket名字和存储区域以备后续配置
  • 绑定域名(免费分配的测试域名一个月后过期)
  • 获取accessKey,secretKey以备后续配置

后端编译和部署

修改配置

修改application.yml切换测试环境和线上环境,默认为线上环境,即使用application-prod.yml。

修改application-prod.yml

需要修改的地方:

  1. domain: 您的站点域名
  2. # 本地:local 七牛云:qiniu
  3. uploadType: 文件存储目标
  4. # 数据库连接配置
  5. datasource:
  6. master:
  7. url: jdbc:mysql://127.0.0.1:3306/teachingopen?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false
  8. username: teachingopen
  9. password: teachingopen
  10. #Redis连接配置
  11. redis:
  12. database: 1
  13. host: 127.0.0.1
  14. password: ''
  15. port: 6379
  16. #七牛配置
  17. qiniu:
  18. accessKey: 您的七牛accessKey
  19. secretKey: 您的七牛secretKey
  20. bucketName: 您的七牛bucketName
  21. staticDomain: 您的七牛域名
  22. area: 您的七牛存储区域(z0:华东 z1:华北 z2:华南 na0:北美 as0:东南亚 cn-east-2:华东-浙江2

配置文件可以编译后修改,推荐将.yml配置文件放到jar包同级目录,java将优先使用同级目录的配置,这样方便后续升级。

编译项目(若使用已编译好的jar文件,本步骤可以跳过)

配置maven源

  1. <mirrors>
  2. <mirror>
  3. <id>nexus-aliyun</id>
  4. <mirrorOf>*,!jeecg,!jeecg-snapshots,!getui-nexus</mirrorOf>
  5. <name>Nexus aliyun</name>
  6. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  7. </mirror>
  8. </mirrors>

在api目录执行

mvn clean package

编译成功后得到jar文件:\target\teaching-open-xxx.jar
(xxx为版本号)

  • 上传jar文件到服务器,建议同时将yml配置文件也上传到jar同级目录

  • 启动后端api并放入后台执行

    nohup java -jar teaching-open-xxx.jar &

    或者上传并接执行启动脚本
    bash start-teaching.sh

前端编译(若使用已编译好的前端,本步骤可以跳过)

  • 安装nodejs版本v12

  • 安装依赖
    npm installyarn install

  • 编译
    npm run buildyarn run build

前端部署

将编译后的dist文件夹上传至服务器网站根目录

  • 配置Nginx

参考配置:

  1. server
  2. {
  3. listen 80 default_server;
  4. server_name open.teaching.vip; # 改为你网站的域名
  5. location / {
  6. index index.html index.htm;
  7. root /www/wwwroot/teaching-open; # 改为你网站目录的路径
  8. if (!-e $request_filename) {
  9. rewrite ^(.*)$ /index.html?s=$1 last;
  10. break;
  11. }
  12. gzip on;
  13. gzip_min_length 1k;
  14. gzip_comp_level 9;
  15. gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
  16. gzip_vary on;
  17. gzip_disable "MSIE [1-6]\.";
  18. }
  19. location ^~ /api
  20. {
  21. expires 0;
  22. proxy_pass http://127.0.0.1:8080/api/;
  23. proxy_set_header Host 127.0.0.1;
  24. proxy_set_header X-Real-IP $remote_addr;
  25. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  26. add_header X-Cache $upstream_cache_status;
  27. add_header Cache-Control no-cache;
  28. }
  29. }

测试账号

  • admin —— 超级管理员
  • teacher —— 老师
  • student —— 学生
    默认密码均为123456

常见问题

页面一直加载中

只有两种可能:

  1. api未启动,尝试访问http://ip地址:8080看是否有内容输出
  2. nginx反向代理配置错误,特征是接口报502或504错误

后台上传的Scratch素材库不显示

自定义素材库,必须使用七牛云存储。默认使用的是本地素材库。
解决方案:
将本地素材库上传至七牛云,素材库位置在scratch3/static/internalapi,需要原来的保持目录结构,选择internalapi目录上传。

然后修改scratch3/index.html中的素材库配置地址切换为七牛云

  1. assets:{
  2. assetHost: getSysConfig('qiniuDomain')
  3. }

Scratch提交作品卡住

  1. 七牛云配置错误,此时系统内其他上传也会失败
  2. 页面停留时间过长导致登录失效,可以将Scratch文件保存到本地,刷新页面后再次提交
  3. 网络问题

切换为本地存储

建议是使用云存储的,极大减少服务器的宽带压力。但是有些朋友不想用七牛云存储,或者局域网部署,则可以使用本地存储模式。

修改application-prod.yml

  1. jeecg:
  2. uploadType: local
  3. path :
  4. #文件上传根目录 设置
  5. upload: D://opt//upFiles
  6. # 文件访问地址
  7. staticDomain: /api/sys/common/static

切换云存储后,之前上传的文件请自行迁移。

升级系统的步骤

  1. 准备编译好的api和web项目,可自行编译,也可下载编译好的

  2. 执行升级sql

文件在api/db。如当前版本为2.4,需要依次执行update2.5.sql、update2.6.sql

  1. 上传最新版jar包

如果yml配置文件放在jar包外,一般情况无需修改api配置。如果配置文件使用的是jar包内的,需要替换jar包内的配置文件。

  1. 停掉原来的api程序

如果您的系统内没有其他正在运行的java程序,那么只需执行pkill java即可停止

  1. 重启新版api

参考命令:

nohup java -jar teaching-open-xxx.jar &

注意xxx是版本号,不要照抄!!

  1. 上传覆盖前端文件