搭建基于Windows + Apache + PHP + MySQL的Moodle平台

YuriyShea 2016年05月08日 317次浏览

前言  

  说起Moodle,我相信学习教育技术的同学应该都不陌生,在大学的网络与远程教育课中,我有幸与传说中的Moodle相遇,然后相知,但是我绝对不会跟你们说一直到我毕业,我都没有找到一个合适的时间与这位Ms.Moodle相识,尽管我知道她对我蛮有好感!这是为什么呢?为什么呢?为……呢?好吧,我承认,我之所以没能好好认识一下Moodle,无外乎Moodle一直以来给我的感觉就一个:配置起来异常繁琐,不仅安装步骤甚多,需要安装的软件甚多,而且稍不注意就会出错,出错不要紧呀,要紧的是一个芝麻大的错还需要花大半天时间来研究。总之一句话:安装一次,心力交瘁一次。这几天要不是因为需要在Windows Server 2008 R2 Enterpris服务器上安装一个Moodle,我都不知道我什么时候才会再次带着一丝敬畏以及一丝惆怅来研究Moodle。虽然这次也是经过几天的鏖战,但是最终还是大功告成,于是我以迅雷不及掩耳盗铃之势,果断写下这篇关于如何搭建Moodle的文章,没啥别的想法,就是希望能帮助大家更好更快地搭建起属于自己的Moodle平台。
  好了,废话不再啰嗦,下面就正式开始我们的Moodle搭建之旅吧,小伙伴们,Are you ready?Let’s go!!!
  首先,简单介绍一下这次安装Moodle用到的软件:

  1. apache_2.2.21-x64-openssl-1.0.0e.msi;
  2. mysql-5.5.40-winx64.msi;
  3. php-5.4.8-Win32-VC9-x64.zip;
  4. Moodle3.0.2+。

  因为服务器是64操作系统,考虑到性能问题,所以Apache、PHP、MySQL都s使用了64位的安装包,安装包的下载地址我会在文章末尾附上链接,大家请自行下载。
  到这里,有的小伙伴可能会问“Moodle不是有很多集成的安装包吗,直接下载一个一键安装包分分钟就搞定啦!”。确实,使用一键安装包能帮我们免去非常多的步骤,而且几乎不会出现什么安装错误,但是我要说的是,现在的一键安装包无非就是将Apache、PHP、MySQL、Moodle等软件进行了整合与封装,其自身就是一个封闭的PHP环境 + Moodle平台,正所谓“凡事有利则有弊”,一键安装包虽然安装简单,但是却不够灵活,而且并发性能较差,用一键安装包搭建起来的Moodle很可能满足不了我们的性能需求,还有很重要的一点就是使用一键安装包不利于我们深入去理解Moodle的技术架构,因为我们不清楚Apache、PHP、MySQL和Moodle之间具体怎么关联起来的,倘若有一天我们想自己开发一款Moodle插件,或者是大脑灵光一闪,想自己做一个类似Moodle的平台,我们就必须更加清楚地理解Moodle的框架及其运行所依赖的PHP开发环境。也就是说,我们除了掌握Moodle的基本操作和使用方法之外,还必须对PHP相关的一些知识有所了解,了解的越多,掌握的越多,我们对Moodle的理解就越深。所以我在这里得出的结论是:征服Moodle第一步:老老实实学习PHP环境搭建。

安装Apache

  首先,我们来安装Apache,步骤如下:
  1.点击apache_2.2.21-x64-openssl-1.0.0e.msi安装包,出现:
742015201605081112056741947633619.png
  2.点击Next。
742015201605081112423301894873996.png
  3.选择I accenpt the terms int the license agreement,点击Next。
74201520160508111330767384860009.png
  4.点击Next。
742015201605081114043612014074704.png
  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。
742015201605081115238921674585305.png
  6.Typical为典型安装模式,Custom为自定义安装模式,我们选择Custom模式,点击Next。
742015201605081116165801922707585.png
  7.这里可以选择需要安装的项和安装的路径,我们选择安装全部项,即选中Apache HTTP Server 2.2.21。我选择的安装路径为E盘下的目录,大家可以自行选择一个合适的路径。然后点击Next。
