分类: Web开发
2013-11-06 12:20:15
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-get update apt-get install vim php5 nginx mysql-server php5-fpm php5-curl php5-gd php5-intl php5-xmlrpc php5-cli
其中vim是为了编辑相关文件方便而按照,其余均是moodle运行所需环境。
修改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基本配置正常且能正常工作。
可以从下载到最新的源代码包,这里下载的是最新的标准版(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的安装包支持命令行和浏览器环境两种安装模式,下面两种方式都介绍一下。无论采用哪种方式,均需要在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
这将启动一个命令行对话模式的安装,依次根据情况输入相应的安装地址等即可安装完成,主要有
然后系统显示一些版权信息,让你确认,需要输入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的安装。相关的输入项目和采用命令行模式是一致的,主要分为步界面:
出现一个界面不是太齐整的页面,这时需要编辑 /var/wwwmoodle/config.php添加
$CFG->slasharguments = false;
再刷新页面使得页面正常后进行添加,主要是配置用于管理员的信息,这个页面中所有有*的项目都是必填项目。
新设置 - 首页设置 / 管理身份认证:按页面提示进行设置即可完成最后的安装了。
至此通过浏览器模式的安装也完成了。
前面我们处理安装后界面出现问题的方法是通过配置参数调整了$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+上工作正常。