【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

在 AWS 上快速搭建在线教学平台

  • 2020-02-27
  • 本文字数:7045 字

    阅读完需:约 23 分钟

在 AWS 上快速搭建在线教学平台

背景介绍

  • 由于新冠病毒影响,全国中小学校推迟开学。很多学校和企业都希望可以快速搭建一套成熟、稳定的在线教学平台。经过调研,设计了基于 Moodle 和 Bigbluebutton 这两个海外比较成熟的开源软件在 AWS 中国区域部署的解决方案,可以帮助客户快速搭建并实现稳定可靠的在线教学。

Moodle

  • Moodle 是一个学习平台,旨在为教育工作者、管理人员和学习者提供一个强大、安全、完整的系统来创建个性化的学习环境。Moodle 是由 Moodle 总部领导和协调的 Moodle 项目所创,由全球 80 多家 Moodle 合作伙伴服务公司提供资金支持。

  • Moodle 为全球数以万计的学习环境提供了支持,受到大大小小的机构和组织的信任,包括壳牌、伦敦经济学院、纽约州立大学、微软等。Moodle 在全球拥有超过 9000 万的用户,包括学术界和企业界的用户,这使它成为世界上使用最广泛的学习平台。经过超过 10 年的发展,Moodle 在社会建构主义教学法的指导下,提供了一套强大的以学习者为中心的工具和协作学习环境,为教学和学习提供了强大的支持。

  • Moodle 的多语言能力确保了在线学习没有语言限制。Moodle 社区已经开始将 Moodle 翻译成超过 120 种语言(并且还在增加),这样用户就可以轻松地将他们的 Moodle 站点本地化,同时还提供各种语言的大量资源、支持和社区讨论。

BigBlueButton

  • BigBlueButton 是一个为在线学习设计的开源的网络会议系统,支持实时共享音频、视频、幻灯片(带有白板控件)、聊天和屏幕。教师可以使用投票、表情符号、多用户白板和分会议室来远程和学生进行互动。演示者也可以记录和回放内容,供以后与他人共享。

  • BigBlueButton 设计了以下的一些教育用例:

  • o 在线辅导(一对一)

  • o 翻转课堂(在上课前记录内容)o 分组协同(多对多)o 在线课程(一对多)



服务架构

  • 在这个方案中,我们会用到:

  • o Application Load Balancer 用于接收用户请求;o EC2 承载 Moodle 和 BigBlueButton 应用和相应组件;o EFS 用于存放 Moodle 应用使用过程中的持久化数据;o RDS for MySQL 用于建立 Moodle 数据库;

  • o ElastiCache 用于缓存 Moodle 的会话和应用使用过程中的临时数据;

  • o CloudWatch 用于监控整体架构的稳定。


  • 具体搭建步骤

    Moodle 安装和配置


  • Moodle 服务器我们使用 Amazon Linux 2 标准镜像,在 Moodle EC2 上的准备工作如下:

  • PHP


       $ sudo yum update -y       $ sudo yum install -y git telnet       $ sudo rm -f /etc/localtime && \           sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime       # verify locale       $ date
复制代码


    * 在 Moodle 服务器上安装并配置 Apache:
PHP
复制代码


       $ sudo yum install -y httpd       $ sudo usermod -a -G apache ec2-user       $ sudo chown -R ec2-user:apache /var/www       $ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;       $ find /var/www -type f -exec sudo chmod 0664 {} \;
复制代码


    PHP
复制代码


       # modify Apache config file       $ sudo vim /etc/httpd/conf/httpd.conf       <IfModule dir_module>           DirectoryIndex index.html index.php       </IfModule>
复制代码


    <pre>
</pre>
PHP
复制代码


       $ sudo systemctl start httpd       $ sudo systemctl enable httpd       $ exit       # login again for group verification       $ groups
复制代码


    <pre>