74201520160508111702299503444394.png
  8.点击install开始安装。
 74201520160508111752174368812034.png 
  9.点击Finish完成安装。
  10.接下来我们可以通过在浏览器中输入http://localhost来验证Apache是否安装成功,如果浏览器输出“It Works”,则表示Apache安装成功了,如图:
742015201605081118292362091509506.png  
  至于为什么输入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!”
742015201605081119188141384287322.png
  到这里,我们就可以开始思考了,待会儿我们安装Moodle的时候要怎样才能访问Moodle的安装主页了呢?大家先自己想一想,后面在进行到Moodle安装的步骤时我会详细说明。
  安装好了Apache,我需要简单说明一下我们怎样启动和关闭Apache。
  首先,找到Apache的控制台。在开始菜单的Apache安装目录里面有一个Monitor Apache Services,点击它就可以打开控制台了,此外,在Windows资源管理器中Apache安装目录的bin里面,也可以找到控制台,即ApacheMonitor.exe文件,点击它便可打开Apache控制台,如图:
742015201605081120024241889164724.png
  控制台打开后,电脑右下角会出现控制台的图标,如图(蓝色圈中即控制台图标):
742015201605081120434551009503013.png
  双击控制台图标,我们进入控制台界面:
74201520160508112117205475016457.png
  左边Service Status框中列出了当前计算机上所有的Apache服务器,我们现在启动的是安装好的Apache2.2。在右边有一排按钮,通过点击这些按钮,我们可以选择要启动的Apache服务,并对其进行启动、关闭、重启等操作。我们在安装和访问Moodle的时候,必须要保证Apache服务是正常开启的。
  安装完Apache只是完成了整个配置的一部分,我们要想搭建整个PHP环境还需要进行进一步的配置。

安装PHP

  接下来,我们讲解一下PHP的配置。
  首先,把PHP的压缩包php-5.4.8-Win32-VC9-x64.zip解压到你要安装PHP的目录(我是直接解压到E盘中Program Files文件夹下面的),为了避免文件夹名字过长,我们重命名解压后的文件夹为php54,文件夹可随意取名,只要符合规范就OK,如图:
7420152016050811273006474265191.png
  解压之后的文件夹中有几个关键的地方需要说明一下。
  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,如图:
74201520160508115743330817621806.png
  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。如图:
74201520160508131353859217132420.png
  b) 添加对php解析的支持。我们需要让apache能够对后缀为.php格式的文件进行解析,因此需要在节点下加入对.php格式文件对应MIME-type的支持,这里也只需要加入一行代码:AddType application/x-httpd-php .php。顺便我们在这里加入php.ini的路径。如图:
742015201605081316086552032898708.png
  此外,我在这里对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权限文件夹。节点指定了所有站点的访问权限。如图:
74201520160508131724921335775586.png
  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.在节点中配置文件索引。如图:
7420152016050813183467139253208.png
  我们在DirectoryIndex后面追加对.html .htm .php文件格式的索引。这样我们在访问站点的时候就可以自动对这些格式的文件进行检索。
  3.利用伪静态配置多站点。如图:
74201520160508131933421561631433.png
  我们可以对这里进行修改,以通过伪静态的方式实现多站点配置。当然,这里不是我们讲解的重点,因此我暂时不多做说明。
  4.关于虚拟主机的配置。如图:
7420152016050813203023499083249.png
  5.配置完Apache,我们需要测试Apache的本地访问和局域网访问,这时候可能会出现在本地访问时没有问题,但是通过局域网就访问不了Apache,是什么原因呢?多数情况下是因为Windows防火墙的原因,我们需要在Windows防火墙中添加Apache服务到信任程序列表里面。
  经过以上的种种折腾,我们的Apache和php就关联起来了,接下来我们在站点根目录(我的是E:/Program Files/Apache Software Foundation/Apache2.2/htdocs)下面写一个test.php文件来输出php的相关信息,test.php的代码如下:

  <?php
    echo phpinfo();

  我们在服务器上通过http://localhost/test.php进行访问,不出问题的话将会显示出php的相关信息,如图:
