作者简介:何 辉(1978—),兰州工业学院教授. 研究方向:计算机网络. E-mail:hui.he@qq.com
中文责编:坪 梓
兰州工业学院信息中心,甘肃兰州 730050
Information Center, Lanzhou Institute of Technology, Lanzhou 730050, Gansu Province, P.R.China
online course; Moodle; Kaiwu cloud class; distributed; platform construction; online homework review
DOI: 10.3724/SP.J.1249.2020.99031
针对高校开展在线课程教学的需求,基于开源学习系统Moodle,分离其web端、数据库和文件资源存储,设计分布式部署框架和网络安全方案.利用Nginx反向代理实现负载均衡,完成兰州工业学院“开物云课堂”构建,实现了IPv6/IPv4双栈部署、LDAP统一认证、作业在线批阅反馈和自定义试题库等功能.结果证明,平台运行稳定,能够满足中等规模学校在线教学的需要,具有一定的应用推广价值.
Based on the open source learning system Moodle, we separate the web terminal, database and file resource storage, and then, design the distributed deployment framework and network security scheme. Finally, by using Nginx reverse agent, we realize the load balancing and complet the construction of “Kaiwu cloud class” for Lanzhou Institute of Technology(LZIT). The construction has realized the functions of IPv6/IPv4 dual stack deployment, LDAP unified authentication, online homework review and feedback, and custom test database, etc. The results show that the platform is stable in operation, can meet the needs of online teaching in medium-sized colleges, and has the value of application promotion.
近年来,各高校都在开展在线课程平台的建设工作,主要采用3种方案:一种是使用互联网服务商的公共平台,如智慧树、超星尔雅和中国大学慕课等; 第二种是购买和在本地部署专业公司开发的网络教学软件; 第三种是使用开源软件自行搭建,如Moodle和Canvas等[1].各种方案均有自己的优缺点,以兰州工业学院“开物云课堂”为例,2005年开始采用开源的Moodle平台作为课堂教学之外的辅助手段,由最初的单台服务器发展为目前的服务器集群,在线课程由3门发展到上百门. 尤其是在今年疫情期间,“开物云课堂”为在线教学工作的顺利开展提供了重要保障.当然,经过15年的建设运行,也积累了一些运维经验和教训.
首先是在线课程平台名称的确定. 根据兰州工业学院的校训“开物成务,启智求真”,取其中“开物”一词.该词出自《周易·系辞上》,意为通晓万物的道理,同时兼有“天工开物”的意思,取名“开物云课堂”也比较切合学校的工科办学特点.
“开物云课堂”最初采用单台服务器部署Moodle开源LMS系统.随着用户量和资源量的增加,平台不断扩展,目前采用多服务器集群的方式,将web、数据库和文件资源进行分离,实际运行的分布式结构如图1.在图1所描述的在线课程平台部署框架中,采用多个Apache服务器发布web服务,由web前端的WAF兼反向代理进行多Apache服务的负载均衡. 后端也将文件资源类的存储和数据库进行了分离:2台数据库采用主主同步方式,并由Nginx做反向代理,配置一台大容量的NFS服务器作为存储文档及资源类的文件服务器[2].
依托服务器虚拟化平台,在进行Moodle的分布式部署之前,规划服务器软硬件及配置需求,进而部署软件系统.
硬件采用传统的VMware+FC SAN架构,平台所需的主机均使用虚拟机,各虚拟机的配置情况如表1. 其中, “web反向代理”为3台web服务器(Moodle web1-web3)提供负载均衡和反向代理; MySQL反向代理为2台MySQL数据库服务器(Moodle MySQL1- MySQL2)提供负载均衡和反向代理,虚拟机的操作系统均为CentOS 7.
Moodle是PHP开发的软件,对Apache和Nginx都能够完美的支持,在综合考虑web服务器的易用性和后期的可维护性等因素后,选择开源的XAMPP套件搭建web服务器.XAMPP包含了Apache、MySQL、PHP和PERL等软件,可以在Windows、Linux和Mac OS 等操作系统下运行,经过安全加固的XAMPP可以作为生产环境运行[3].
由于平台采用分布式部署,所以经过安全性优化的XAMPP只需启动Apache和PHP即可安装Moodle的web端.为了保证最新版(当前版本为3.9)的Moodle顺利运行,建议使用较新版本的XAMPP(当前版本为7.4.10,支持PHP 7.4).
为使平台能够承担大并发的访问,部署了3台相同配置的web服务器(可以克隆虚拟机后微调配置),如图1所示,用Nginx作Web服务器的负载均衡,只需以下简单的配置即可实现此功能:
upstream moodle{
ip_hash;
server 210.26.16.231; // Moodle web1地址
server 210.26.16.232; // Moodle web2地址
server 210.26.16.233; // Moodle web3地址
}
server {
listen 80;
listen[::]:80;
……
location / {
proxy_pass http://moodle;
……
}
}
将Moodle的web端与数据库进行分离,有利于提供更稳定的后台数据库支持,“开物云课堂”在分离web端与MySQL数据库之后,利用MySQL的主从同步机制,部署了“主主同步”的2台MySQL数据库(图1),与web服务器的负载均衡类似,使用Nginx在2台MySQL实现数据库的负载均衡和反向代理,基本配置如下:
upstream db {
server 210.26.16.235:3305; // MySQL1地址
server 210.26.16.236:3305; // MySQL2地址
}
server {
listen 3306;
proxy_pass db;
}
在线课程主要包括视频、课件、文档、文本、图片、链接、测验和作业等内容资源,随着课程数量的增加,对存储空间的性能和容量需求也随之增加,因此,很有必要将Moodle的网站与文件资源进行分离.
解决方法是在表1的“Moodle NFS”服务器上建立NFS(Network File System)网络文件系统,并在表1的“Moodle web1”-“Moodle web3”web服务器进行挂载.以CentOS为例,可在”/etc/fstab”中实现自动挂载,挂载命令为:210.26.16.234:/var/moodledata /opt/moodledata nfs defaults,_netdev 0 0.修改Moodle的配置文件“../moodle/config.php”,将挂载的NFS设置为Moodle的文件资源目录:$CFG->dataroot = ‘/opt/moodledata';
在平台安全防护方面,进行3个层次的安全设置:
1)主机安全防护
开启CentOS 7自带的Firewalld服务,开放必要的端口,如22、80、3306和2049等:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=2049/tcp
2)web应用安全防护
在表1的“web反向代理”服务器前端部署专业的WAF(Web应用防火墙),并进行合理的策略配置.
3)网络安全防护
如图1,采用开源防火墙OPNsense透明方式部署[4],OPNsense具有Netflow流量分析、入侵探测、在线病毒扫描、高可用性和支持IPv6等实用功能,并提供友好的操作、统计和日志查询界面,如图2.
虽然Moodle已经提供了在线课程平台的主要功能,但各学校在应用中还有一些独特的需求,如网络方面要求支持IPv6和HTTPS,并要和统一认证对接; 平台使用方面要求能够在线批阅作业和实验报告等电子文档,能够制作题库,生成自动批阅的测试题,以便减轻教师的负担.
根据教育部办公厅关于贯彻落实《推进互联网协议第六版(IPv6)规模部署行动计划》的通知要求,所有应用系统应实现IPv6支持.在不改变在线课程平台框架结构的基础上,利用反向代理实现IPv6/IPv4双栈.
首先,升级目前使用的开源DNS软件PowerDNS[5],使其支持AAAA解析及CAA类型(HTTPS需要),为表1中的“web反向代理”服务器配置IPv6地址,在PowerDNS中为“web反向代理”服务器添加的AAAA解析:
cms.lzit.edu.cn A 210.26.16.22
cms.lzit.edu.cn AAAA 2001:da8:c004:1018::30
其次,购买SSL证书,将证书文件添加到“web反向代理”服务器,实现整个平台的HTTPS支持.“开物云课堂”(URL:cms.lzit.edu.cn)在“IPv6发展监测平台”(http://ipv6c.cn)的监测结果如图3.
Moodle能够支持多种身份认证,如CAS、LDAP、oAuth2、外部数据库及网络服务认证等,结合学校现有的LDAP统一认证,在Moodle的“网站管理-插件-身份认证-管理身份认证”中启用LDAP认证,并根据学校LDAP服务器的属性进行相应的设置,主要参数设置如表2.
发送电子邮件也是在线课程平台的必备功能,学生提交作业、教师批阅作业、论坛交流和站内联系都需要发送电子邮件.以163电子邮箱的设置为例,在Moodle的“网站管理-服务器-电子邮件-发送邮件设置”进行设置,主要参数见表3.
标准的Moodle虽然可以提交PDF电子版的作业,但是无法在线批阅,也不能将带有批阅痕迹的作业反馈给学生,需要启用Moodle相关的插件才能实现此功能.
1)安装PDF处理转换软件Ghostscript(gs)
文件(如图片或者Word文档)打印需要经过“文件→中间文件→打印机语言→打印机”等步骤,gs所做的工作就是将中间文件转化为适应各种打印机的打印机语言(光栅文件),然后将该文件发送给打印机,打印机将光栅文件打印到PDF上,实现一次完整PDF的打印过程.
下载(https://www.ghostscript.com/)最新版本的gs(ghostscript-9.50-linux-x86_64.tar)进行安装[6]:
tar zxvf ghostscript-9.50-linux-x86_64.tar
cd ghostscript-9.50-linux-x86_64
cp gs-950-linux-x86_64 /usr/bin/gs
2)在Moodle的“网站管理-插件此反馈方法动模块-作业-作业设置”中将“反馈插件”的属性设置为“批注的PDF”.
3)在Moodle的“网站管理-插件-活动模块-作业-反馈插件-批注的PDF文件”中选中默认开启此反馈方法.
4)在Moodle的“网站管理-服务器-系统路径”中将“还原脚本路径”设置为gs的安装路径“/usr/bin/gs”.
这样,教师就可以在线批改作业,系统会自动将批改结果通过电子邮件通知给学生,作业批改界面如图4.
除了手工编辑题库,Moodle支持题库导入,但是最常见的题库格式(如Aiken和Gift格式)不能很好地识别特殊字符和添加公式图片.经过测试,“Microsoft Word 2010 table format(wordtable)”格式的题库能够解决上述问题,关于该题库插件的安装和使用这里不再赘述.
以2020年为例,受疫情影响,本年度课程激增,开出新课87门,新增用户2 403人,课程主要集中在电子信息、土木工程和计算机等专业,新增课程资源400 Gbyte.为此,学校专门组建了教师服务团队和教师服务群,为使用“开物云课堂”的教师答疑解惑.
教师使用的主要功能有:课件与视频资源共享、测验、作业、问卷调查和论坛交流,其中在线批阅作业功能受到了教师和学生的普遍好评.
服务器虚拟化技术的普及,使得学校自行部署中等规模的在线课程平台成为可能.通过反向代理和负载均衡等技术,优化Moodle开源系统的web服务器、MySQL数据库的部署及网络文件系统,定制Moodle的功能,使其支持IPv6,对接统一认证,能够在线批阅反馈作业和自定义试题库.建设适合学校特点的课程平台“开物云课堂”,解决了老师开展在线教学工作时的痛点.多年的运行实践证明,本研究提出的基于开源Moodle的分布式方案成本较低、部署方便、运行稳定、平台操作简单,能够满足普通本科院校开展在线课程学习的需求.
深圳大学学报理工版
JOURNAL OF SHENZHEN UNIVERSITY SCIENCE AND ENGINEERING
(1984年创刊 双月刊)
主 管 深圳大学
主 办 深圳大学
编辑出版 深圳大学学报理工版编辑部
主 编 李清泉
国内发行 深圳市邮电局
国外发行 中国国际图书贸易集团有限公司(北京399信箱)
地 址 北京东黄城根北街16号
邮 编 100717
电 话 0755-26732266
0755-26538306
Email journal@szu.edu.cn
标准刊号 ISSN 1000-2618
CN 44-1401/N