</pre> * 在 Moodle 服务器上安装并配置 PHP:``
PHP
复制代码


       $ sudo amazon-linux-extras enable php7.2       $ sudo yum install -y \           php \           php-fpm \           php-gd \           php-json \           php-mbstring \           php-mysqlnd \           php-xml \           php-xmlrpc \           php-opcache \           php-pecl-zip \           php-intl \           php-soap \           php-pecl-redis \           php-cli
复制代码


    <pre>
</pre>
PHP
复制代码


       # modify php settings       $ sudo vim /etc/php.ini           post_max_size = 128M           upload_max_size = 64M           memory_limit = 256M
复制代码


    <pre>
</pre>
PHP
复制代码


       # create test PHP file       $ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
复制代码


    PHP
复制代码


       $ sudo systemctl start php-fpm       $ sudo systemctl enable php-fpm       $ sudo systemctl restart httpd
复制代码


    * 在 Moodle 服务器上安装 EFS 工具:
PHP
复制代码


       $ git clone https://github.com/aws/efs-utils       $ sudo yum -y install rpm-build       $ cd efs-utils && make rpm       $ sudo yum -y install build/amazon-efs-utils*rpm
复制代码


    PHP
复制代码


       $ mount.efs --version       # version of mount.efs show as below       /usr/sbin/mount.efs Version: 1.21       # lower than version 1.19 will unable to mount the China region EFS
复制代码


    <pre>
</pre>
PHP
复制代码


       $ sudo mkdir -p /mnt/efs       $ sudo mount -t efs fs-<efs_id>:/ /mnt/efs       # add efs path to fstab       $ sudo vim /etc/fstab       fs-<fs_id>:/ /mnt/efs efs defaults,_netdev 0 0
复制代码


    <pre>
</pre>
* 在 Moodle 服务器上安装并配置 Moodle:
复制代码




复制代码


    PHP
复制代码


       # create data path for Moodle       $ sudo mkdir -p /mnt/efs/moodledata       $ sudo chown -R ec2-user:apache /mnt/efs/moodledata       $ sudo chmod 2777 /mnt/efs/moodledata && find /mnt/efs/moodledata -type d -exec sudo chmod 2777 {} \;
复制代码



PHP

复制代码


    # clone from git or download from moodle.org for moodle setup    ### wget https://download.moodle.org/download.php/direct/stable38/moodle-latest-38.zip    $ git clone -b MOODLE_38_STABLE git://git.moodle.org/moodle.git
复制代码



PHP

复制代码


    $ cp -r moodle /var/www/html/    $ cd /var/www/html/moodle && cp config-dist.php config.php
复制代码



PHP

复制代码


    # access to rds mysql for database setup    ### example using mysql    $ CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;    $ GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser' IDENTIFIED BY 'yourpassword';
复制代码



PHP

复制代码


    # modify Moodle config file    $ vim config.php
复制代码



PHP

复制代码


    $CFG->dbtype    = 'mysqli';      // 'pgsql', 'mariadb', 'mysqli', 'sqlsrv' or 'oci'    $CFG->dblibrary = 'native';     // 'native' only at the moment    $CFG->dbhost    = '<RDS_ENDPOINT>';  // eg 'localhost' or 'db.isp.com' or IP    $CFG->dbname    = 'moodle';     // database name, eg moodle    $CFG->dbuser    = '<DB_USER>';   // your database username    $CFG->dbpass    = '<DB_PASSWORD>';   // your database password
复制代码



PHP

复制代码


    $CFG->wwwroot   = 'http://<DNS_ENDPOINT>/moodle';
复制代码



PHP

复制代码


    $CFG->dataroot  = '/mnt/efs/moodledata';
复制代码



PHP

复制代码


    # setup DB connection    $ php /var/www/html/moodle/admin/cli/install_database.php
复制代码



PHP

复制代码


    # add to crontab    $ sudo vim /etc/crontab      *  *  *  *  * /usr/bin/php /var/www/html/moodle/admin/cli/cron.php >/dev/null
复制代码