74201520160508132137577960026787.png

安装MySQL

  接下来,我们开始安装并配置MySQL。
  1.双击MySQL的安装程序开始安装,如图:
742015201605081323012962028556570.png
  2.点击Next
742015201605081323571091926591399.png  
  3.选择I accept the terms in the License Agreement,点击Next
742015201605081324315301127987916.png  
  4.选择Custom,点击Next
74201520160508132504468203839121.png
  5.这里可以点击Browse更改默认的安装路径,我选择安装在我的E盘Program Files文件夹下,需要安装的项按照默认的即可,点击Next。
74201520160508132722562797222526.png  
  6.点击Install,开始安装
742015201605081329072021154097095.png
74201520160508132939577962554012.png
  7.点击Next
742015201605081335178591792334622.png
  8.点击Next
74201520160508133729515436406141.png
  9.点击Finish,完成安装,然后开始配置MySQL。
74201520160508133809843691702597.png
  10.点击Next
742015201605081339171871156536761.png
  11.选择Detailed Configuration,点击Next
742015201605081340037651258915206.png
  12.因为我们需要将安装程序作为服务器程序供其它主机访问,因此我们选择Server Machine,点击Next
74201520160508134107515170262737.png
  13.选择默认的Multifunctional Database,点击Next
742015201605081341360621353630688.png 
  14.下拉选择\MySQL Datafiles\,点击Next
74201520160508134208218786878809.png
  15.这里设置同时连接到MySQL的最大并发数,考虑到一个班的学生同时使用Moodle并发量会比较大,因此我们选择Manual Setting,并选择Concurrent connections为75。点击Next。
742015201605081342314991812989336.png
  16.设置MySQL的端口,默认为3306,可以在正常的端口范围内自行设置,我们就默认为3306不做任何更改,其它设置也默认。这个时候可能会因为别的程序端口也为3306,导致3306端口号被占据,我们可以自行更改这里要设置的端口号,或者先结束掉占据了3306端口的程序再继续安装。然后点击Next。
74201520160508134422640971118773.png  
  17.这里选择MySQL的字符集信息,我们选择默认的即可。点击Next
742015201605081345580151952216776.png  
  18.默认MySQL服务的实例名为MySQL,我们可以自己命名,这里我就选择默认的MySQL,并选中Include Bin Directory in Windows PATH。点击Next
742015201605081347466241793808929.png
  19.在这里设置MySQL的密码,并选中Enable root access from remote machines。点击Next。
74201520160508134818030544395347.png
  20.点击Execute。等待一会儿如果如下显示即说明MySQL安装成功,反之,如果提示一些错误信息,则说明没有成功安装,没有安装成功的原因可能是之前已经安装过MYSQL,出现了安装信息的冲突,我们可以卸载之前安装的MYSQL,需要注意的是,要想卸载干净MySQL不仅要在程序管理中卸载掉MySQL,还要在注册表中删除MySQL的注册表信息,并MySQL的安装目录和数据存放目录也得一起删除。关于如何彻底卸载MySQL,大家请参考:http://jingyan.baidu.com/article/f96699bbaa8fc1894f3c1b5a.html。
  21.点击Finish,即完成了MySQL的配置。
  关于MySQL我再补充一点:如果我们在电脑上安装了多个MySQL,很可能出现端口冲突,这时候我们可以修改每一个MySQL实例的端口,避免端口的重复。我们可以在MySQL安装目录下的my.ini中配置端口。
  到此为止,Apache、PHP、MYSQL的配置就基本完成了,这是否表示我们接下来就能够很顺利地安装Moodle了呢?答案是否定的,因为在安装Moodle的时候还需要我们开启一些PHP的扩展,只有这些扩展全部打开了,我们才能正常安装Moodle。

安装Moodle

  接下来,我们开始尝试安装Moodle。
  1.首先,我们从Moodle官网可以下载到最新的Moodle安装包,注意下载的时候不要下载集成好PHP环境的Moodle安装包,要下载单独的Moodle安装包。我下载的是Moodle3.0.2+版本的安装包。
  2.将下载好的Moodle安装包解压到Apache的根目录下面,我的是在E:\Program Files\Apache Software Foundation\Apache2.2下面,如图:
