构建基于Moodle在线学习平台的关键技术

2019-10-12 05:50叶涛
中国教育技术装备 2019年6期
关键词:学习平台在线学习数据库

叶涛

摘  要 在线学习平台是开展在线学习或混合学习的基础。阐述目前应用最广泛的开源在线学习平台Moodle最新版本的构建过程及其中的关键技术,对新版本Moodle所依赖的基础软件环境及各模块的关联进行充分解释与配置展示,为构建在线学习平台和开展在线学习活动支持提供示范与参考。

关键词 Moodle;在线学习;学习平台;数据库;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 前言

随着信息技术的不断发展,网络速度不断提升,无线网络覆盖面不断扩大,智能移动终端普及流行,在线学习已迅速成为学校教学、社会教育、终身教育的有效学习模式。在高校中,线上学习与线下教学的混合教学模式日渐受到重视,而开展在线学习的基础是构建有效的在线学习平台。在线学习平台构建方式主要有定制开发、购买商品平台或利用免费开源平台。因构建周期短、费用成本低,利用开源免费平台的构建方式应用越来越广泛,而对开源免费平台,Moodle因其功能强大、更新快速而受到广泛应用。

Moodle新版本具有许多新特性和新功能,其运行支持软件环境的构建与原来版本有一些变化。下面以Moodle 3.4在Windows Server 2012 R2服务器上构建在线学习平台为例,详细介绍其构建过程与关键技术。平台的环境框架如图1所示。

平台构建前,最好对服务器空间使用进行规划,可选择一个空白的、容量足够大的磁盘分区作为Moodle运行环境与存放Moodle数据,以便于以后系统的管理与维护。如选择3.5 T的E盘作为Moodle的运行环境与数据空间。根据Moodle 3.4的环境要求[1],确定软件环境各模块的版本要求如表1所示。

2 Apache服务器的构建

Windows Server 2012 R2自带微软的Web服务器IIS,

而Moodle是使用PHP语言开发的,PHP一般运行的Web服务器是Apache,因此需将Windows Server 2012 R2自带的默认的Web服务器IIS关闭,安装Apache服务器作为PHP运行的Web服务器,并使用IIS原来使用的80端口监听请求。

根据表1的要求下载Windows X64的Apache 2.4.29 ZIP压缩包[2]。将下载的Apache压缩包httpd-2.4.29-o102n-

x64-vc14-r2.zip解包后,目录下有一个readme_first.html说明文件与Apache24文件夹,Apache24文件夹内包含Apache运行所需要的文件,将其拷贝至服务器E盘根目录上;然后打开readme_first.html,里面介绍了压缩包版的Apache安装方法及主要的安装、启动、停止、卸载等命令。

在服务器上运行CMD,打开命令行窗口,在命令窗口中输入E:,回车进入E盘,输入cd e:\Apache24\bin進入e:\Apache24\bin目录中。输入httpd-k install进行Apache服务安装。一般地,没有升级或打补丁的系统往往会提示没有系统安装VC运行库,不能安装。这是由于操作系统没有安装Apache安装所需要的运行库导致的,因此要上微软官网上下载Visual C++ Redistributable for Visual

Studio 2015 Update 1[3]并安装,即可解决此问题。安装后,再运行httpd-k install命令,便可成功安装。打开浏览器,在地址栏输入http://localhost,会打开apache的说明网页,说明Apache安装成功。

3 安装PHP环境

Moodle是使用PHP开发的,因此,它的运行需要配置PHP环境。Moodle 3.4版本对PHP的版本要求是7.0以上,具体下载的是x64版的php7.2 zip包[4],将解包后的文件夹复制至服务器E盘,将文件夹重命名为php7,并将e:/php7文件夹中的php-production.ini重命名为php.ini。PHP带有两个ini文件:一个是php.ini-development,面向开发时使用;一个是php-production.ini,面向生产使

用。根据需要,选用php-production.ini,将其重命名为php.ini。php.ini就是PHP初始化的自动检测并据此进行相关配置的配置文件。为了Moodle在安装时能找到php.ini文件,需要在环境变量Path中加入e:\php7;e:\php7\bin路径,这样系统在需要php.ini文件时,会根据Path的变量值在e:\php7;e:\php7\bin路径下寻找php.ini文件。