* 访问配置的 Moodle 连接 http://<DNS_ENDPOINT>/moodle 进行验证,效果如下:
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws2.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws2.jpg)
### BigBlueButton 安装和配置
* BigBlueButton 需要一台应用服务器和一台信令(TURN)服务器,由于操作系统限制,我们选择 Ubuntu16.04,准备工作如下:

复制代码



PHP

复制代码


    $ sudo -i    $ apt-get update    $ apt-get install git
复制代码



* BigBlueButton 信令(TURN)服务器的安装及配置:``
PHP

复制代码


    $ sudo -i    $ git clone https://github.com/bigbluebutton/bbb-install.git    $ cd bbb-install    # run below command for setup turn server    ### <turn server endpoint> for turn server url    ### <secret id> for secret access from bbb server    ### <email address> for which Let's Encrypt generates ssl certificate    $ ./bbb-install.sh \        -c <turn server endpoint>:<secret id> \        -e <email address>    # for example:    ### $ ./bbb-install.sh -c turn.ryanlao.net:12345678 -e ryanlao@example.com
复制代码



* 完成信令服务器的安装后,我们继续在另一台服务器上安装 BigBlueButton 应用:
PHP

复制代码


    $ sudo -i    $ git clone https://github.com/bigbluebutton/bbb-install.git    $ cd bbb-install    # this step will take about 25 mins    # setup with turn server    ### <bbb server endpoint> for bbb server url    ### <turn server endpoint> for turn server url    ### <secret id> for secret access from bbb server    ### <email address> for which Let's Encrypt generates ssl certificate    $ ./bbb-install.sh \        -s <bbb server endpoint> \        -v xenial-220 \        -e <email address> \        -c <turn server endpoint>:<secret id> \        -a    # for example:    ### $ ./bbb-install.sh -s bbb.ryanlao.net -v xenial-220 -c turn.ryanlao.net:12345678 -e ryanlao@example.com -a
复制代码



<pre>
</pre>
* 按照上述命令安装完成后,BigBlueButton 会创建一个演示环境,可以访问如下链接用于验证是否安装成功:
[](https://bbb.ryanlao.xyz/demo/demo1.jsp)
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws3.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws3.jpg)
* 在这之后,我们也可以在 BigBlueButton 应用服务器上安装 BigBlueButton Greenlight 工具,用于创建多个线上教室,并可以通过访问码对在线教室的访问进行验证,此为可选步骤:

复制代码



PHP

复制代码


    $ sudo -i    # purge demo site first    $ apt-get purge bbb-demo    # rerun bbb-install command with greenlight parameter    $ ./bbb-install.sh \        -s <bbb server endpoint> \        -v xenial-220 \        -e <email address> \        -c <turn server endpoint>:<secret id> \        -g    # get below 2 output for greenlight env configuration    $ docker run --rm bigbluebutton/greenlight:v2 bundle exec rake secret    $ bbb-conf --secret    # update those outputs into ~/greenlight/.env    $ vim ~/greenlight/.env    SECRET_KEY_BASE=SECRET_KEY_BASE=<secret key>    BIGBLUEBUTTON_ENDPOINT=<bigbluebutton endpoint>    BIGBLUEBUTTON_SECRET=<bigbluebutton secret>    # below is an example:    ### SECRET_KEY_BASE=SECRET_KEY_BASE=238b568f2235f7d3177058c7c5da2dc323d0b6984f52b93965e439eb195735e105bdb32dad213d1ba1bc2bd89d6633f11b8b89badf22cbb8a481edabcde12345    ### BIGBLUEBUTTON_ENDPOINT=https://bbb.ryanlao.net/bigbluebutton/    ### BIGBLUEBUTTON_SECRET=abcde12345abcde67890edcba7654321
复制代码



PHP

复制代码


    # verify greenlight configuration    $ docker run --rm --env-file .env bigbluebutton/greenlight:v2 bundle exec rake conf:check
复制代码



<pre>
</pre>
PHP