742015201605081358462801297934753.png  
  moodle文件夹下中包含了安装moodle所需要的全部文件,如图:
742015201605081359249371807938711.png
  3.Apache的默认站点根目录为E:\Program Files\Apache Software Foundation\Apache2.2\htdocs,在不配置多站点的情况下,我们直接将站点根目录的路径指定到E:\Program Files\Apache Software Foundation\Apache2.2\moodle,因此,我们修改Apache配置文件httpd.conf中的DocumentRoot和Directory权限文件夹,修改后如图:
742015201605081402255301350678356.png 
  4.重启Apache,打开浏览器,在地址栏中输入http://localhost/,回车,我们将来到Moodle的安装主页install.php。如图:
742015201605081403120931774668866.png  
  5.我们选择语言为中文简体,点击Next。
  6.之后我们会发现页面提示我们安装php_curl扩展,如图:
74201520160508140507077344779962.png 
  出现这个提示的原因在于我们没有打开php的curl扩展,我们需要打开curl扩展才能继续进行下一步。那么我们怎么打开php_curl扩展呢?
  a) 找到php的配置文件php.ini并打开;
  b) 找到; extension_dir = "ext",去掉前面的分号,并将””中的值修改为php扩展文件所在文件夹的路径,我的电脑上php扩展文件所在文件夹为E:\Program Files\php54\ext,因此修改的结果为extension_dir = "E:/Program Files/php54/ext";
  c) 找到;extension=php_curl.dll,去掉前面的分号。
  OK,这样就可以打开php_curl扩展了,后续如果提示要打开其它的扩展,操作步骤都一样,就是去掉;extension=php_xxx.dll前面的“;”。
  7.开启了php_curl扩展之后,我们点击重新载入,就会出现如下页面了:
742015201605081421025771684896824.png
  网站地址就是我们安装好Moodle之后,Moodle首页的访问地址,Moodle目录就是Moodle的安装目录,数据目录就是我们在使用Moodle的过程中产生的数据的存放目录。
  8.我们直接点击Next。
74201520160508174704577782750283.png
  9.我们选择Moodle的数据库为改进的MySQL(native/mysqli),然后点击Next。
742015201605081747489211414242514.png 
  10.输入MySQL数据库的用户名(默认为root),密码(安装数据库的时候设置的密码),数据库服务端口号(安装的时候设置的端口号,默认3306),其它默认,点击Next。
74201520160508174830437657590508.png
  11.点击“继续”,出现了如下页面,提示一些扩展仍未打开:
74201520160508174909421733319436.png  
  12.那么还是按照前面说的打开扩展的方法将这些扩展一一打开。所有扩展打开之后可以最大程度上优化PHP的性能。当然,对于一些不是必须开启的扩展,我们可以暂时先跳过。点击“继续”。
742015201605081749478901985133914.png  
  13.开始安装Moodle,等待一段时间,将会安装完所有的插件。
74201520160508175018359744185136.png
  14.点击“继续”
74201520160508175051140777109446.png  
  15.填写好Moodle管理员的信息之后点击“更新个人资料”。(注意:记住Moodle的管理员账号和密码,很重要)
74201520160508175307124425485591.png 
  16.在这里可以进一步完善个人资料,完善之后点击“更新个人资料”。
74201520160508175343905577297978.png 
  17.经过跋山涉水,万里长征,我们终于来到Moodle的首页啦!!!
  至此,Moodle安装成功!
  不过到这里还没有完,我们在服务器上通过http://localhost确实是可以访问Moodle了,但是我们要实现的最终效果是让局域网中的其它电脑也能够访问服务器上的Moodle。那么该怎么做呢?如果我们不对Moodle的配置做任何更改,局域网中的其它电脑是不能访问到服务器上的Moodle的,我们用浏览器访问会提示“只能通过http://localhost访问”或者“只能通过http://127.0.0.1访问”。这个时候,我们需要对Moodle的配置文件进行设置。
  在我的电脑上,Moodle的配置文件是E:\Program Files\Apache Software Foundation\Apache2.2\moodle\config.php,我们打开config.php,里面的配置如下:
742015201605081754345462005591367.png 
  其中,$CFG->wwwroot = 'http://localhost'指定了Moodle只能在服务器上经由http://localhost进行访问,如果我们要在局域网的其它电脑上访问,只需要把localhost换成服务器的IP地址即可。例如,我的电脑在局域网中的IP地址为:192.168.1.103,于是,我把localhost替换成192.168.1.103。更改之后保存,我们在浏览器地址栏中输入:http://192.168.1.103/,回车打开,我们再次成功进入到Moodle的首页,如图:
742015201605081755272182077437853.png  
  为了确定局域网中的其它设备可以访问服务器上的Moodle,我用自己的手机进行了测试,我在手机浏览器中输入http://192.168.1.103/,同样可以打开Moodle,如图: 
742015201605081756328431775615006.png  
  至此,Moodle全部安装完毕!
  剩下的便是在这个搭建好的Moodle平台上开展学习和研究啦!

总结

  最后,我简单做一下总结,在服务器上搭建Moodle平台总共可以分为两大步:
  1.搭建Apache + PHP + MySQL环境;
  2.安装Moodle。
  其中,在搭建Apache + PHP + MySQL环境的时候需要特别注意的是:
  1.Moodle对Apache、PHP、MySQL的版本是有要求的,我们应该选择能够满足Moodle最低要求的软件版本;
  2.弄清楚关键的配置环节,如:配置Apache最关键的是加入对PHP模组的支持和对PHP解析的支持,此外就是Apache的DocumentRoot和访问权限需要合理配置;PHP中需要开启多项扩展以支持Moodle的安装要求,提升PHP的性能;MySQL需要对端口号、最大连接数等进行合理的设置等等。具体配置请参考文中的详细配置步骤。
  3.在安装的过程中会出现各种各样的问题,如:
  a) Apache不能正常启动,原因可能是Apache的服务端口和别的软件冲突了,这时候我们可以停止掉与Apache服务冲突的进程,也可以更改Apache的端口号以避免端口重复;
  b) 安装好的Apache不能访问,很可能是由于防火墙拦截的原因,我们需要把Apache的服务程序添加到Windows防火墙的信任列表里面;
  c) MySQL安装失败,原因可能是我们之前安装过MySQL,我们需要卸载干净之前的MySQL,包括安装程序、注册表信息、数据文件等。
  在安装Moodle的时候我们需要注意的是:
  1.通过配置php.ini开启相应的php扩展,具体开启步骤和方法参见上文;
  2.可能会遇到一些问题导致无法继续安装,这个时候我们先看问题,可以先尝试更改一些配置来调试问题,但是如果始终无法调试好问题,那么我们可以选择彻底删除之前的Moodle安装目录和Moodle数据存放目录,然后重新解压Moodle安装包,重新安装;
  3.安装过程中可能会遇到提示Apache、PHP或者MySQL版本过低,无法正常安装的问题,这个时候我们就需要下载符合最低要求版本的软件并重新安装,以满足Moodle的最低配置要求。
  4.安装完Moodle我们需要在局域网中用其他的电脑访问,可能会出现“只能通过http://localhost访问”或者“只能通过http://127.0.0.1访问”的情况,这个时候我们需要在Moodle的config.php中配置服务器的IP地址。
  关于心态,我想说的是,从配置PHP环境到安装Moodle,这个过程确实比较复杂,当我们遇到问题的时候不能急,更不能失去信心,我们要学会根据问题的提示提炼出关键信息,然后依据关键信息去搜索相关资料,通过不断地查阅资料,学习别人处理类似问题的方法,从而一步一步解决面临的问题。一旦你成功了第一次,那么之后的每一次将变得越来越容易!

附:安装Moodle所需的软件均已通过百度网盘分享,大家可前往自行下载,下载地址:http://pan.baidu.com/s/1bplwAuF。