配置完PHP后,还需要设置在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的文件关联到应用,使Apache通过PHP模块进行解释执行。

在e:/Apache24/conf/httpd.conf文件,这是Apache的配置文件,在标签内,加入index.

php,并位于index.html之前,如下所示:

DirectoryIndex index.php index.html

上述语句作用是让网站默认起始页为index.php,且优先权先于index.html,因为Moodle的首页就是index.php,这样用户访问时不需要输入起始页,只需输入域名或IP加虚拟目录即可

保存修改后的httpd.conf文件,要使修改后httpd.conf文件起作用,必须重启Apache服务,使用命令httpd -k restart重启Apache服务器。

通过上面的配置,Apache应该具有处理PHP文件的能力,可以写个测试的PHP文件来检测,将下列代码输入记事本中,并保存为test.php文件放在Apache24/htdocs/目录下:

<?php

phpinfo();

?>

在浏览器下输入http://localhost/test.php,如果能够看到相关PHP系统信息,说明PHP配置成功。

4 安装数据库MySQL

Moodle 3.4要求MySQL的版本最低为5.5.31,这里使用的是MySQL 5.7.21的Windows X64版本Zip压缩包[5]。解包后将包含bin目录的上一级文件夹拷贝至服务器E盘上,重命名该文件夹为mysql57,在系统变量path中增加e:/mysql57字串。这是关键,否则初始化时系统找不到MySQL的配置文件my.ini。

在E盘上建立MySQL数据库及数据表存放的文件夹mysql57-data。与以往的版本有所不同,MySQL 5.7的ZIP包解压后没有my.ini文件,需要手工建立。打开记事本,输入以下语句:

[mysqld]

basedir=d:\\mysql57

datadir=d:\\mysql57_data

命名为my.ini,保存在e:/mysql57文件夹中。上述指令告诉系统MySQL的基础目录与数据目录的具体位置,用于初始化。有了my.ini文件后,可以进行MySQL初始化。运行cmd命令,打开命令行窗口,进入e:\mysql57\bin目录,输入如下指令:

Mysqld --defaults-file=”e:\mysql57\my.ini” –initialize

上述指令使用刚设置的my.ini文件进行初始化,若初始化成功,则会在d:\mysql57-data下建立系统数据库等文件,并随机产生数据库root用户的密码,密码存放在mysql57-data目录下的[主机名].err文件中。[主机名]表示根据实际安装所在的主机名命名的文件,其扩展名为err。用记事本打开这个文件,看到随機产生的root密码。初始化成功后就可以安装MySQL服务了,在命令行窗口中使用以下命令安装MySQL服务:

Mysqld-install

使用以下命令启动MySQL服务:

Net start mysql

测试MySQL服务,在命令行窗口输入如下指令:

Mysql-u root-p

输入随机密码,成功进入MySQL界面,提示符为mysql>,

这时可用以下命令将系统随机产生的密码修改为自己设定的密码:

mysql> ALTER USER ‘root@localhost IDENTIFIED BY ‘new_password;

至此,MySQL安装完成。

5 PHP 7与MySQL 5.7的关联

要使PHP与MySQL相关联,必须在php.ini配置文件中设置,在命令行窗口中进入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服务器以使修改过的php.ini配置生效:

httpd-k restart

重启后要测试PHP能否成功连接MySQL,将下列代码输入记事本中:

<?php

$mysqli = new mysqli(“localhost”, “root”, “q9qXp%U,

ZodT”);

if(!$mysqli)  {

echo”database error”;

}else{

echo”php env successful”;

}

$mysqli->close();

?>

將文件命名为dbtest.php,保存在E:\Apache24\htdocs中。这段代码是使用root账号和初始化时随机产生的密码(如果修改过密码则要用新密码)连接本地的MySQL,如果连接成功,则提示php env successful,否则提示database

error。

在浏览器中输入http://localhost/dbtest.php,如果出现php env successful,则说明PHP与MySQL链接成功。