复制代码


    # configure nginx to route to greenlight    $ docker run --rm bigbluebutton/greenlight:v2 cat ./greenlight.nginx | sudo tee /etc/bigbluebutton/nginx/greenlight.nginx    $ sudo systemctl restart nginx
复制代码



<pre>
</pre>
PHP

复制代码


    # create an admin account    $ docker exec greenlight-v2 bundle exec rake user:create["<admin name>","<admin email>","<admin password>","admin"]
复制代码



<pre>
</pre>
PHP

复制代码


    # access greenlight site for managing meeting room    ### e.g. https://bbb.ryanlao.net/b
复制代码



<pre>
</pre>
安装 BigBlueButtonBN 1. BigBlueButtonBN 是用于 Moodle 和 BigBlueButton 集成的插件,安装完成后,老师就可以在 Moodle 上创建基于 BigBlueButton 的在线教室,学生只需在页面上点击 “Join Session” 即可进入在线课堂
2. 下载 BigBlueButtonBN:https://moodle.org/plugins/pluginversions.php?plugin=mod_bigbluebuttonbn
3. 将压缩文件拷贝到 Moodle 服务器上并解压缩:
PHP

复制代码


    $ scp -i <keypair> mod_bigbluebuttonbn.zip /        ec2-user@<ip address>:/home/ec2-user/    $ unzip mod_bigbluebuttonbn.zip
复制代码



3. 将插件目录拷贝至 mod 文件夹:
PHP

复制代码


    $ cp -r bigbluebuttonbn/ /var/www/html/moodle/mod/
复制代码



4. 使用管理员登录并访问 Moodle 网站
5. Moodle 会自动检测插件并提示升级,点击“升级”按钮即可安装插件,完成后点击“继续”按钮即可完成
6. BigBlueButtonBN 在 Moodle 网站管理的插件页面上就可以被看到并使用了
7. 选择添加 BigBlueButton 服务器
a. 输入 BigBlueButton 服务器地址 (e.g. http://bbb.ryanlao.net/bigbluebutton)
b. 输入 BigBlueButton 共享密钥: (可以使用预配置,或者连接到 BigBlueButton 服务器上重新生成,如下)
PHP

复制代码


    #shared key needs to be set as fixed length    sudo bbb-conf --setsalt <aaaaaaaabbbbbbbbccccccccdddddddd>
复制代码



<pre>
</pre>
效果展示 1. 这是 Moodle 的课程列表页面,如图:
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws4.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws4.jpg)
2. 点击课程后,会看到进入课程的“Join Session”按钮;除此之外,BigBlueButton 的录制功能也可以与 Moodle 集成,完成录制后,会在 Moodle 页面上看到相应的课程回放,如图:
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws5.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws5.jpg)
3. 点击“Join Session”后,就可以进入在线教室,如图:
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws6.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws6.jpg)
4. 通过 CloudWatch 创建监控面板,展示整个平台的监控指标来直观反映平台的稳定性:
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws7.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-online-teaching-platform-on-aws7.jpg)
### 小结
通过这个方案,学校和教育行业客户可以在自己的 AWS 账号中快速搭建属于自己的稳定的在线教学平台。尽管受到新冠病毒疫情的影响不能在学校开课,这个方案同样也可以帮助学校和教育行业客户开展教学活动。也要特别感谢我们的教育行业 SA 田锴在整个调研过程中的指导和协助。
### 参考文档
* Moodle 官网:https://moodle.org/ * Moodle 快速安装文档:https://docs.moodle.org/38/en/Installation_quick_guide * Moodle 插件管理:https://docs.moodle.org/38/en/Installing_plugins * BigBlueButton GitHub 链接:https://github.com/bigbluebutton/bigbluebutton * BigBlueButtonBN 插件介绍:https://moodle.org/plugins/mod_bigbluebuttonbn * 创建 CloudWatch 监控面板: https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html
**作者介绍**劳佳琦,AWS中国团队的解决方案架构师,负责基于AWS的云计算方案架构咨询和设计,同时致力于AWS云服务在国内教育行业的应用和推广。在加入AWS之前,他曾服务与英孚教育,微软等跨国公司。劳佳琦平时热爱足球和音乐,同时也乐于和他人分享自己的各种经历。钱凯,AWS解决方案架构师,负责基于 AWS 的云计算方案的咨询与架构设计.在加入AWS之前曾在HP、Citrix服务多年,熟悉传统虚拟化、虚拟桌面、微软Windows等产品。
**本文转载自AWS技术博客。**
**原文链接:**https://amazonaws-china.com/cn/blogs/china/quickly-build-an-online-teaching-platform-on-aws/
复制代码


