Chinaunix首页 | 论坛 | 博客
  • 博客访问: 686355
  • 博文数量: 95
  • 博客积分: 1773
  • 博客等级: 上尉
  • 技术积分: 1653
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 23:28
文章分类
文章存档

2018年(2)

2017年(10)

2016年(7)

2015年(48)

2014年(2)

2013年(2)

2012年(2)

2011年(7)

2010年(7)

2009年(3)

2008年(1)

2007年(4)

分类: Web开发

2013-11-06 12:20:15

Debian7-64bit 安装Moodle2.5(基本nginx、php-fpm、mysql)

Debian 与 Moodle 的简介

Debian是由运营发布的一个自由的操作系统,其以强大的apt机制包管理系统和丰富的软件包著称,其可以采用Linux内核或者FreeBSD内核,还支持其他一些内容,如Hurd。此外Debian的发行版还支持巨大数量的硬件架构。基于Debian还有一些延伸发行版本,特别是以Linux内核进行发展的Ubuntu等。

Moodle是以PHP开发的LMS(学习管理系统),数据库方面支持多种SQL数据引擎,这包括Mysql、PostgreSQL、MSSQL和Oracle等等。其以灵活方便的部署和丰富的插件系统在全球被广泛用于各级教学组织。

安装环境及部署要求介绍

在Vmware服务器虚拟环境ESXI5.1中进行部署,分配了2CPU、2G内存、8G磁盘空间,基本系统是Debian7-64bit网络安装版本,只在基本安装时添加了ssh-server以提供远程访问管理,并通过内部nat联上了互联网,本机IP地址为192.168.1.1。

期望以nginx为基本web平台(提供视频流式播放支持)、php5通过fpm环境配合nginx的fastCGI机制执行moodle,此外使用mysql5为数据库环境。

安装过程

基本需求包的安装(采用预编译包apt安装)

apt-get update
apt-get install  vim php5 nginx mysql-server php5-fpm php5-curl php5-gd php5-intl  php5-xmlrpc php5-cli 

其中vim是为了编辑相关文件方便而按照,其余均是moodle运行所需环境。

确认php5与nginx配合的环境已经成功

修改nginx的默认配置,把/etc/nginx/sites-enabled/default文件中

 #location ~ \.php$ {
    #        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

    #       # With php5-cgi alone:
    #       fastcgi_pass 127.0.0.1:9000;
    #       # With php5-fpm:
    #       fastcgi_pass unix:/var/run/php5-fpm.sock;
    #       fastcgi_index index.php;
    #       include fastcgi_params;
    #} 

最前面的#去掉,注意因为我们采用php5-fpm模式,所以还需要在fastcgi_pass 127.0.0.1:9000;前保留至少1个#,最终形式是

 location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

            # With php5-cgi alone:
            #fastcgi_pass 127.0.0.1:9000;
            # With php5-fpm:
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    } 

再运行

/etc/init.d/nginx restart 

使配置修改生效

测试php环境是否正常:

vim /usr/share/nginx/www/testinfo.php 

在testinfo.php中输入

 

通过浏览器访问如果能正常获得php环境信息表示nginx基本配置以及php5-fpm基本配置正常且能正常工作。

获取moodle的源代码包

可以从下载到最新的源代码包,这里下载的是最新的标准版(Stable版)2.5.2+,因为是Linux环境安装,所以下载的是tgz类型包,默认文件名为moodle-latest-25.tgz。使用下面的命令解压

tar zxvf moodle-latest-25.tgz -C /var/wwwmoodle 

到安装目录,这里安装到/var/wwwmoodle目录。

建立数据库并设置访问用户等

$mysql -u root -p
Enter password: 

实现以root用户访问mysql

CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; 

建立moodle数据仓库

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO moodleuser@localhost IDENTIFIED BY 'yourpassword'; 

给moodleuser用户以yourpassword密码在本地访问moodle数据仓库的相应权限。注意这里的moodledb、moodleuser和yourpassword都是可以根据你需要自己设置的,只要记住并在后面安装中保持一致即可。

启动moodle安装

moodle的安装包支持命令行和浏览器环境两种安装模式,下面两种方式都介绍一下。无论采用哪种方式,均需要在nginx的站点配置中实现moodle程序文件目录可读和运行(因为debian预编译安装的nginx是使用www-data用户来运行相应程序的,所以如果需要写入的目录需要赋予www-data用户可写,其他需要可读可运行——对php文件)。因为这里想直接采用就可以访问到moodle平台,所以我们直接编辑了/etc/nginx/sites-enabled/default文件,主要是修改了

server{
...
    root /usr/share/nginx/www;
    index index.html index.htm;
...
} 

使之成为

server{
...
    root /var/wwwmoodle;
    index index.html index.htm index.php;
...
} 

然后运行

/etc/init.d/nginx restart 

使配置修改生效

命令行安装

需要额外增加本地php5运行环境,不过因为moodle服务中有一个cron(周期)执行进程需要用到php5本地运行环境,所以前面已经安装了。

php /var/wwwmoodle/admin/cli/install.php 

