楊公義
(北京大學教師教學發展中心,北京100871)
基于edX的北大慕課平臺搭建及與北大視頻資源庫的集成
楊公義
(北京大學教師教學發展中心,北京100871)
edX開源慕課平臺有4種安裝方式,在服務器上的全新安裝,需要滿足一定的軟硬件和網絡要求,網絡條件好時可采用一步安裝法,北大采用手動安裝法,采用transifex-client和gettext對edX平臺進行了漢化。edX平臺的正常使用必須的配置和管理包括首頁修改、配置管理員Email、創建超級管理員、創建和刪除課程。在創建一門課的完整過程中,通過rtmp協議添加一講來自北大視頻資源庫中的視頻。北大校內edX慕課平臺主要作為師生的教學輔助平臺。
edX安裝漢化;edX配置管理;edX課程建設;edX流媒體集成
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開源慕課平臺有4種安裝方式[1]。①開發者包安裝:為了方便開發而簡化了很多配置,能讓開發者發現和修復問題[2];②完全包安裝:盡管這種類似產品的安裝,包括了很多edX服務,但并不推薦生成環境下采用這種方式[3];③亞馬遜機器映像安裝:通過預先安裝好的亞馬遜機器映像來調用亞馬遜的Web服務[4];④在Ubuntu 12.04 64-bit服務器上的全新安裝[5]。所有安裝方式都帶有的組件是:LMS(學習管理系統)、Studio(課程制作環境)、論壇、討論組、搜索。后三種安裝方式比第一種增加了演示課程組件和Xqueue(為自定義級別而采用RabbitMQ的隊列服務器)。本文采用最后一種安裝方式:在Ubuntu 12.04 64-bit服務器上全新安裝,在生產環境下推薦采用這種安裝方式。
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,增加下列內容:

為了保證每次重啟電腦后代理的配置仍然可用。需要修改/ect/sudoers和/etc/apt/ap

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可采用一步安裝法和手動安裝法。一步安裝法,一步安裝法即
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 aptget 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,gitclone 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表示讓程序后臺執行。
1.加載環境
Transifex是一個基于Web的集成翻譯平臺,transifex-client是Transifex的命令行客戶端工具,gettext是GNU國際化與本地化(i18n)函數庫,為了對edX漢化,需要安裝 transifex-client和 gettext,方法如下:$cd~/edX_all/edX-platform,$sudo apt-get install transifexclient,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"],"dummylocale":"eo"}
4.修改~/edX_all/edX-platform/中的lms/envs/common.py和ms/envs/common.py
關鍵內容為:USE_I18N=True,TIME_ZONE='A-sia/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、djangopartial.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。

圖1 登錄北大自主搭建并漢化的edX系統

圖2 展開小節會出現New Unit創建新組件按鈕

圖3 新組件有四種類型:討論、內容、問題、視頻

圖4 在圖3中單擊視頻可添加http協議的視頻

圖5 登錄北大視頻資源庫拷貝一講視頻的播放代碼

圖6 CTRL+V粘貼來自北大視頻資源庫中的視頻

圖7 在LMS中觀看http協議的視頻

圖8 在LMS中觀看RTMP流協議的視頻
1.首頁定制
首頁的源文件位置是:/home/mooc/edX_all/edX-platform/lms/templates/index.html,首頁banner位置是/home/mooc/edX_all/edX-platform/lms/static/images/homepagebg.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。
教師帳戶在圖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所示,登錄北大視頻資源庫瀏覽到所需要的一講視頻,單擊拷貝按鈕,就在用戶的剪貼板中放入了一講視頻的播放代碼:〈div style="WIDTH:800px;HEIGHT:600px; margin-right:auto;margin-left:auto;"〉〈embed width=" 800"height="600"type="application/x-shockwave-flash" src=http://etv.pku.edu.cn/jw/player.swf flashvars="file= courses/048/04830540-0006166222-1/47/01-20060107.flv&streamer=rtmp://fms.pku.edu.cn/vod"wmode="transparent"allowfullscreen="true"allowscriptaccess="always" bgcolor="undefined"/〉〈/div〉。把這段代碼加入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.
(編輯:王曉明)
TP315
B
1673-8454(2016)23-0046-05