2020-02-27 16:42572

评论

发布
暂无评论
发现更多内容

ipfs挖矿怎么选择公司?ipfs挖矿收益怎么计算?

IPFS挖矿收益怎么计算 ipfs挖矿怎么选择公司

我找遍了全网,总结出足足60W字“阿里大厂面试手册”

Java 程序员 IT 计算机 知识分享

数字化加速碳基文明向硅基文明的演进

Taylor

数字化 数字孪生 碳基文明 硅基文明

Tensorflow随笔(二)

毛显新

人工智能 深度学习 tensorflow keras

【前端 · 面试 】HTTP 总结(七)—— HTTP 缓存概述

编程三昧

面试 HTTP 8月日更 HTTP缓存

模块10作业

杨彬

#架构实战营

我能行我能行!字节三面 + 微信四面 +PayPal 四面, 大厂面经分享

Java 编程 程序员 架构 IT

三十多岁跳槽无路,晋升无门,濒临绝望之际受贵人指点,成功上岸阿里(Java 岗)

Java 编程 程序员 架构 计算机

MongoDB 客户端怎么做负载均衡

海明菌

mongodb 负载均衡 客户端

架构训练营毕业总结

冬天的树

2021年最新最全:30W字!千道Java 后端面试大全(值得收藏)

Java 编程 程序员 架构 面试

一周拿下百度Offer!211本+985硕+计算机专业~

Java 编程 面试 IT 计算机

喜获蚂蚁金服、拼多多、字节跳动offer!纠结之后入职拼多多。

Java 编程 程序员 面试 计算机

13年培训出身!八年后成功坐上了阿里P7架构师的位置

Java 编程 程序员 架构 计算机

Kafka 和 Kinesis 之间的对比和选择

HoneyMoose

Tensorflow随笔(一)

毛显新

人工智能 深度学习 tensorflow keras

SLO(服务等级目标)与SLA(服务等级协议)

一个大红包

8月日更

白手起家之搜索利器Elastic search

卢卡多多

ES 8月日更

年薪50W阿里P7架构师就会点这?并发丨JVM丨多线程丨Netty丨MySQL!

编程 架构 面试 IT 计算机

前端之数据结构(四)

Augus

数据结构 8月日更

总结

杨彬

#架构实战营

分享三个可改进的体验

石云升

用户体验 体验设计 8月日更

Tensorflow API(一)

毛显新

人工智能 深度学习 tensorflow keras

Docker可视化管理工具Portainer

xcbeyond

Docker Portainer 8月日更

PNG文件解读(2):PNG格式文件结构与数据结构解读—解码PNG数据

zhoulujun

png jpg

云原生之可观测性【日志篇】 Logstash组件初探

路上的小崔哥

云原生 Logstash 日志 可观测性

架构师实战营模块四作业

袁小芬

看完必让你直呼好家伙!阿里巴巴 6 月新作:“Java架构手册”

Java 编程 程序员 IT 计算机

【架构实战营】毕业总结

swordman

架构实战营

Java进程cpu100%问题排查

陈皮的JavaLib

Java Linux 面试 8月日更

流处理基本概念(二)

数据与智能

大数据 flink 窗口函数

在 AWS 上快速搭建在线教学平台_行业深度_AWS_InfoQ精选文章