基于Mysql数据库Moodle课程迁移的解决方案
2009-06-20乔显亮
乔显亮
文章编号:1672-5913(2009)10-0180-02
摘要:Moodle平台作为一个优秀的开放式网络课程管理系统,可以方便地用来构建网络课程。本文主要论述了Moodle课程迁移到新的服务器后,由于服务器IP地址的改变而造成课程资源中部分链接失效的问题,分析了问题产生的原因,并找出了解决方案。
关键词:Moodle;课程;Mysql;迁移
中图分类号:G642
文献标识码:A
Moodle是Modular Object-Oriented Dynamic Learning Environment(模块化面向对象的动态学习环境)的缩写,是专门针对广大教师在信息化环境中设计、管理、实施和评价自己的课程与教学而开发的课程管理系统。Moodle自诞生之日起就以自由软件的形式出现,遵循GPL(GNU Public License)协议,这使它充满了无穷的活力,吸引了一大批开发者和使用者,目前主流版本是1.9版。
1Moodle数据迁移中存在的问题
Moodle可以运行在Windows环境下,首次使用需要安装,安装成功后,系统会生成一个名为config.php的文件,内含服务器的配置信息。如果要把Moodle整体迁移到另外一台服务器上,只要拷贝整个Moodle文件夹到新服务器上,并把config.php文件中wwwroot项对应的IP地址改为新服务器的IP地址,就可以了。
教师在使用Moodle建设课程资源的时候,往往用一台计算机作为服务器添加教学活动和课程资源,完成网络课程的制作。在这些课程资源建设完成后,若要迁移到另外一台服务器上,课程资源中的有些内容可以正常显示,但是有些图片或文件可能会因为链接无效而导致课程资源无法使用,这些问题可用通过修改Mysql数据库中的数据予以解决。
2原因分析
Moodle中可以添加多种资源,主要包括编写文本页、编写网页、链接到文件或站点、显示一个目录、部署IMS包和插入标签等,不同类型的资源在Mysql数据库对应表中的字段类型和长度等不同。表1中以显示一个图片为例,列出了使用“链接到文件”显示图片和使用“编写网页”显示一个嵌入式图片的区别,这两条记录都是存储在表mdl_resource中。
由表1可见,通过“链接到文件”所链接的图片,保存在reference字段中,保存的仅是文件名,是一种相对路径的存储,没有固定地和服务器IP地址对应,只要相对位置的图片还存在,在整个Moodle课程拷贝到其他服务器上时,仍然会正常显示;而通过“编写网页”在网页中嵌入图片,是在alltext字段中存储了该网页的html语句,其中的211.87.171.227是创建该网页时所使用服务器的IP地址,alltext字段中的内容不会因为服务器IP地址的改变而改变,该图片将因找不到IP地址所指向的文件而无法显示。
除了图片文件外,其他类型的文件也都存在这种相对位置引用和使用IP地址进行引用的问题。而“添加活动”在Mysql中的存储方式和资源的存储方式类似,只不过不同的活动存储在不同的表中。
3解决方案和步骤
Moodle平台后台数据库可用Mysql,在数据库管理方面,可以使用命令行,但是太多命令不利于记忆;可以借助于Mysql Administrator管理,但是在安装和使用方面不是很方便。
PhpMyadmin 是一个以PHP为基础,以Web-Base方式架构在网站服务器上的Mysql的数据库管理工具,可以管理整个Mysql服务器,界面简单友好,在Moodle中可以借助于PhpMyadmin进行数据库的管理。
3.1在Moodle中添加PhpMyadmin
Moodle1.9版中不包含PhpMyadmin,可以从官方下载站点http://www.PhpMyadmin.net/下载,解压后得到一个名为PhpMyadmin的文件夹,直接拷贝PhpMyadmin文件夹到..servermoodle文件夹下。
3.2修改配置文件
进入..PhpMyadminlibraries目录,打开config.default.php文件,找到以下各项,将其后的字符串进行修改,如下:
$cfg['PmaAbsoluteUri'] = '211.87.165.136';
//新服务器的IP地址
$cfg['Servers'][$i]['host'] = 'localhost';
//通常用默认
$cfg['Servers'][$i]['user'] = 'root';
// Mysql的默认用户
$cfg['Servers'][$i]['password'] = '123456';
// 密码须与设置Moodle时相对应
$cfg['DefaultLang'] = 'zh';
//选择语言,zh代表简体中文
3.3Mysql数据库管理
打开IE浏览器,输入http:// 211.87.165.136/PhpMyadmin,211.87.165.136就是新服务器的IP地址,就可以用PhpMyadmin管理包括Moodle数据库在内的Mysql数据库,如图1所示。
图1 用PhpMyadmin管理Moodle数据库
3.4修改资源的链接
为了能够使课程资源在迁移到新服务器上之后能正常使用,需要修改相关表中的内容,把用文本形式(VARCHAR或MULTITEXT等类型)记录的链接资源修改与新服务器相对应。Moodle数据库共有200多张表,在课程资源建设完成以后,逐个表进行检查和修改是不可行的,可以使用游标,用存储过程自动逐条进行修改。
在Moodle数据库中建立存储过程P_ChangeIP,找出含有VARCHAR、MULTITEXT或TEXT类型的字段及其表名,定义一个游标,每次返回的结果是表名和其中的字段名,用CONCAT函数拼接字符串构建SQL语句,在Update命令中使用Replace进行更新,用新服务器的IP地址替换原服务器的IP地址。
存储过程的代码如下:
CREATE PROCEDURE P_ChangeIP( )
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE tname,cname VARCHAR(64);
DECLARE cur1 CURSOR FOR
SELECT table_name,column_name
FROM information_schema.columns
where table_schema = "moodle" and
(data_type like "%varchar%" or data_ type like "%text%");
--information_schema是系统数据库,通过它可获取Moodle数据库的表名、列名等信息
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
REPEAT
FETCH cur1 INTO tname,cname;
IF NOT done THEN
set @sql_text:=concat("update ",tname, "set ",cname ," = replace(",cname,",
'211.87.171.227','211.87.165.136')");
prepare stmt from @sql_text;
execute stmt;
deallocate prepare stmt;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
END
存储过程定义完成后,使用CALL Moodle.P_ChangeIP( )命令执行之,就可以一次性完成对相关链接数据的修改了。
4结束语
作为一个正在不断成长、日趋成熟的网络教学平台,Moodle的技术在不断改进之中, 其技术改进需要使用者共同参与,进一步优化软件功能,开发更多适合国情的教学模块,为教学提供更好的技术支持。随着功能的不断完善,Moodle必将为学校的网络课程资源建设提供强有力的支持,成为提升教学质量的有力工具。
参考文献:
[1] 刘贯南,刘荣光,刘晓琴. 基于Moodle网络课程的设计与实施探索[J]. 现代教育技术,2008(6).
[2] 曹效英,徐勤岸. 基于Moodle的网络课程开发[J]. 软件导刊,2008(4).
[3] 杨慧玲,张志洁. Moodle平台在网络教育资源建设中的应用[J]. 教育技术导刊,2007(8).
[4] 陈恒法,罗兵. 基于Moodle 教学辅助系统的应用实践[J]. 中国教育信息化,2007(5).
Solution to Moodle Course Migration Based on Mysql Database
QIAO Xian-liang
(Qingdao Ocean Shipping Mariners College, Qingdao 266071,China )
Abstract: Moodle is an excellent open course management system, It is powerful and easily to operate, can be expediently used to set up a network course. When Moodle course migrate to a new server, some hyperlink resources are disabled because of the change of the new server IP address, analyzing the reason, bringing forward a feasible solution.
Key words: Moodle; course; Mysql; migration