背景介绍
由于新冠病毒影响,全国中小学校推迟开学。很多学校和企业都希望可以快速搭建一套成熟、稳定的在线教学平台。经过调研,设计了基于 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/
更多内容推荐
区块链 + 社会治理:区块链如何为治理提供新方案?
这一讲,我们一起探索区块链+社会治理的新方案。
2021-08-23
打卡学习 VBA 和 PYTHON week01-02
这是我自己VBA第一天学习所遇到的易错点总结
2021-03-19
第二期 YCA 认证培训圆满结束!
8月7日,由YashanDB举办的“第二期YCA认证培训”圆满结束。本次培训吸引了超过80名学员报名,神州数码信息系统有限公司、深圳市硅谷明天科技发展有限公司、深圳市奇摩计算机有限公司、云和恩墨(北京)信息技术有限公司等多家合作伙伴积极参与。经过7天的学习
2023-08-23
Navicat Premium 15 永久破解激活工具及安装教程 (亲测可用)
Navicat premium非常功能强大的多连接数据库管理工具,我们这款软件就是提供了简单数据库开发的基本和必需的功能,可以为专业开发人员提供满足他们所有特定需求的功能,而且对于刚接触数据库服务器的用户来说也很容易学习。用于商业用途,并支持 mysql、Mari
2022-06-19
Week1 学习总结
week1
2021-12-09
Centos7 安装系统安装 docker
在企业的开发过程中,我们一般会接触多个环境。开发环境(DEV)、测试环境(UAT)、生产环境(PROD)、验收测试环境(UAT)等。在工作中以及学习中其实很多时间是花费在环境的搭建中,学习的过程中,我们需要自己从0开始,很多同学在搭建环境的过程中出现很多问题,环
2022-08-06
性能测试|搭建性能监控平台
搜索微信公众号: 霍格沃兹测试学院,学习更多测试开发前沿技术
2023-07-04
第十周学习总结
本周主要围绕模块分解展开,主要内容如下:
2021-01-31
零代码搭建一个微信小程序
基于Astro零代码能力,学习体验快速搭建微信小程序。
2023-08-17
39|GitOps 最佳实践,ArgoCD 凭什么脱颖而出?
ArgoCD 能在众多 CD 工具中脱颖而出,除了 GitOps 大背景的推动以外,其自身也具备非常多优秀的特性。
2023-03-08
Week2 - 框架设计
框架设计学习
2020-10-31
week13 学习总结
大数据算法
2020-12-20
架构实战:模块一学习任务
架构实战:模块一学习任务
2021-07-07
36|作为开发者,如何更好地了解 CNCF?
这节课,我将会带你从零开始认识 CNCF,包括它的历史、社区组织形式、项目托管以及职业认证等,让你了解 CNCF 的运作机制,更好地从 CNCF 获取信息。
2023-03-01
JetPack-Paging3- 入门
Paging 库例程学习
2021-12-05
决定 5G 产业生态的技术标准,是怎么制定出来的?
一文带你了解决定5G产业生态的技术标准,到底是怎么制定出来的。
2021-06-16
番外三|有哪些能够持续学习的参考资料和相关网站?
今天,我向你推荐一些精挑细选出的投资理财学习资料。为了帮助不同阶段的学习者,我将这些学习资料分为了入门级、进阶级、专业级三大部分,你可以循序渐进地进行学习。
2021-09-20
亚马逊云科技案例研究:陕西科技大学
陕西科技大学在AWS平台上打造稳定的数字化校园。
智能合约:虚拟与现实的价值锚定载体
这一讲我们会通过NFT和元宇宙两个概念,揭秘智能合约的价值。
2021-08-09
推荐阅读
华为云 Classroom 一站式教学实践平台,开启云端教学新征程
2023-09-05
看完了
2023-12-01
第 6 章 ChatGPT 和生成式革命
2023-12-01
大学云桌面系统如何部署,有哪些优势
2023-09-21
在亚马逊云科技控制台上创建 Amazon Cognito 用户池
2023-09-27
【PPT 下载】杭州 Atlassian 社区四周年活动
2023-09-25
05|需求分析:如何确定在线视频平台的核心功能模块?
2023-05-03
电子书
大厂实战PPT下载
换一换 敖海林 | 金蝶中国 苍穹平台资深架构师
关立胜 | News Break 架构师
王志龙 | 京东 架构师
评论