葉濤
摘? 要 在線學習平臺是開展在線學習或混合學習的基礎(chǔ)。闡述目前應(yīng)用最廣泛的開源在線學習平臺Moodle最新版本的構(gòu)建過程及其中的關(guān)鍵技術(shù),對新版本Moodle所依賴的基礎(chǔ)軟件環(huán)境及各模塊的關(guān)聯(lián)進行充分解釋與配置展示,為構(gòu)建在線學習平臺和開展在線學習活動支持提供示范與參考。
關(guān)鍵詞 Moodle;在線學習;學習平臺;數(shù)據(jù)庫;MySQL;PHP
中圖分類號:G642? ? 文獻標識碼:B
文章編號:1671-489X(2019)06-0023-04
Key Technology about Constructing Online Learning Platform based Moodle//YE TaoAbstract Construction of online learning platform is the base of both?online learning and blend learning. The paper elaborates on the constructing process about open source online learning platform based on the latest version Moodle, including the key technology, infrastructure software and configure of dependent module. It pro-vides demonstration and reference for constructing online learning platform and carrying out online learning activity.
Key words Moodle; online learning; learning platform; data base; MySQL; PHP
1 前言
隨著信息技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)速度不斷提升,無線網(wǎng)絡(luò)覆蓋面不斷擴大,智能移動終端普及流行,在線學習已迅速成為學校教學、社會教育、終身教育的有效學習模式。在高校中,線上學習與線下教學的混合教學模式日漸受到重視,而開展在線學習的基礎(chǔ)是構(gòu)建有效的在線學習平臺。在線學習平臺構(gòu)建方式主要有定制開發(fā)、購買商品平臺或利用免費開源平臺。因構(gòu)建周期短、費用成本低,利用開源免費平臺的構(gòu)建方式應(yīng)用越來越廣泛,而對開源免費平臺,Moodle因其功能強大、更新快速而受到廣泛應(yīng)用。
Moodle新版本具有許多新特性和新功能,其運行支持軟件環(huán)境的構(gòu)建與原來版本有一些變化。下面以Moodle 3.4在Windows Server 2012 R2服務(wù)器上構(gòu)建在線學習平臺為例,詳細介紹其構(gòu)建過程與關(guān)鍵技術(shù)。平臺的環(huán)境框架如圖1所示。
平臺構(gòu)建前,最好對服務(wù)器空間使用進行規(guī)劃,可選擇一個空白的、容量足夠大的磁盤分區(qū)作為Moodle運行環(huán)境與存放Moodle數(shù)據(jù),以便于以后系統(tǒng)的管理與維護。如選擇3.5 T的E盤作為Moodle的運行環(huán)境與數(shù)據(jù)空間。根據(jù)Moodle 3.4的環(huán)境要求[1],確定軟件環(huán)境各模塊的版本要求如表1所示。
2 Apache服務(wù)器的構(gòu)建
Windows Server 2012 R2自帶微軟的Web服務(wù)器IIS,
而Moodle是使用PHP語言開發(fā)的,PHP一般運行的Web服務(wù)器是Apache,因此需將Windows Server 2012 R2自帶的默認的Web服務(wù)器IIS關(guān)閉,安裝Apache服務(wù)器作為PHP運行的Web服務(wù)器,并使用IIS原來使用的80端口監(jiān)聽請求。
根據(jù)表1的要求下載Windows X64的Apache 2.4.29 ZIP壓縮包[2]。將下載的Apache壓縮包httpd-2.4.29-o102n-
x64-vc14-r2.zip解包后,目錄下有一個readme_first.html說明文件與Apache24文件夾,Apache24文件夾內(nèi)包含Apache運行所需要的文件,將其拷貝至服務(wù)器E盤根目錄上;然后打開readme_first.html,里面介紹了壓縮包版的Apache安裝方法及主要的安裝、啟動、停止、卸載等命令。
在服務(wù)器上運行CMD,打開命令行窗口,在命令窗口中輸入E:,回車進入E盤,輸入cd e:\Apache24\bin進入e:\Apache24\bin目錄中。輸入httpd-k install進行Apache服務(wù)安裝。一般地,沒有升級或打補丁的系統(tǒng)往往會提示沒有系統(tǒng)安裝VC運行庫,不能安裝。這是由于操作系統(tǒng)沒有安裝Apache安裝所需要的運行庫導(dǎo)致的,因此要上微軟官網(wǎng)上下載Visual C++ Redistributable for Visual
Studio 2015 Update 1[3]并安裝,即可解決此問題。安裝后,再運行httpd-k install命令,便可成功安裝。打開瀏覽器,在地址欄輸入http://localhost,會打開apache的說明網(wǎng)頁,說明Apache安裝成功。
3 安裝PHP環(huán)境
Moodle是使用PHP開發(fā)的,因此,它的運行需要配置PHP環(huán)境。Moodle 3.4版本對PHP的版本要求是7.0以上,具體下載的是x64版的php7.2 zip包[4],將解包后的文件夾復(fù)制至服務(wù)器E盤,將文件夾重命名為php7,并將e:/php7文件夾中的php-production.ini重命名為php.ini。PHP帶有兩個ini文件:一個是php.ini-development,面向開發(fā)時使用;一個是php-production.ini,面向生產(chǎn)使
用。根據(jù)需要,選用php-production.ini,將其重命名為php.ini。php.ini就是PHP初始化的自動檢測并據(jù)此進行相關(guān)配置的配置文件。為了Moodle在安裝時能找到php.ini文件,需要在環(huán)境變量Path中加入e:\php7;e:\php7\bin路徑,這樣系統(tǒng)在需要php.ini文件時,會根據(jù)Path的變量值在e:\php7;e:\php7\bin路徑下尋找php.ini文件。
配置完P(guān)HP后,還需要設(shè)置在Apache啟動時加載PHP模塊。在E:/Apache24/conf/下找到Apache的配置文件httdconf.ini文件,使用記事本打開,加入以下語句:
LoadModule php7_module “e:/php7/php7apache2_4.dll”
PHPIniDir “e:/php7”
AddHandler application/x-httpd-php.php
第一行語句加載PHP7模塊,第二行語句確定PHP初始目錄,第三行語句將擴展名為php的文件關(guān)聯(lián)到應(yīng)用,使Apache通過PHP模塊進行解釋執(zhí)行。
在e:/Apache24/conf/httpd.conf文件,這是Apache的配置文件,在
php,并位于index.html之前,如下所示:
DirectoryIndex index.php index.html
上述語句作用是讓網(wǎng)站默認起始頁為index.php,且優(yōu)先權(quán)先于index.html,因為Moodle的首頁就是index.php,這樣用戶訪問時不需要輸入起始頁,只需輸入域名或IP加虛擬目錄即可
保存修改后的httpd.conf文件,要使修改后httpd.conf文件起作用,必須重啟Apache服務(wù),使用命令httpd -k restart重啟Apache服務(wù)器。
通過上面的配置,Apache應(yīng)該具有處理PHP文件的能力,可以寫個測試的PHP文件來檢測,將下列代碼輸入記事本中,并保存為test.php文件放在Apache24/htdocs/目錄下:
<?php
phpinfo();
?>
在瀏覽器下輸入http://localhost/test.php,如果能夠看到相關(guān)PHP系統(tǒng)信息,說明PHP配置成功。
4 安裝數(shù)據(jù)庫MySQL
Moodle 3.4要求MySQL的版本最低為5.5.31,這里使用的是MySQL 5.7.21的Windows X64版本Zip壓縮包[5]。解包后將包含bin目錄的上一級文件夾拷貝至服務(wù)器E盤上,重命名該文件夾為mysql57,在系統(tǒng)變量path中增加e:/mysql57字串。這是關(guān)鍵,否則初始化時系統(tǒng)找不到MySQL的配置文件my.ini。
在E盤上建立MySQL數(shù)據(jù)庫及數(shù)據(jù)表存放的文件夾mysql57-data。與以往的版本有所不同,MySQL 5.7的ZIP包解壓后沒有my.ini文件,需要手工建立。打開記事本,輸入以下語句:
[mysqld]
basedir=d:\\mysql57
datadir=d:\\mysql57_data
命名為my.ini,保存在e:/mysql57文件夾中。上述指令告訴系統(tǒng)MySQL的基礎(chǔ)目錄與數(shù)據(jù)目錄的具體位置,用于初始化。有了my.ini文件后,可以進行MySQL初始化。運行cmd命令,打開命令行窗口,進入e:\mysql57\bin目錄,輸入如下指令:
Mysqld --defaults-file=”e:\mysql57\my.ini” –initialize
上述指令使用剛設(shè)置的my.ini文件進行初始化,若初始化成功,則會在d:\mysql57-data下建立系統(tǒng)數(shù)據(jù)庫等文件,并隨機產(chǎn)生數(shù)據(jù)庫root用戶的密碼,密碼存放在mysql57-data目錄下的[主機名].err文件中。[主機名]表示根據(jù)實際安裝所在的主機名命名的文件,其擴展名為err。用記事本打開這個文件,看到隨機產(chǎn)生的root密碼。初始化成功后就可以安裝MySQL服務(wù)了,在命令行窗口中使用以下命令安裝MySQL服務(wù):
Mysqld-install
使用以下命令啟動MySQL服務(wù):
Net start mysql
測試MySQL服務(wù),在命令行窗口輸入如下指令:
Mysql-u root-p
輸入隨機密碼,成功進入MySQL界面,提示符為mysql>,
這時可用以下命令將系統(tǒng)隨機產(chǎn)生的密碼修改為自己設(shè)定的密碼:
mysql> ALTER USER ‘root@localhost IDENTIFIED BY ‘new_password;
至此,MySQL安裝完成。
5 PHP 7與MySQL 5.7的關(guān)聯(lián)
要使PHP與MySQL相關(guān)聯(lián),必須在php.ini配置文件中設(shè)置,在命令行窗口中進入php所在的目錄,如E:/php7,
找到php.ini文件并用記事本打開,找到以下語句:
;extension_dir
將語句前的分號刪除,并在句后加入=“e:\php7\ext”,
如下所示:
extension_dir=“e:\php7\ext”
再找到如下語句:
;extension=mysqli
刪除句前的分號,保存文件。
上述修改所做的工作就是告訴PHP擴展目錄的具體位置,并明確告訴PHP要使用MySQLi擴展庫,這是連接PHP與MySQL的橋梁。
在命令行窗口進入E:\apache24\bin目錄,使用以下命令重啟Apache服務(wù)器以使修改過的php.ini配置生效:
httpd-k restart
重啟后要測試PHP能否成功連接MySQL,將下列代碼輸入記事本中:
<?php
$mysqli = new mysqli(“l(fā)ocalhost”, “root”, “q9qXp%U,
ZodT”);
if(!$mysqli)? {
echo”database error”;
}else{
echo”php env successful”;
}
$mysqli->close();
?>
將文件命名為dbtest.php,保存在E:\Apache24\htdocs中。這段代碼是使用root賬號和初始化時隨機產(chǎn)生的密碼(如果修改過密碼則要用新密碼)連接本地的MySQL,如果連接成功,則提示php env successful,否則提示database
error。
在瀏覽器中輸入http://localhost/dbtest.php,如果出現(xiàn)php env successful,則說明PHP與MySQL鏈接成功。
至此,Moodle所需要的運行環(huán)境Apache、PHP、MySQL已經(jīng)配置完成,可以進行Moodle的安裝。
6 Moodle的安裝
MySQL環(huán)境參數(shù)的設(shè)置? Moodle安裝之前,首先要對MySQL進行一些設(shè)置,使用以下命令檢查MySQL數(shù)據(jù)文件格式的設(shè)置:
SHOW GLOBAL VARIABLES WHERE variable_name IN (‘innodb_file_format, ‘innodb_large_prefix, ‘innodb_file_per_table);
如果顯示為以下內(nèi)容,則數(shù)據(jù)文件格式設(shè)置適合,不用修改:
innodb_file_format:Barracuda
innodb_file_per_table:ON
innodb_large_prefix:ON
在上述參數(shù)中,innodb_file_format是指innodb文件所使用的格式,MySQL在5.7后innodb文件格式默認為Barracuda[6],這種格式支持許多新特性。早期版本的innodb文件所使用的格式稱為Antelope,以兼容早期版本,在這里只需確保使用Barracuda即可。innodb_file_per_table
值為ON時,表示系統(tǒng)會為每一張表使用一個單獨的文件,存入表的數(shù)據(jù)內(nèi)容與索引內(nèi)容。如果為OFF,則所有表的數(shù)據(jù)內(nèi)容與索引內(nèi)容會共享使用一個文件。這里需要確保innodb_file_per_table值為ON,在MySQL 5.6以后的版本,系統(tǒng)默認innodb_file_per_table值為ON。innodb_large_prefix為ON時,允許列索引最大達到3072 bytes,否則列索引最大只有767 bytes[7]。在這里,要確保innodb_large_
prefix為ON。
創(chuàng)建供Moodle使用的空的數(shù)據(jù)庫? 以root賬戶進入MySQL系統(tǒng),使用以下命令創(chuàng)建空的數(shù)據(jù)庫:
mysql> CREATE DATABASE moodle DEFAULT CHARAC
TER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
上述命令的作用是創(chuàng)建一個名為moodle的數(shù)據(jù)庫,它默認使用的字符集是utf8mb4,排序規(guī)則為utf8mb4_unicode_
ci。utf8mb4兼容utf8,且比utf8能表示更多的字串,因此兼容性更好[8]。將創(chuàng)建的數(shù)據(jù)庫名字moodle記下,在Moodle安裝時需要輸入。
創(chuàng)建數(shù)據(jù)庫的使用者? 使用以下命令創(chuàng)建數(shù)據(jù)庫moodle
的使用者,并賦予其所需的權(quán)限:
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,
CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,
ALTER ON moodle.* TO moodleuser@localhost IDENTIFIED BY ‘yourpassword;
在上述命令中,創(chuàng)建一個名為moodleuser的用戶及密碼,然后賦予其具有對moodle數(shù)據(jù)庫中表數(shù)據(jù)具有選取、插入、更新、刪除、創(chuàng)建權(quán)限,賦予其具有創(chuàng)建臨時數(shù)據(jù)表,清除、索引、修改moodle數(shù)據(jù)庫中數(shù)據(jù)表的權(quán)限。記下這個用戶名與密碼,在Moodle安裝時需要輸入。
創(chuàng)建Moodle的數(shù)據(jù)目錄? 創(chuàng)建Moodle的數(shù)據(jù)目錄,如E:/moodledata,這個目錄專門用于存放Moodle在使用過程中客戶端上傳的文件。記下這個目錄名字,在Moodle安裝時需要輸入。
安裝Moodle? 下載Moodle 3.4 zip[9]包,解包后將Moodle目錄下文件拷貝到Apache24下的htdocs目錄中。這樣就可以基于Web形式安裝Moodle。打開瀏覽器,在地址欄中輸入http://localhost/install.php,依次按提示輸入上述步驟所設(shè)置的內(nèi)容,如數(shù)據(jù)庫所在主機地址、Moodle
使用的數(shù)據(jù)庫名、Moodle使用的數(shù)據(jù)庫的用戶名與密碼等。Moodle安裝程序自動地進行一系列表的創(chuàng)建,最后成功安裝。
7 Moodle初次使用出現(xiàn)的三個問題及其解決方法
空白頁問題的解決? Moodle 3.4版安裝好后,使用http://localhost訪問。應(yīng)該打開Moodle的首頁,即Apache24/htdocs下的index.php,瀏覽器卻跳至Apache24/
htdocs/admin/index.php頁,內(nèi)容一直是空白,重安裝幾次都是這樣。劉興認為這是首頁的檢測語句引起的,“但是在首次安裝后進入首頁時,這些檢測的判斷語句過于復(fù)雜和冗余。可能會導(dǎo)致某些終端在安裝時出現(xiàn)頁面重定向循環(huán)問題”[10]。筆者并給出具體解決方法。
首次使用時,將以下引起重定向的檢測語句注釋掉:
if ((isset($_GET[cache]) and $_GET[cache] === 0)
......
} else {$cache = 1;}
通過注釋這段代碼,使得Moodle平臺在第一次安裝后進入該頁面,不去考慮cache值的設(shè)置,而直接進入平臺的主頁面;在目錄欄內(nèi)輸入http://localhost/index.php?
cache=1。再對平臺進行操作時,這時數(shù)據(jù)庫和緩存中會有新生成數(shù)據(jù)的寫入。再在index.php文件中恢復(fù)上述注釋的代碼段[10]。再次打開Moodle平臺時,檢測機制會順利地通過,從而避免因檢測語句冗余而產(chǎn)生的頁面重定向循環(huán)問題。
遠程訪問時服務(wù)器IP轉(zhuǎn)為localhost問題及其解決方法? 在服務(wù)器上安裝Moodle,一直使用的是localhost作為服務(wù)器的地址,安裝完畢后在別的電腦訪問時就要使用服務(wù)器的IP來訪問Moodle,如在服務(wù)器上使用的http://localshot安裝與訪問,在別的計算機上訪問就要換成服務(wù)器的IP,如用http://192.168.170.247來進行訪問。
但是,筆者在電腦上使用IP訪問服務(wù)器,卻重定向至http://localhost,恰好本地也裝了Moodle,因此,本想訪問遠程服務(wù)器的Moodle,卻會跳轉(zhuǎn)至本地的Moodle上。一開始以為是Apache的httpd.conf文件的配置問題,但是反復(fù)檢查httpd.conf,設(shè)置沒問題;再檢查服務(wù)器Apache/
htdocs目錄下的Moodle的config.php文件,發(fā)現(xiàn)$CFG->wwwroot=http://localhost,也就是當遠程訪問至服務(wù)器首頁時,首頁會做設(shè)置后再按$CFG->wwwroot的值進行跳轉(zhuǎn),這樣就會從服務(wù)器跳回本機。因此,需要將$CFG->wwwroot的值修改為服務(wù)器IP,如下所示:
$CFG->wwwroot=http://192.168.170.247
上述問題解決了,就可以從別的電腦遠程訪問服務(wù)器上的Moodle平臺首頁了。
Moodle上傳文件大小限制及其修改? 在初次使用Moodle時會發(fā)現(xiàn)文件上傳有大小限制,使得許多稍大的教學資源無法上傳。因此,需要重新設(shè)置上傳文件的大小限制。在服務(wù)器PHP 7目錄下打開php.ini,找到Upload_max_filesize和Post_max_size變量,根據(jù)實際需要重新設(shè)置參數(shù)值,如下所示,將上傳文件大小限制改為2048 M(2 G):
Upload_max_filesize=2048M
Post_max_size=2048M
修改后保存文件,并重啟Apache以使新設(shè)置生效,這樣就可以將上傳文件大小的限制改為2 G,滿足上傳大文件的需要。
8 結(jié)語
Moodle是使用較為普遍的一個免費開源平臺,它更新速度快,不斷添加新的功能與特性,但隨之要求的支撐環(huán)境也要升級更新。本文通過一個具體的較新版本的Moodle 3.4的構(gòu)建案例,詳細描述基于新版本Moodle構(gòu)建在線學習平臺的過程,對新版本Moodle所依賴的Apache、PHP、MySQL版本要求、新版本安裝方法等關(guān)鍵問題進行演示與解釋,特別是與大多數(shù)使用一體化安裝程序自動安裝Apache、PHP、MySQL不同,采用手動分別安裝與配置Apache、PHP、MySQL,詳細揭示Apache、PHP、MySQL如何進行關(guān)聯(lián)以及關(guān)鍵參數(shù)配置。例如:MySQL新版本沒有my.ini文件,需要手工設(shè)置及初始化;使用MySQL新版本,使用MySQLi替代MySQL進行驅(qū)動。這對于擬基于Moodle構(gòu)建在線學習平臺,開展信息化教學的廣大教師具有參考示范作用。并且通過理解Moodle環(huán)境的構(gòu)建過程,加深對Moodle運作的理解,為以后Moodle平臺的升級、遷移、數(shù)據(jù)備份與恢復(fù)、架構(gòu)調(diào)整、解決在實際使用中出現(xiàn)的問題等奠定堅實的基礎(chǔ)?!?/p>
參考文獻
[1]Moodle 3.4 release notes[EB/OL].[2018-3-7].https://docs.moodle.org/dev/Moodle_3.4_release_notes#Server_requirements.
[2]Apache Haus Downloads[DB/OL].https://www.apachehaus.com/cgi-bin/download.plx#APACHE24VC14.
[3]Visual C++ Redistributable for Visual Studio 2015?Update 1[DB/OL].https://www.microsoft.com/en-us/download/details.aspx?id=49984.
[4]Binaries and sources Releases[DB/OL].https://windows.php.net/download#php-7.2.
[5]Download MySQL Community Server[DB/OL].https://dev.mysql.com/downloads/mysql/5.7.html#downloads.
[6]InnoDB File-Format Management[DB/OL].https://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html.
[7]關(guān)于InnoDB索引長度限制的tips[EB/OL].https://www.oschina.net/question/54100_70589.
[8]utf8mb4和utf8有什么區(qū)別[EB/OL].https://zhidao.baidu.com/question/747866266575799012.html.
[9]Other supported releases[DB/OL].https://download.moodle.org/releases/supported/.
[10]劉興.Moodle安裝部署過程中重定向循環(huán)問題的解決方案[J].電子技術(shù)與軟件工程,2016(19):74-75.