搭建基于Windows + Apache + PHP + MySQL的Moodle平台
说起Moodle,我相信学习教育技术的同学应该都不陌生,在大学的网络与远程教育课中,我有幸与传说中的Moodle相遇,然后相知,但是我绝对不会跟你们说一直到我毕业,我都没有找到一个合适的时间与这位Ms.Moodle相识,尽管我知道她对我蛮有好感!这是为什么呢?为什么呢?为……呢?好吧,我承认,我之所以没能好好认识一下Moodle,无外乎Moodle一直以来给我的感觉就一个:配置起来异常繁琐,不仅安装步骤甚多,需要安装的软件甚多,而且稍不注意就会出错,出错不要紧呀,要紧的是一个芝麻大的错还需要花大半天时间来研究。总之一句话:安装一次,心力交瘁一次。这几天要不是因为需要在Windows Server 2008 R2 Enterpris服务器上安装一个Moodle,我都不知道我什么时候才会再次带着一丝敬畏以及一丝惆怅来研究Moodle。虽然这次也是经过几天的鏖战,但是最终还是大功告成,于是我以迅雷不及掩耳盗铃之势,果断写下这篇关于如何搭建Moodle的文章,没啥别的想法,就是希望能帮助大家更好更快地搭建起属于自己的Moodle平台。
好了,废话不再啰嗦,下面就正式开始我们的Moodle搭建之旅吧,小伙伴们,Are you ready?Let’s go!!!
首先,简单介绍一下这次安装Moodle用到的软件:
①apache_2.2.21-x64-openssl-1.0.0e.msi;
②mysql-5.5.40-winx64.msi;
③php-5.4.8-Win32-VC9-x64.zip;
④Moodle3.0.2+。
因为服务器是64操作系统,考虑到性能问题,所以Apache、PHP、MySQL都s使用了64位的安装包,Moodle安装所需软件集合安装包的下载地址
到安科网1号FTP服务器下载
------------------------------------------分割线------------------------------------------
------------------------------------------分割线------------------------------------------
大家请自行下载。
到这里,有的小伙伴可能会问“Moodle不是有很多集成的安装包吗,直接下载一个一键安装包分分钟就搞定啦!”。确实,使用一键安装包能帮我们免去非常多的步骤,而且几乎不会出现什么安装错误,但是我要说的是,现在的一键安装包无非就是将Apache、PHP、MySQL、Moodle等软件进行了整合与封装,其自身就是一个封闭的PHP环境 + Moodle平台,正所谓“凡事有利则有弊”,一键安装包虽然安装简单,但是却不够灵活,而且并发性能较差,用一键安装包搭建起来的Moodle很可能满足不了我们的性能需求,还有很重要的一点就是使用一键安装包不利于我们深入去理解Moodle的技术架构,因为我们不清楚Apache、PHP、MySQL和Moodle之间具体怎么关联起来的,倘若有一天我们想自己开发一款Moodle插件,或者是大脑灵光一闪,想自己做一个类似Moodle的平台,我们就必须更加清楚地理解Moodle的框架及其运行所依赖的PHP开发环境。也就是说,我们除了掌握Moodle的基本操作和使用方法之外,还必须对PHP相关的一些知识有所了解,了解的越多,掌握的越多,我们对Moodle的理解就越深。所以我在这里得出的结论是:征服Moodle第一步:老老实实学习PHP环境搭建。
首先,我们来安装Apache,步骤如下:
1.点击apache_2.2.21-x64-openssl-1.0.0e.msi安装包,出现:
2.点击Next。
3.选择I accenpt the terms int the license agreement,点击Next。
4.点击Next。
5.这一步需要填写Apache服务的一些信息,填写的信息建议按照每一项括号中的格式来填写。
a) Network Domain即Apache的网络域名,如果你想公开你的Web服务器让其他人也能够访问,那么你就填你申请到的正式域名,否则就建议按照给定格式随便填写
b) Server Name指Apache服务的名字,同样,如果有正式的服务名就填写正式的服务名,没有就按照给定格式随便填写;
c) Administrator’s Email Address即Apache管理员的邮箱地址,同样按照给定格式随意填写。
d) 下面的单选框直接选择默认推荐的项,即for all users,on port 80,as a service -- Recommended,表示为所有用户开放Apache服务,并且默认80作为Apache服务端口号。
然后点击Next。
6.Typical为典型安装模式,Custom为自定义安装模式,我们选择Custom模式,点击Next。
7.这里可以选择需要安装的项和安装的路径,我们选择安装全部项,即选中Apache HTTP Server 2.2.21。我选择的安装路径为E盘下的目录,大家可以自行选择一个合适的路径。然后点击Next。
8.点击install开始安装。
9.点击Finish完成安装。
10.接下来我们可以通过在浏览器中输入http://localhost来验证Apache是否安装成功,如果浏览器输出“It Works”,则表示Apache安装成功了,如图:
至于为什么输入http://localhost会出现“It Works!”,是因为Apache安装成功之后即启动了Apache服务,如果在浏览器中访问localhost,则网络请求将发送给Apache服务器,Apache服务接收到请求之后便会去默认的站点根目录寻找相应的站点文件进行访问,Apache默认的站点根目录位于安装完成之后的htdocs文件夹,我的电脑上的路径为E:\Program Files\Apache Software Foundation\Apache2.2\htdocs,在htdocs文件夹下,默认有一个index.html的文件,打开index.html,我们会发现里面就一段很简单的html代码,在html的body部分显示了一行文字,即“It Works!”
到这里,我们就可以开始思考了,待会儿我们安装Moodle的时候要怎样才能访问Moodle的安装主页了呢?大家先自己想一想,后面在进行到Moodle安装的步骤时我会详细说明。
安装好了Apache,我需要简单说明一下我们怎样启动和关闭Apache。
首先,找到Apache的控制台。在开始菜单的Apache安装目录里面有一个Monitor Apache Services,点击它就可以打开控制台了,此外,在Windows资源管理器中Apache安装目录的bin里面,也可以找到控制台,即ApacheMonitor.exe文件,点击它便可打开Apache控制台,如图:
控制台打开后,电脑右下角会出现控制台的图标,如图(蓝色圈中即控制台图标):
双击控制台图标,我们进入控制台界面:
左边Service Status框中列出了当前计算机上所有的Apache服务器,我们现在启动的是安装好的Apache2.2。在右边有一排按钮,通过点击这些按钮,我们可以选择要启动的Apache服务,并对其进行启动、关闭、重启等操作。我们在安装和访问Moodle的时候,必须要保证Apache服务是正常开启的。
安装完Apache只是完成了整个配置的一部分,我们要想搭建整个PHP环境还需要进行进一步的配置。
接下来,我们讲解一下PHP的配置。
首先,把PHP的压缩包php-5.4.8-Win32-VC9-x64.zip解压到你要安装PHP的目录(我是直接解压到E盘中Program Files文件夹下面的),为了避免文件夹名字过长,我们重命名解压后的文件夹为php54,文件夹可随意取名,只要符合规范就OK,如图:
解压之后的文件夹中有几个关键的地方需要说明一下。
1.关于ext文件夹,这个文件夹下面有很多.dll文件(.dll文件为动态链接库文件),这些文件是PHP的扩展文件,扩展文件的作用是对现有版本的PHP进行一些功能和性能上的扩充,以使PHP的功能和性能得到更大程度的发挥,我们在后面安装Moodle的时候需要在PHP的配置文件中打开一些扩展,比如php_curl扩展、php_gd2扩展、php_mbstring扩展、php_mysql扩展、php_mysqli扩展等;
2.将php54下的php.ini-production文件重命名为php.ini,如图:
php.ini将作为PHP的配置文件,我们对PHP的配置主要是在php.ini中进行的。关于如何配置php.ini我们将在安装配置好MySQL之后详细说明。
3.通过重命名得到php.ini之后,我们需要回到Apache的配置文件httpd.conf中进行更改,让PHP与Apache之间关联起来,只有PHP与Apache关联起来之后,PHP文件或者PHP工程才能在Apache上正常跑起来。我们要在httpd.conf做的更改如下:
a) 添加对php动态共享库的支持,即通过LoadModule载入php中的动态链接库。在php54目录下面有一个php的动态链接库php5apache2_2.dll,我们需要在httpd.conf中载入。如何载入呢?其实我们只需要添加一行代码:LoadModule php5_module "E:/Program Files/php54/php5apache2_2.dll",注意,大家自己安装的时候需要在LoadModule php5_module后面指定自己电脑上相应的路径,我电脑上的路径是E:/Program Files/php54/php5apache2_2.dll。如图:
b) 添加对php解析的支持。我们需要让apache能够对后缀为.php格式的文件进行解析,因此需要在节点下加入对.php格式文件对应MIME-type的支持,这里也只需要加入一行代码:AddType application/x-httpd-php .php。顺便我们在这里加入php.ini的路径。如图:
此外,我在这里对httpd.conf中的几个关键的部分进行一些说明。
1.DocumentRoot和Directory权限文件夹。
a) DocumentRoot。在httpd.conf中有一行代码指定了站点根目录,即:DocumentRoot "E:/Program Files/Apache Software Foundation/Apache2.2/htdocs",表示我当前的站点根目录位于E:/Program Files/Apache Software Foundation/Apache2.2/htdocs下。在不考虑多站点配置的情况下,我们默认访问的是此目录所代表的站点。因为安装Moodle不需要进行多站点配置,因此我们就不详细讲解多站点配置方面的内容。关于多站点的配置,我会在另外一篇博客中为大家进行讲解。
b) Directory权限文件夹。节点指定了所有站点的访问权限。如图:
Directory "E:/Program Files/Apache Software Foundation/Apache2.2/htdocs"表示所有站点都在E:/Program Files/Apache Software Foundation/Apache2.2/htdocs下面。如果还有其他目录下的站点需要进行访问的话,我们就必须更改Directory指定的路径,保证要访问的站点目录被包含在Directory指定的路径下面。
此外,需要特别注意的是,我们需要在这里设置Allow from all,表示接受其它主机的访问。只有将Director的访问权限配置为Allow from all,我们才能用其它的主机访问服务器Apache上的站点。
2.在节点中配置文件索引。如图:
我们在DirectoryIndex后面追加对.html .htm .php文件格式的索引。这样我们在访问站点的时候就可以自动对这些格式的文件进行检索。
3.利用伪静态配置多站点。如图:
我们可以对这里进行修改,以通过伪静态的方式实现多站点配置。当然,这里不是我们讲解的重点,因此我暂时不多做说明。
4.关于虚拟主机的配置。如图:
5.配置完Apache,我们需要测试Apache的本地访问和局域网访问,这时候可能会出现在本地访问时没有问题,但是通过局域网就访问不了Apache,是什么原因呢?多数情况下是因为Windows防火墙的原因,我们需要在Windows防火墙中添加Apache服务到信任程序列表里面。
经过以上的种种折腾,我们的Apache和php就关联起来了,接下来我们在站点根目录(我的是E:/Program Files/Apache Software Foundation/Apache2.2/htdocs)下面写一个test.php文件来输出php的相关信息,test.php的代码如下:
echo phpinfo();
我们在服务器上通过http://localhost/test.php进行访问,不出问题的话将会显示出php的相关信息,如图: