腾讯云搭建Moodle网络课程平台

起因及原由

善良体贴又美丽大方的Miss Li老师给我找了个活干,说让我帮某学院的某老师打理下Moodle平台。我当时一脸懵逼,Moodle?啥玩意儿啊?因为(google 你懂的)所以baidu了一下,得出:

Moodle(魔灯)介绍

Moodle(Modular Object Oriented Dynamic Learning Environment)是“面向对象的模块化动态学习环境”的首字母缩写。为了促进Moodle在我国教育中的使用更加本土化,黎加厚教授给Moodle翻译了一个中文名称“魔灯”。正如 Google的中文名“谷歌”,蕴含“丰收之歌”的含义一样,“魔灯”则蕴含“教师是课堂上的真正魔法师,而Moodle则是他手中的那盏阿拉丁神灯”(取自老幼皆知的《一千零一夜》传说故事)。

Moodle主要功能大致分为网站管理功能、学习管理功能、课程管理三大部分,其中课程管理中有灵活、丰富的课程活动:论坛、测验、资源、投票、问卷调查、作业、聊天室、BlogWiki等。Moodle拥有多种语言版本,其中包括中文简体和繁体版。

Moodle是目前世界上最流行的课程管理系统(CMS)之一,由于它是开源软件、免费、设计的教育理念先进,其开放的理念使得全世界的老师和爱好者都可以参与到系统的设计开发中,其功能愈来愈强大,成为国际上首选的能够替代 Blackboard的适合中小学基础教育选用的学习环境。(Blackboard是一款功能和服务都很强大的优秀的商品化课程管理系统软件,目前正在国内的许多高校推广。)

于是便将注意力转移到moodle上来了。发现其实是个开源的CMS,用于教育和学习领域。当时折腾了好一番,才搭建了一个测试的moodle

好吧,下面直入正题:使用腾讯云云主机搭建最新版本的Moodle(Moodle 3.2.3+):(距最新版本发布的时间仅2天)

0x01 准备工作

系统选择

其实在之前的本地搭建过程中,最悲催的事情就是Moodle的系统环境选择了,曾经尝试过单独使用XAMPP的集成环境来搭建,没想到各种问题,特别是PHP扩展的支持和MySQL版本的支持,很头疼呀。这个小玩意怎么生存的环境怎么这么苛刻。

腾讯云云主机镜像选择

操作系统:CentOS 7.1 64
PHP运行环境:(CentOS7.1 64Apache | PHP 多版本)V1.0

软件版本详细:

l Apache2.4.18
l PHP5.3.29l PHP5.4.45l PHP5.5.33l PHP5.6.19l PHP7.0.4
l MySQL5.6.29
l Redis3.0.7
l Memcached1.4.25
l Jemalloc4.1.0
l Pure-FTPd1.0.42
l phpMyAdmin4.4.15.5

功能亮点:

1. 基于腾讯云源码安装,安全、稳定、高效!
2. 源码编译安装,细节安全优化,纯命令行,占用系统资源低
3. jemalloc 优化 MySQL 内存管理;
4. 支持 PHP5.3、5.4、5.5、5.6 和 PHP7.0 版本自由切换
5. 交互添加 Apache 虚拟主机,方便快捷
6. 菜单式 FTP 账号管理脚本,轻松建立 ftp 虚拟用户
7. 提供在线 MySQL、PHP、Redis、phpMyAdmin 升级脚本
8. 提供本地备份和远程备份(服务器之间 rsync)

用此镜像的优点:

包含:

OneinStack Linux+Nginx/Tengine+MySQL/MariaDB/Percona+PHP+Pureftpd+phpMyAdmin+redis+memcached+jemalloc/tcmalloc

脚本中用到的软件包大多最新稳定版本。

其他准备:

主域名一个(这个你总得有吧,提前解析到云主机上)
FTP 管理工具(FlashFXP)
Linux 终端命令工具(Xshell 5)

最后准备好板凳瓜子西瓜奶茶,边嗑边吃边喝边看我表演~

0x02 基础环境配置

配置之前进行参数优化:

cd /root/oneinstack

./optimize.sh 

首先我们看到最新版本的配置要求:

PHP

版本选择:php5.6

./change_php_version.sh

安装路径:/usr/local/php56(这里太坑了,一般都以为是/usr/local/php,我也是觉得奇怪才寻找到的)

MySQL

版本选择:默认版本 MySQL5.6.29即可。

安装路径:/usr/local/mysql

默认环境配置文件路径:/etc/my.cnf

MySQL配置:

查看和修改数据库密码:

 grep dbrootpwd options.conf
./reset_db_root_password.sh

创建一个数据库moodle

create database moodle;
show databases;
exit

授权用户并开启远程连接

首先要在腾讯云控制端–>安全组–>添加入站规则–>设置3306端口开放

iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT       //添加允许 3306 端口访问
service iptables save //保存 iptables 规则

数据库用户授权远程登录

grant all privileges on moodle.* to linuxeye@'%' identified by '123456';
flush privileges;

远程连接,我使用的是phpstudy里面的MySQL-Front工具,数据库管理或者远程连接很方便,推荐大家使用!

FTP 创建账户和连接

cd /root/oneinstack
./pureftpd_vhos\t.sh

0x03 真正部署 Moodle

创建虚拟目录(网站目录):

得到网站根目录:/data/wwwroot/www.xxx.org

linux中下载Moodle最新版本,并解压到网站目录下:

wget https://download.moodle.org/stable32/moodle-latest-32.tgz
tar -zxvf moodle-latest-32.tgz -C /data/wwwroot/www.xxx.org

赋予目录权限:

chown -R www.www /data/wwwroot/

0x04 问题出现

0x05 问题解决

问题 1

Your database has tables using Antelope as the file format.
Full UTF-8 support in MySQL and MariaDB requires the Barracuda file format. Please convert the tables to the Barracuda file format. 
See the documentation Administration via command line for details of a tool for converting InnoDB tables to Barracuda.

解决方案:

由描述中,我们可以看出,AntelopeBarracudaMySQL中常用的两种文件格式,此处需要将Antelope全部转换为Barracuda格式。

 MySQL [(none)]> show variables like "%innodb_file%";
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| innodb_file_format | Antelope |
| innodb_file_format_check | ON |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | ON |
+--------------------------+----------+
4 rows in set (0.00 sec)

MySQL [(none)]> SET GLOBAL innodb_file_format = barracuda;
Query OK, 0 rows affected (0.02 sec)

MySQL [(none)]> SET GLOBAL innodb_file_format_max = barracuda;
Query OK, 0 rows affected (0.05 sec)

MySQL [(none)]> show variables like "%innodb_file%";
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| innodb_file_format | Barracuda |
| innodb_file_format_check | ON |
| innodb_file_format_max | Barracuda |
| innodb_file_per_table | ON |
+--------------------------+-----------+
4 rows in set (0.00 sec)

MySQL [(none)]>

此时我们可以看见问题一已经完美解决。

问题 2

For full support of UTF-8 both MySQL and MariaDB require you to change your MySQL setting ‘innodb_large_prefix’ to ‘ON’. 
See the documentation for further details.

解决方案:按报错的提示,将innodb_large_prefix设置为on,下面提供最简便的方法,设置全局变量GLOBAL innodb_large_prefix=on

MySQL [(none)]> SET GLOBAL innodb_large_prefix=on;
Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]>

另一种方法可以去更改MySQL的配置文件/etc/my.cnf,在my.cnf中加入 innodb_large_prefix=on,完美解决错误提示。

之后的设置网站内容过程就不赘述了,附上一张以前搭建的小Moodle截图。

0x06 经验总结

个人觉得Moodle这个CMS并不是最佳选择,无论是环境部署还是网站运营,都有特殊性和限制性。想要做出好的Moodle网站,无论是后台的运营,还是前台的美工设计,无不花尽心思耗费人力资源。吾等吃瓜群众只能远观之,外行折腾这个玩意耗费时间,宝宝心里真苦,宝宝还是坚强的忍了。另外对于网上查找资料,百度的大部分都是几年前的陈年旧货,很多都不再适用。强烈推荐去官方论坛寻找答案,虽然是英文的,英文不好的可以使用有道翻译。

对于Moodle的二次开发的还有巨大空间,毕竟国内的Moodle只有部分学校使用,并未达到广泛普及。

在安全方面,如果各位朋友们谁有闲暇的时间,可以尝试着对Moodle进行白盒测试、代码审计,或许会有许多重大发现的!我这个小白就暂且放放,继续打基础。

0x07:最后的祝愿:

希望想搭建Moodle平台的同学看完此文可以成功搭建好一个Moodle平台,更多的Moodle相关技术,还需要加强经验积累。小弟不才,就在这里终止Moodle生涯了,不再折腾咯。在这里向Moodle告别,有缘再见!

文章目录

发表评论

发表评论

*

沙发空缺中,还不快抢~