至此,Moodle所需要的运行环境Apache、PHP、MySQL已经配置完成,可以进行Moodle的安装。

6 Moodle的安装

MySQL环境参数的设置  Moodle安装之前,首先要对MySQL进行一些设置,使用以下命令检查MySQL数据文件格式的设置:

SHOW GLOBAL VARIABLES WHERE variable_name IN (‘innodb_file_format, ‘innodb_large_prefix, ‘innodb_file_per_table);

如果显示为以下内容,则数据文件格式设置适合,不用修改:

innodb_file_format:Barracuda

innodb_file_per_table:ON

innodb_large_prefix:ON

在上述参数中,innodb_file_format是指innodb文件所使用的格式,MySQL在5.7后innodb文件格式默认为Barracuda[6],这种格式支持许多新特性。早期版本的innodb文件所使用的格式称为Antelope,以兼容早期版本,在这里只需确保使用Barracuda即可。innodb_file_per_table

值为ON时,表示系统会为每一张表使用一个单独的文件,存入表的数据内容与索引内容。如果为OFF,则所有表的数据内容与索引内容会共享使用一个文件。这里需要确保innodb_file_per_table值为ON,在MySQL 5.6以后的版本,系统默认innodb_file_per_table值为ON。innodb_large_prefix为ON时,允许列索引最大达到3072 bytes,否则列索引最大只有767 bytes[7]。在这里,要确保innodb_large_

prefix为ON。

创建供Moodle使用的空的数据库  以root账户进入MySQL系统,使用以下命令创建空的数据库:

mysql> CREATE DATABASE moodle DEFAULT CHARAC

TER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

上述命令的作用是创建一个名为moodle的数据库,它默认使用的字符集是utf8mb4,排序规则为utf8mb4_unicode_

ci。utf8mb4兼容utf8,且比utf8能表示更多的字串,因此兼容性更好[8]。将创建的数据库名字moodle记下,在Moodle安装时需要输入。

创建数据库的使用者  使用以下命令创建数据库moodle

的使用者,并赋予其所需的权限:

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,

CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,

ALTER ON moodle.* TO moodleuser@localhost IDENTIFIED BY ‘yourpassword;

在上述命令中,创建一个名为moodleuser的用户及密码,然后赋予其具有对moodle数据库中表数据具有选取、插入、更新、删除、创建权限,赋予其具有创建临时数据表,清除、索引、修改moodle数据库中数据表的权限。记下这个用户名与密码,在Moodle安装时需要输入。

创建Moodle的数据目录  创建Moodle的数据目录,如E:/moodledata,这个目录专门用于存放Moodle在使用过程中客户端上传的文件。记下这个目录名字,在Moodle安装时需要输入。

安装Moodle  下载Moodle 3.4 zip[9]包,解包后将Moodle目录下文件拷贝到Apache24下的htdocs目录中。这样就可以基于Web形式安装Moodle。打开浏览器,在地址栏中输入http://localhost/install.php,依次按提示输入上述步骤所设置的内容,如数据库所在主机地址、Moodle

使用的数据库名、Moodle使用的数据库的用户名与密码等。Moodle安装程序自动地进行一系列表的创建,最后成功安装。

7 Moodle初次使用出现的三个问题及其解决方法

空白页问题的解决  Moodle 3.4版安装好后,使用http://localhost访问。应该打开Moodle的首页,即Apache24/htdocs下的index.php,浏览器却跳至Apache24/

htdocs/admin/index.php页,内容一直是空白,重安装几次都是这样。刘兴认为这是首页的檢测语句引起的,“但是在首次安装后进入首页时,这些检测的判断语句过于复杂和冗余。可能会导致某些终端在安装时出现页面重定向循环问题”[10]。笔者并给出具体解决方法。

首次使用时,将以下引起重定向的检测语句注释掉:

if ((isset($_GET[cache]) and $_GET[cache] === 0)

......

} else {$cache = 1;}

通过注释这段代码,使得Moodle平台在第一次安装后进入该页面,不去考虑cache值的设置,而直接进入平台的主页面;在目录栏内输入http://localhost/index.php?