这将启动一个命令行对话模式的安装,依次根据情况输入相应的安装地址等即可安装完成,主要有

  • 语言选择== Available language packs ==(当前moodle直接提供了数十种安装语言——也是平台支持语言,这包括汉语简体/zhcn),根据不同的语言选择,后面的提示也随之变化,这里选择的是zhcn(注意:这里默认回车会选择en,也就是英语。在命令行对话模式中,如果出现要求输入的提示信息后面有用()括起的值,则代表可选的默认值,可以直接输入回车完成默认值输入,否则需输入你想设定的值再回车,下同。另如无特殊指定则输入默认值)
  • == 数据目录权限 ==(默认值2777)
  • == 网站地址 == 
  • == 数据目录 ==(/var/moodledata)
  • == 选择数据库驱动 ==(mysqli)
  • == 数据库主机 ==(localhost)
  • == 数据库名 ==(moodle): moodledb 注意这里开始的部分要和前面数据仓库建立时的信息一致
  • == 表格名称前缀 ==(mdl_)
  • == 数据用户名 ==(root): moodleuser
  • == 数据库密码 == : yourpassword
  • == 网站全称 == : Moodle Test
  • == 网站简称 == : Moodle-Test
  • == 管理帐号用户名 ==(admin)
  • == 新管理用户密码 ==: 注意这里需要你自己输入一个想要的值作为后面管理moodle平台的密码(完成安装后可以登入平台再次修改)

然后系统显示一些版权信息,让你确认,需要输入y以继续安装。

如果前面输入的信息没有问题,而且平台需要的支持都已经处理好,则程序将进行安装正确并退出。主要的安装过程其实就是构建系列数据表,并填充系列基本数据等。

至此采用命令行的基本安装就完成了。

在浏览器中输入即可访问到新安装的moodle平台,不过你会发现界面好像有问题,这是因为nginx环境下没有配置php的rewrite规则,使得一些js文件和css文件不能正常获取,处理的最简单办法就是在moodle配置中禁用一个属性,具体是编辑/var/wwwmoodle/config.php,在其中增加一行:

$CFG->slasharguments = false; 

即可。此外还需要把moodle需要执行的一个本地周期进程加入到系统后台中。这个脚本在/var/wwwmoodle/admin/cli/cron.php。使用crontab来编辑添加。

crontab -u www-data -e 

添加的内容是

*/15 * * * * /usr/bin/php /var/wwwmoodle/admin/cli/cron.php >/dev/null 

这表示每15分钟执行一次脚本。

至此利用cli模式的moodle安装已经全部完成了。现在你可以通过正常访问到基本的moodle进行进一步的设置与内容添加了。不过为了安全起见,最好把/var/wwwmoodle/config.php文件的读写权限进行修改,一般改为www-data用户只读即可。

浏览器模式安装

不同于命令行的安装,使用浏览器安装交互感更强,不过也很简单。在新解压moodle源程序包到安装位置(前面的/var/wwwmoodle),并配置好php运行环境与nginx根目录后,即可在浏览器中输入启动moodle的安装。相关的输入项目和采用命令行模式是一致的,主要分为步界面:

  • 语言选择 :这里选择 zh_cn 以获得中文简体的安装提示以及最后安装效果中包括简体界面。
  • 确认路径 :这里只需要填入数据目录项目,不过也有默认值(出现在输入框中的值,下同),可以直接点击向后按钮到下一步
  • 选择数据库驱动 :类型选改进的MySQL
  • 数据库设置 :这里的项目比较多,需要按前面数据库准备的部分进行设置。
  • 显示版权声明: 点继续按钮
  • 显示检查服务器 : 这里会对安装moodle的条件进行测试,反馈一个结果,你可以根据需要补充安装一些支持要求的软件包,然后点继续按钮
  • 程序会进行数据库创建与导入等步骤,然后返回一个结果,正常会全部显示成功,然后点继续按钮
  • 出现一个界面不是太齐整的页面,这时需要编辑 /var/wwwmoodle/config.php添加

    $CFG->slasharguments = false;

    再刷新页面使得页面正常后进行添加,主要是配置用于管理员的信息,这个页面中所有有*的项目都是必填项目。

  • 新设置 - 首页设置 / 管理身份认证:按页面提示进行设置即可完成最后的安装了。

至此通过浏览器模式的安装也完成了。

关于nginx rewrite规则补遗

前面我们处理安装后界面出现问题的方法是通过配置参数调整了$CFG->slasharguments = false; ,下面介绍里有nginx的rewrite规则进行调整,就是在server{}中添加

# for Moodle rewrite
    rewrite ^/pluginfile.php/(.*)$ /pluginfile.php?file=/$1 last;
    rewrite ^/draftfile.php/(.*)$ /draftfile.php?file=/$1 last;
    rewrite ^/theme/styles.php/(.*)$ /theme/styles.php?$1 last;
# 补充有多级的图片rewrite规则
    rewrite ^/theme/image.php/(.*)/(.*)/(.*)/([a-z]/.*)$ /theme/image.php?theme=$1&component=$2&rev=$3&image=$4 last;
    rewrite ^/theme/image.php/(.*)/(.*)/(.*)/(.*)$ /theme/image.php?theme=$1&component=$2&rev=$3&image=$4 last;
    rewrite ^/lib/javascript.php/(.*)$ /lib/javascript.php?$1 last; 

经初步测试,在Moodle2.5.2+上工作正常。

阅读(3328) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

CU博客助理2013-12-11 10:26:23

嘉宾点评:
博主“xdsnet”一连写了三篇关于开源LMS(Learning Manangement System,学习管理系统)的博文,分别介绍了苏黎世大学主导的一个开源学习系统OLAT、edx组织发起的edx系统、和基于PHP的Moodle系统,对这三个LMS在Linux系统的安装做了详细讲解,内容清晰、一目了然,是不可多得的入门级精品文章。如果博主能够对各种开源LMS做一番对比,让读者能够更清楚各种LMS的优缺点就更好了。(感谢您参与“原创博文评选”获奖结果即将公布)