基于edX的北大慕课平台搭建及与北大视频资源库的集成

2017-04-15 00:01杨公义
中国教育信息化·高教职教 2016年12期

杨公义

摘 要:edX开源慕课平台有4种安装方式,在服务器上的全新安装,需要满足一定的软硬件和网络要求,网络条件好时可采用一步安装法,北大采用手动安装法,采用transifex-client和gettext对edX平台进行了汉化。edX平台的正常使用必须的配置和管理包括首页修改、配置管理员Email、创建超级管理员、创建和删除课程。在创建一门课的完整过程中,通过rtmp协议添加一讲来自北大视频资源库中的视频。北大校内edX慕课平台主要作为师生的教学辅助平台。

关键词:edX安装汉化;edX配置管理;edX课程建设;edX流媒体集成

中图分类号:TP315 文献标志码:B 文章编号:1673-8454(2016)23-0046-05

一、引言

MOOC世界的三驾马车Coursera、edX、Udacity中只有edX平台是开源的。edX平台是麻省理工学院和哈佛大学创立,由全球27所大学院校组成的xConsortium加以管理。edX平台大部分功能基于Python实现,其中也包括一些Ruby和Node.js代码。清华大学的学堂在线也是基于edX搭建的。安装基于edX平台时,按照官方提供的一步安装法,会因为用户的网络条件等原因而安装不成功。比如,在官方网站上没有写明需要手动安装一个名为polib-1.0.3的软件包,在国内就必须手动安装该软件包,因为该软件包的官方网站国内不能直接访问。edX的系统设计者是把教学视频是放在第三方视频网站youtube上的,而在国内该网站(http://www.youtube.com/)也无法访问。北大基于edX开源系统搭建了北大慕课平台,并实现了通过RTMP流直接调用“北大视频资源库”中的教学视频的功能。

二、edX开源慕课平台的安装方式概述

针对不同的需求,edX开源慕课平台有4种安装方式[1]。①开发者包安装:为了方便开发而简化了很多配置,能让开发者发现和修复问题[2];②完全包安装:尽管这种类似产品的安装,包括了很多edX服务,但并不推荐生成环境下采用这种方式[3];③亚马逊机器映像安装:通过预先安装好的亚马逊机器映像来调用亚马逊的Web服务[4];④在Ubuntu 12.04 64-bit服务器上的全新安装[5]。所有安装方式都带有的组件是:LMS(学习管理系统)、Studio(课程制作环境)、论坛、讨论组、搜索。后三种安装方式比第一种增加了演示课程组件和Xqueue(为自定义级别而采用RabbitMQ的队列服务器)。本文采用最后一种安装方式:在Ubuntu 12.04 64-bit服务器上全新安装,在生产环境下推荐采用这种安装方式。

三、edX开源慕课平台安装的软硬件和网络要求

1.硬件要求、服務器版本要求及连接国际网的要求

(1)硬件要求

内存推荐4G以上;CPU至少2G;硬盘50G以上。

(2)服务器版本要求

Ubuntu 12.04 amd64。

(3)连接国际网的要求

安装edX之前必须保证服务器能上国际网,服务器上国际网的方法共4种:①直接上网,不需要任何配置;②通过PPPoE 进行ADSL拨号上网;③通过代理服务器上网;④通过VPN拨号上网。下面详细说明Ubuntu服务器的后3种上网方法。北大采用的是第4种。

2.Ubuntu服务器通过PPPoE进行ADSL拨号上网的方法

首先启用有线连接:sudo ifconfig eth0 up,然后执行pppoeconf命令:sudo pppoeconf,接下来一个基于文本菜单的程序会指导我们完成配置:

①确认以太网卡已被检测到;②输入PPPoE的用户名;③输入PPPoE的密码;④如果已经配置了一个PPPoE的连接,会通知这个连接将会被修改;⑤弹出一个选项:询问是否需要'noauth'和'defaultroute'选项和去掉'nodetach',选择"Yes";⑥Use peer DNS,选择 "Yes";⑦Limited MSS problem,选择"Yes";⑧询问是否在需要在进入系统的时候自动连接,选择"Yes";⑨询问是否马上建立连接,选择"Yes";至此,通过PPPoE成功拨号上网。需要手动断开网络时,可以在终端输入:sudo poff;需要手动连网时,可以在终端中输入:sudo pon dsl-provider。

3.Ubuntu服务器通过代理服务器上网的方法

在/etc/environment文件中增加代理服务器及端口信息,sudo vi /etc/environment,增加下列内容:

https_proxy=http://proxy.local.com:PORT,

ftp_proxy=http://proxy.local.com:PORT,

socks_proxy=http://proxy.local.com:PORT,

no_proxy=localhost,

JAVA_OPTS="-DproxyHost=proxy.local.com -DproxyPort=PORT"。

为了保证每次重启电脑后代理的配置仍然可用。需要修改/ect/sudoers和/etc/apt/ap

t.conf两个文件。在/ect/sudoers中的Defaults env_reset这一行下面增加一行:

Defaults env_keep += "http_proxy https_prox

y

ftp_proxy socks_proxy no_proxy JAVA_OPT

S"

在/etc/apt/apt.conf中增加两行:

Acquire::http::proxy "http://proxy.local.com:P

ORT";

Acquire::https::proxy http://proxy.local.com:P

ORT。

4.Ubuntu服务器通过PPTP协议进行VPN拨号上网的方法

安装pptp客户端软件sudo apt-get install pptp-linux,创建VPN连接通道:myvpn sudo pptpsetup --create myvpn --server xxx.xxx.xxx.xxx --username xx1--password xx2--encrypt –start。如果VPN服务器不需要加密,可不加--encrypt参数。现在已经在/etc/ppp/peers目录下面,生成一个叫myvpn的文件,用户名和密码会写在/etc/ppp/chap-secrets中。可通过跟踪数据包到达网络主机所经过的路由工具traceroute来测试VPN。安装traceroute:sudo apt-get install traceroute,traceroute www.163.com,返回结果1 localhost (192.168.1.1)。查看结果发现第1跳localhost后面()中的IP不是VPN的服务器地址,所以需要修改默认路由。修改默认路由之前要通过ifconfig查看网络连接配置,得到VPN连接的名称,在ifconfig命令的返回结果中有一个名为ppp0的Point-to-Point协议的VPN连接,所以VPN连接的名称为ppp0。修改默认路由的方法为sudo ip route del default,sudo ip route add default dev ppp0,再次通过traceroute追踪路由:traceroute www.163.com,返回结果1 localhost (),返回的结果中的localhost()中的IP是VPN的服务器地址,至此VPN配置成功。重启VPN连接的命令sudo pon myvpn,停止VPN连接的命令sudo poff myvpn。

5.在服务器能上网的情况下更新Ubuntu包的源

在终端依次执行下列命令sudo apt-get update-y,sudo apt-get upgrade-y,sudo reboot。

四、edX开源慕课平台的安装

edX可采用一步安装法和手动安装法。一步安装法,一步安装法即

wget https://raw.githubusercontent.com/edX/co

nfiguration/master/util/install/sandbox.sh -O-| bash

一步安装法的缺点是:因为网络问题,安装的过程中会出现一些错误,解决办法只能是,保证能连国际网的情况下,重新执行一步安装法,已经执行的步骤还要重新执行一次,费时费力,对于网络状态非常好的用户,才建议采用一步安装法。

北大采用的手动安装方法,详细步骤如下:建议在安装前把超级管理员的密码改成简单易记的,因为安装时如果采用sudo su会导致一些安装脚本失败,安装的过程中差不多要sudo二十几次,每次都需要输入密码。安装一个支持ruby的vim编辑器sudo apt-get install git vim-nox,修改/etc/apt/sources.list,去掉"partner" and "extras" 的资源库的注释:deb http://archive.canonical.com/ubuntu precise partner,deb-src http://archive.canonical.com/ubuntu precise partner,deb http://extras.ubuntu.com/ubuntu precise main,deb-src http://extras.ubuntu.com/ubuntu precise main。

再次更新Ubuntu包的源并重启服务器:sudo apt-get update,sudo apt-get dist-upgrade,sudo reboot。重新配置shell为bash而不是dash:sudo dpkg-reconfigure dash在出现的对话框中Use dash as the default system shell(/bin/sh)选择NO。创建并进入/home/mooc/edX_all目录,执行git clone克隆一个edX-platform的本地版,cd /home/mooc/edX_all,git clone git://github.com/edX/edX-platform.git,cd edX-platform/,执行下列脚本:./scripts/create-dev-env.sh,因为会出现各种各样的错误,所以该安装脚本会被多次重复执行,如果出错为:Looks like you're already in the "edX-platform" virtual env.Run `deactivate` and then re-run this script。解决办法为执行deactivate,再次执行上述脚本。mooc@edX:~/edX_all/edX-platform$./scripts/create-dev-env.sh。如果出错为:Import failed (cannot load such file -- sys/proctable),解决办法为gem install sys-proctable,gem install colorize再次执行上述脚本。如果出错为:wrong number of arguments (2 for 1),解决办法为sudo apt-get install libopenssl-ruby1.9.1,gem install rake,rbenv rehash,然后再次执行上述脚本。如果出错为:cannot load such file-launchy,解决办法为gem install launchy,再次执行上述脚本。如果出错为:Error timed out while getting http://bitbucket.org/izi/polib/downloads/polib-1.0.3.tar.gz (from https://pypi.python.org/simple/polib/),因为该官网国内无法访问,解决办法不能为gem install polib,也不能为pip install polib,只能为到其他网站搜索一个polib,例如,手动下载下列文件http://pkgs.fedoraproject.org/repo/pkgs/python-polib/polib-1.0.3.tar.gz/,并上传到/home/mooc,然后手动安装polib:$ tar xzfv polib-1.0.3.tar.gz,$ cd polib-1.0.3,$ python setup build,如果出错为:python: can't open file 'setup': [Errno 2] No such file or directory,解决办法为python setup.py build,然后执行$ sudo python setup.py install,如果出錯为:-bash: /home/mooc/.rvm/scripts/rvm: No such file or directory解决办法为$ sudo apt-get install ruby-rvm,cd ~,source .bashrc,编辑/home/mooc/edX_all/edX-platform/requirements/edX/base.txt , 找到“polib = 1.0.3" ,把这一行注释掉#polib==1.0.3;再次执行create-dev-env.sh脚本。编辑 scripts/create_dev_env.sh文件,找到"pip install -r $BASE/edX-platform/requirements/edX/pre.txt",在后面添加一行"pip install http://bitbucket.org/izi/polib/get/1.0.3.tar.gz",原因是:polib依赖项经过pypi的解析得到的下载地址是http://bitbucket.org/izi/polib/downloads/polib-1.0.3.tar.gz,但在我国内陆,这个地址上访问不了,而polib是必须的依赖项,所以只能是使用变相的方式将其安装上去。再次执行上述create_dev_env.sh脚本。终于成功了Fixing your git default settings Success!!

启动edX:$ source /etc/bash_completion.d/virtualenvwrapper,cd ~/edX_all/edX-platform,$workon edX-platform,$ rake lms第一次执行rake lms可能会出错: [sass --load-path ./common/static/sass --u...]。解决办法为:$ gem install sass。(edX-platform)mooc@edX:~/edX_all/edX-platform$ rake lms[cms.dev,0.0.0.0:8000],^Z,$ bg,浏览器中可以访问http://162.105.14.247:8000(本地址限校内访问),(edX-platform)mooc@edX:~/edX_all/edX-platform$ rake cms[dev,0.0.0.0:9000],^Z,$ bg。

浏览器中可以访问http://162.105.14.247:9000,上面^Z意思是ctrl+Z,$ bg表示让程序后台执行。

五、edX开源慕课平台的汉化

1.加载环境

Transifex是一个基于Web的集成翻译平台,transifex-client是Transifex的命令行客户端工具,gettext是GNU国际化与本地化(i18n)函数库,为了对edX汉化,需要安装transifex-client和gettext,方法如下:$cd ~/edX_all/edX-platform, $sudo apt-get install transifex-client,sudo apt-get install gettext。启用python的虚拟环境$source /home/mooc/.virtualenvs/edX-platform/bin/activate。

2.新建文件

为了下载edX语言包,需要到transifex 官网(https://www.transifex.com/projects/p/edX-platform/)注册一个帐户。例如用户名yanggy密码ygy。新建文件vim ~/.transifexrc,并输入如下内容:hostname = https://www.transifex.com,password = ygy,token =,username = yanggy。

3.在~/edX_all/edX-platform/conf/locale/config文件中加入中文語言

增加的内容为{"locales" : ["zh_CN","en"], "dummy-locale" : "eo"}

4.修改~/edX_all/edX-platform/中的lms/envs/common.py和ms/envs/common.py

关键内容为:USE_I18N = True,TIME_ZONE = 'Asia/Shanghai',LANGUAGE_CODE='zh_CN',LANGUAGES = ( ('zh-cn', u'中文(简体)'), # Chinese (China),)。

5.执行几个命令

获取项目的翻译包tx pull -l zh_CN, 执行翻译rake i18n:generate。如果出错为:找不到/django-partial.po、django.po、django-partial.mo、django.mo、djangojs.po,解决办法为:用浏览器访问https://www.transifex.com/projects/p/edX-platform/,依次单击语言包djangojs.po、django-partial.po、django.po、messages.po、mako.po再单击“下载以供使用”下载到本地以后,再上传到/home/mooc/edX_all/edX-platform/conf/locale/en/LC_MESSAGES中,再次执行翻译命令$ rake i18n:generate,重启服务器完成汉化工作$ sudo reboot。完成汉化后的效果如图1所示。如果用户登录之后的内部页面没有汉化,解决办法为:在用户注册时在偏好的语言字段输入zh-cn。

六、edX开源慕课平台的配置和管理

1.首页定制

首页的源文件位置是:/home/mooc/edX_all/edX-platform/lms/templates/index.html,首页banner位置是/home/mooc/edX_all/edX-platform/lms/static/images/homepage-bg.jpg。

2.配置管理员Email

为了让edX平台能给用户发邮件,需要进行如下配置,修改~/edX_all/edX-platform/目录下的cms/envs/common.py和lms/envs/common.py,关键代码:邮件服务器主机EMAIL_HOST = '162.105.129.120',邮件服务器端口EMAIL_PORT = 25,是否使用安全传输层协议:EMAIL_USE_TLS = False,邮箱用户名:EMAIL_HOST_USER = '00061*',邮箱密码:EMAIL_HOST_PASSWORD = '*',默认发件人:DEFAULT_FROM_EMAIL = 'ygy@pku.edu.cn',默认反馈Email:DEFAULT_FEEDBACK_EMAIL = 'ygy@pku.edu.cn',服务器Email:SERVER_EMAIL = 'ygy@pku.edu.cn'。

3.创建超级管理员

cd /home/mooc/edX_all/edX-platform,$ rake django-admin["createsuperuser"],系统提示用户输入用户名、邮箱、密码、最后系统提示创建成功。超级管理员登录下列后台地址:http://162.105.14.247:9000/admin/,超级管理员可以创建教师帐户,教师帐户可以创建课程,学生帐户可以在首页进行注册。

4.超级管理员删除课程的方法

edX在前台没有删除课程的功能,删除课程只能通过后台以下列命令进行。例如有一门课前台浏览地址为:http://162.105.14.247:8000/courses/pku/001/2013/,删除这门课程的方法为:cd /home/mooc/edX_all/edX-platform,$rake cms:delete_course LOC=pku/001/2013 COMMIT=commit。

七、在edX慕课平台中创建一门课并添加一讲来自北大视频资源库中的视频

教师帐户在图1中登录成功后,可在右上角单击“新建课程”,输入下列课程元数据:课程名称、组织(学校的英文名称,如PKU)、课程代码(如ETC17)、课程运行(指学期,如2014),后面3个元数据是课程url的一部分,所以不能有空格和特殊字符,并且创建之后不能修改,成功创建一门课后直接进入了该课的课程大纲编辑页面,然后单击“添加新章节”,输入章的名称(如第1章 Flex概述),单击保存,然后单击“添加新的小节”,输入小节名称(如,1.1Flex简介),单击保存进入图2,单击小节名称左侧的向右箭头使它向下,出现“New Unit”创建新组件按钮。在图2中单击“New Unit”创建新组件按钮进入图3,新组件有四种类型:讨论、内容、问题、视频。对于一个通过http协议可访问的视频,如http://124.95.153.9/cm1/flvs/ca/QxtYM/uLf93xvlOf-10.mp4,可直接添加进edX,方法是在图3中单击Video进入图4,把这个http地址输入Video URL字段,单击保存,在前台LMS中浏览该视频的效果如图7所示。http协议可访问的mp4视频虽然可以很容易地加入edX课程中,但不利于保护视频版权,因为前台用户可以通过查看源代码的方式,获取该视频的地址,进而能下载该视频。为保护视频版权,北大基于Flash流媒体服务器搭建了北大视频资源库,北大视频资源库能方便地为第三方系统提供rtmp流協议的视频服务,如图5所示,登录北大视频资源库浏览到所需要的一讲视频,单击拷贝按钮,就在用户的剪贴板中放入了一讲视频的播放代码:

。把这段代码加入edX的方法如下,在图3中单击html输入标题。然后单击text,再单击编辑,如图6所示,在图6中CTRL+V粘贴来自北大视频资源库中的视频,单击保存。在前台LMS中浏览该视频的效果如图8所示,图8中的播放控制条,可以快进、快退、全屏播放等。因为是rtmp协议的视频播放,前台用户只能在线观看不能下载,很好地保护了版权。

八、结语

北大成功地搭建、汉化和配置了基于edX的校内慕课平台,并实现在edX系统中能通过RTMP流观看视频资源库中的视频,很好地保护了视频的版权。校内edX慕课平台主要作为北大校内师生的教学辅助平台,实现翻转课堂教学法,与传统教学进行优势互补,在校内使用的同时进行课程建设,如果教师及相关管理部门同意将某门课程向社会公开,就把该课程从校内edX平台迁移进国际edX平台(http://www.edX.org/school/pekingx)。建设北大校内慕课平台为北大师生提高了平台访问速度,节省了国际流量。

参考文献:

[1]edX/configuration[EB/OL].https://github.com/edX/configuration/wiki.

[2]edX Developer Stack[EB/OL].https://github.com/edX/configuration/wiki/edX-Developer-Stack.

[3]edX Full Stack[EB/OL].https://github.com/edX/configuration/wiki/edX-Full-Stack.

[4]Single AWS server installation using Amazon Machine Image[EB/OL].https://github.com/edX/configuration/wiki/Single-AWS-server-installation-using-Amazon-Machine-Image.

[5]edX Ubuntu 12.04 64 bit Installation[EB/OL].https://github.com/edX/configuration/wiki/edX-Ubuntu-12.04-64-bit-Installation.

(编辑:王晓明)