cache=1。再对平台进行操作时,这时数据库和缓存中会有新生成数据的写入。再在index.php文件中恢复上述注释的代码段[10]。再次打开Moodle平台时,检测机制会顺利地通过,从而避免因检测语句冗余而产生的页面重定向循环问题。

远程访问时服务器IP转为localhost问题及其解决方法  在服务器上安装Moodle,一直使用的是localhost作为服务器的地址,安装完毕后在别的电脑访问时就要使用服务器的IP来访问Moodle,如在服务器上使用的http://localshot安装与访问,在别的计算机上访问就要换成服务器的IP,如用http://192.168.170.247来进行访问。

但是,笔者在电脑上使用IP访问服务器,却重定向至http://localhost,恰好本地也装了Moodle,因此,本想访问远程服务器的Moodle,却会跳转至本地的Moodle上。一开始以为是Apache的httpd.conf文件的配置问题,但是反复检查httpd.conf,设置没问题;再检查服务器Apache/

htdocs目录下的Moodle的config.php文件,发现$CFG->wwwroot=http://localhost,也就是当远程访问至服务器首页时,首页会做设置后再按$CFG->wwwroot的值进行跳转,这样就会从服务器跳回本机。因此,需要将$CFG->wwwroot的值修改为服务器IP,如下所示:

$CFG->wwwroot=http://192.168.170.247

上述问题解决了,就可以从别的电脑远程访问服务器上的Moodle平台首页了。

Moodle上传文件大小限制及其修改  在初次使用Moodle时会发现文件上传有大小限制,使得许多稍大的教学资源无法上传。因此,需要重新设置上传文件的大小限制。在服务器PHP 7目录下打开php.ini,找到Upload_max_filesize和Post_max_size变量,根据实际需要重新设置参数值,如下所示,将上传文件大小限制改为2048 M(2 G):

Upload_max_filesize=2048M

Post_max_size=2048M

修改后保存文件,并重启Apache以使新设置生效,这样就可以将上传文件大小的限制改为2 G,满足上传大文件的需要。

8 结语

Moodle是使用较为普遍的一个免费开源平台,它更新速度快,不断添加新的功能与特性,但随之要求的支撑环境也要升级更新。本文通过一个具体的较新版本的Moodle 3.4的构建案例,详细描述基于新版本Moodle构建在线学习平台的过程,对新版本Moodle所依赖的Apache、PHP、MySQL版本要求、新版本安装方法等关键问题进行演示与解释,特别是与大多数使用一体化安装程序自动安装Apache、PHP、MySQL不同,采用手动分别安装与配置Apache、PHP、MySQL,详细揭示Apache、PHP、MySQL如何进行关联以及关键参数配置。例如:MySQL新版本没有my.ini文件,需要手工设置及初始化;使用MySQL新版本,使用MySQLi替代MySQL进行驱动。这对于拟基于Moodle构建在线学习平台,开展信息化教学的广大教师具有参考示范作用。并且通过理解Moodle环境的构建过程,加深对Moodle运作的理解,为以后Moodle平台的升级、迁移、数据备份与恢复、架构调整、解决在实际使用中出现的问题等奠定坚实的基础。■

参考文献

[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]关于InnoDB索引长度限制的tips[EB/OL].https://www.oschina.net/question/54100_70589.

[8]utf8mb4和utf8有什么区别[EB/OL].https://zhidao.baidu.com/question/747866266575799012.html.

[9]Other supported releases[DB/OL].https://download.moodle.org/releases/supported/.

[10]刘兴.Moodle安装部署过程中重定向循环问题的解决方案[J].电子技术与软件工程,2016(19):74-75.

猜你喜欢
学习平台在线学习数据库
数据库
泛在学习环境下微课学习平台的设计策略研究
基于微信及微网站的高职院校移动学习平台设计与实现
信息化环境下高职英语教学现状及应用策略研究
基于混合式学习理念的大学生自主学习能力的培养研究
基于SOA的在线学习资源集成模式的研究
泛在背景下图像处理课程学习平台设计研究
基于校本微课的移动学习平台的设计与研究
数据库
数据库