转自http://fuwu.aieln.com/info/show/711/
软件下载地址(Moodle2.2.2(Build:20120312)):http://bbs.aieln.com/article-1409-1.html
[摘要]当前许多高校Moodle课程开展得如火如荼,但大多都是在windows环境下构建的Moodle平台,使用过程中发现该平台很容易出现安全性和稳定性的问题。笔者作为较早接触、使用Moodle的一员,认为Moodle在Linux系统下安装运行更稳定、安全。因此,尝试在RedHat-Linux系统下构建Moodle平台,旨在解决系统安全性及稳定性等问题,意在为Moodle网络课程这个平台提供良好的环境支持。
[关键词]Moodle,Appche,MySQL,PHP,PHP my Admin,Linux
1需求分析MOODLE[1]平台是目前世界上免费的开放源代码、功能强大的、在国际上有一定应用基础的、可以支撑教育信息化课程设计与教学应用的信息技术平台。在国内的许多高校推广,亦是适合中小学基础教育选用的学习环境。但是,Moodle平台是对服务器的硬件要求特别高的网络管理系统,其一、对于大多数的中小学来说,配置一台高配置的服务器,在经费上都是比较困难的;其二、现在大多把Moodle平台安装在windows系统下,由于windows系统自身的原因,服务器经常出现异常,在安全性和稳定性上也带来了很多问题,给教师和学生带来教学上的不便。
怎么解决这个问题,换操作系统?对,Linux操作系统,它强大的网络性能,对硬件的完全支持、以及良好的安全性、稳定性,完全可以解决这一问题。linux操作系统可以在低配的计算机上运行,非常适合中小学开展Moodle网路课程的建设。我的设计思想就是在RedHatLinux下构建Moodle平台。
1.1Linux系统和Windows系统技术对比(1)进程治理及调度:Linux开销较小:在进程治理及调度方面,Linux是一个单块式的操作系统,操作系统通常在用户进程的内存空间内进行,可免去发生系统调用时的进程切换开销。Windows是一个准微内核操作系统,许多功能以单独的进程实现,从而提高了系统的模块化程度,但进程切换上的开销要大一些。Linux支持内核级的线程,但它将线程定义为进程的另一个“执行上下文”,从而简化了进程/线程之间的关系和调度程序的设计,它的线程库提供了和POSIX兼容的线程同步机制。Windows支持的线程是典型的进程/线程模型。它的线程同步机制和Linux类似。Linux中进程是基本的调度单位,它提供了三种调度策略。
(2)进程间通信机制:Linux更灵活:在进程间通信机制上,Linux提供了标准的UNIXIPC机制,而Windows则在基本IPC机制的基础上,提供了许多直接面向应用程序的高级IPC机制。从本质上看,Linux的IPC机制接近于IPC原语,比较底层,提供了最大的灵活性,也可以在此基础上建立更加复杂的高级IPC机制,而Windows在原语级提供的IPC机制有管道、命名管道、消息传递、共享内存、信号量等。
(3)内存治理:Linux优于Windows:在内存治理上,Linux和Windows在面对相同的进程地址空间大小时,对内存布局的使用方式不同。Windows实际只为进程预备了2GB弱的可用虚拟地址空间,而Linux中的进程地址空间使用更灵活些。
(4)安全性:Linux具有一定优势:在安全性方面,Linux采用的是UNIX在安全性方面成功的技术,尽管有一些安全漏洞,但因为设计上的开放性,这些漏洞能够在很快的时间内发现并得到解决。Windows虽然采用的ACL技术,更加复杂和严密,但因为其密码加密步骤过于简单,密码轻易被破解。安全性设计上的不公开性也导致其有很多安全上的漏洞。
美国计算机应急反应小组最近发表的安全漏洞测评报告称,微软的Windows出现了250次安全漏洞,其中有39个安全漏洞的危险程度达到了40分或者40分以上。而RedHatLinux只有46次安全漏洞,其中只有3个安全漏洞的危险程度在40分以上。
所以测试结果表明,采用linux的安全性确实比windows系统有一定的优势[2]。
1.2Web服务器:Linux系统和Windows系统性能对比多数用户会在linux和windows之间选择,这是两个最热门的Web服务器。本文将对监测采集的大量数据进行分析,比较每个操作系统的正常运行时间和性能。
我们监测了13,000的网站,除去采用不常用操作系统的网站,我们整理了12,089个网站的数据。不同操作系统在这些网站所占的比例请见下表:
系统 |
数量 |
百分比 |
Linux |
7295 |
60.3% |
Windows |
2052 |
17.0% |
FreeBSD |
860 |
7.1% |
Minix |
774 |
6.4% |
OpenBSD |
421 |
3.5% |
NetBSD |
238 |
2.0% |
Digital UNIX |
183 |
1.5% |
Solaris |
157 |
1.3% |
Mac OS X |
109 |
0.9% |
数据表明,Linux达60%,占据了将近2/3的绝对多数,Windows位居次席,占17%。下面我们测试每种系统的正常运行时间和响应速度。测试人员在美国,德国和奥地利三地同时每三十分钟监测一次,也就是说每周每个网站统计1008次记录。这意味着每周统计Linux服务器的记录7,295*1,008=7,353,360次,Windows服务器的记录则为2052*1008=2,068,416次。大量为我们进行操作系统的比较提供了坚实基础,假定忽略其他方面的差异(ISP的差异,良好的应用设计等)。我们将正常运行时间的平均值整理后,得到了下面的数据表格:
第14星期 |
正常运行 |
回应 |
第15星期 |
正常运行 |
回应 |
第16星期 |
正常运行 |
回应 |
NetBSD |
98.91 |
363 |
NetBSD |
99.42 |
387 |
NetBSD |
99.68 |
382 |
OpenBSD |
98.59 |
435 |
Solaris |
99.28 |
418 |
Linux |
99.05 |
466 |
Linux |
98.49 |
452 |
OpenBSD |
99.20 |
444 |
OpenBSD |
98.98 |
448 |
Solaris |
98.35 |
412 |
FreeBSD |
99.04 |
502 |
Mac OS X |
98.95 |
570 |
FreeBSD |
98.25 |
492 |
Linux |
99.03 |
460 |
FreeBSD |
98.94 |
503 |
Digutal |
97.99 |
473 |
Digutal |
98.96 |
479 |
Windows |
98.56 |
517 |
Windows |
97.94 |
499 |
Windows |
98.35 |
520 |
Digutal |
98.23 |
470 |
Mac OS X |
96.70 |
568 |
Mac OS X |
97.82 |
553 |
Solaris |
97.68 |
410 |
Minix |
88.70 |
513 |
Minix |
94.77 |
533 |
Minix |
95.04 |
534 |
数据表明,NetBSD在正常运行时间上领跑其他操作系统。其他BSD系统和Solaris也排名靠前。Linux每周都高于Windows超过0.5%。0.5%差距意味着每周50分钟的宕机,或者每月3小时36分钟。1分钟的宕机损失面对商业应用有时可能十分巨大。Windows正常运行时间较低的一个原因是系统更新,安装软件后需要重启。
另一个重要参数就是响应时间,——用户提交http请求后,打开网页的时间。我们将刚才的数据按照每个操作系统的响应时间排序,如下表:
第14星期 |
正常运行 |
回应 |
第15星期 |
正常运行 |
回应 |
第16星期 |
正常运行 |
回应 |
NetBSD |
98.91 |
363 |
NetBSD |
99.42 |
387 |
NetBSD |
99.68 |
382 |
Solaris |
98.35 |
435 |
Solaris |
99.28 |
418 |
Solaris |
97.68 |
410 |
OpenBSD |
98.59 |
435 |
OpenBSD |
99.20 |
444 |
OpenBSD |
98.98 |
448 |
Linux |
98.49 |
452 |
Linux |
99.03 |
460 |
Linux |
99.05 |
466 |
Digutal |
97.99 |
473 |
Digutal |
98.96 |
479 |
Digutal |
98.23 |
470 |
FreeBSD |
98.25 |
492 |
FreeBSD |
99.04 |
502 |
FreeBSD |
98.94 |
503 |
Windows |
97.94 |
499 |
Windows |
98.35 |
520 |
Windows |
98.56 |
517 |
Minix |
88.70 |
513 |
Minix |
94.77 |
533 |
Minix |
95.04 |
534 |
Mac OS X |
96.70 |
568 |
Mac OS X |
97.82 |
553 |
Mac OS X |
98.95 |
570 |
Linux的响应速度要比Windows快50微秒左右。总体上说,统计数据证明基于Linux的服务器效率和响应速度要高于Windows服务器【3】。
更多Moodle信息:http://www.aieln.com/system/moodle/
2系统概述2.1RedHat-Linux操作系统概述Linux的诞生可以追溯到1991年,当Linus还是芬兰赫尔辛基大学的一名学生时,他对当时为教学而设计的Minix操作系统提供的功能不满意,于是他决定自己写比Minix更强大的类UNIX操作系统来取代Minix,后来这个类UNIX操作系统就是Linux。Linux的特点:Linux是一种优秀的操作系统,支持多用户、多进程、多线程、实时性好、功能强大而稳定。可以从几个方面来阐述linux良好的服务器功能:1、广泛的协议支持;2、文件系统下良好的兼容性;3、支持多种网络互联;4、完善的网络支持;5、强大的远程管理;6、多种应用系统的支持;
RedHat是红帽最成功的LINUX发行版本之一,它的的特点是安装和使用简单,RedHat可以让用户很快享受到Linux的强大功能而免去繁琐的安装与设置工作.RedHat是全球最流行的Linux版本,RedHat已经成为Linux的代名词,很多人一提到Linux就会毫不犹豫的想到RedHat.所以我们用来搭建的服务器也选择RedHat.我们选择的版本是RedHatEnterpriseESLinux,它广泛适用小型企业或部门级的计算环境,如网络服务器、文件服务器、打印服务器、邮件服务器和万维网服务器[4]。
2.2PHP语言概述PHP是:HypertextPreprocessor(超文本预处理器)的缩写,它是一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言。PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP独特的语法混合了C、Java、以及PHP自创的语法。它可以比CGI更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,成分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户在一次访问这个程序时就不需要执行编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统[5]。
2.3MySQL数据库概述MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQLAB开发、发布和支持。
MySQL是一个快速、多线程、多用户的SQL数据库服务器,其出现虽然只有短短的数年时间,但凭借着“开放源代码”的东风,它从众多的数据库中脱颖而出,成为PHP的首选数据库。除了几乎是免费的这点之外,支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等都是PHP选择MySQL的主要原因。
MySQL数据库的主要特征:
MySQL可运行在不同的操作系统下。简单地说,MySQL可以支持Windows95/98/NT/2000以及UNIX、Linux和SUNOS等多种操作系统平台。这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下。
MySQL拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用而不必担心其稳定性。事实上,MySQL的稳定性足以应付一个超大规模的数据库。
强大的查询功能。MySQL支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便。
PHP为MySQL提供了强力支持,PHP中提供了一整套的MySQL函数,对MySQL进行了全方位的支持[6]。
2.4Apache服务器概述Apache[3]是世界排名第一的Web服务器,根据著名的Web服务器调查公司Netcraft的调查,世界上百分之五十以上的Web服务器都在使用Apache。
纵观Apache,它为我们的网络管理员提供了丰富多彩的功能,包括目录索引、目录别名、内容协商、可配置的HTTP错误报告、CGI程序的SetUID执行、子进程资源管理、服务器端图象映射、重写URL、URL拼写检查以及联机手册man等。也就是说,如果您在LinuxServer上成功安装配置了Apache之后,您的计算机也将随着Apache的生效而摇身一变,成为一台名副其实的WebServer,这种变化的确是激动人心的。伴随着自由软件发展的强大动力,我们有理由相信Apache的未来是一片光明的。
在Internet时代,外部主页的发布已经成为树立公司形象的一个重要手段,而内部主页也成为公司管理的主要方式。但是,要想实现这些功能,首先应该把我们的LinuxServer配置成为一台强大的WebServer。时至今日,全球应用最广泛的Web服务器软件就是Apache,本章将详细介绍如何配置Apache服务器。希望各位同仁能够通过阅读本片文章达到理论实践双丰收的目的,在很短的时间里迅速成为一名出色的网络管理员。
Apache的主要特征是:可以运行上所有计算机平台;支持最新的HTTP1.1协议;简单而强有力的基于文件的配置;支持通用网关接口CGI;支持虚拟主机;支持HTTP认证;集成Perl脚本编程语言;集成的代理服务器;具有可定制的服务器日志;支持服务器端包含命令(SSI)支持安全Socket层(SSL)用户会话过程的跟踪能力;支持FastCGI;支持JavaServlets。
3系统开发3.1系统设计3.1.1系统设计思想系统设计思想在一定程度上决定了一个系统设计的成败,从某种角度上反映了一个系统的生命力。本系统的设计思想如下:
(1)架构的合理性
采用目前最热门的组合Linux+Apache+PHP+Mysql,它是建立网站最经济的选择,同时性能也是最安全、可靠的组合。
(2)Moodle平台+LMAP架构
系统主要采用Moodle平台—Apache服务器—PHP+Linux-Mysql数据库这样结构,优化了系统的性能,使Moodle平台的运行更加稳定、安全。如下图1所示:
Moodle |
Apache服务器 |
PHP+Linux |
Mysql数据库服务器 |
数据 |
3.1.2硬件要求要估算合适的硬件配置,以访问用户数来计算。有两个数字需要考虑,一个是浏览用户数,能够浏览站点的最大用户数,是你的单位内拥有的计算机的数量;另一个是同时访问数据库的用户数,即需要参加Moodle课程活动的用户。对于单个服务器的计算规则是:最大的并行使用数据库的用户=RAM(1GB)×50,最大的浏览用户数=前者的5倍。例如,一个大学拥有500台电脑、100个用户同时访问,服务器要支持这些并发访问的用户需要大约2G的内存。除了内存,处理器的速度和硬盘的容量也是需要考虑的因素,硬盘空间至少要有160M,其实你需要大的硬盘空间来存放教师的课程资源[7]。
试验机的配置:
■CPU:PentiumⅣ2.93HZ
■内存:512M
■硬盘:80G
■网卡:10/100
■光驱:DVD-ROM
■显卡:独立显存128M
从上面的公式可以算出试验机可以支持最大并行使用数据库的用户人数为25-50人之间。
3.1.3软件环境(1)操作系统RedHatAS4可在http://www.verycd.com/topics/32515/下载[Redhat.Enterprise.Linux.Advanced.Server.4].RHEL4-i386-AS-disc1-jrt.iso文件,总共4个文件,用刻录机刻录成光盘。
(2)Web服务器软件推荐使用Apache,可在http://httpd.apache.org/download.cgi下载安装文件httpd-2.0.59.tar.gz。
(3)数据库服务器软件推荐使用MySQL,可在http://dev.mysql.com/downloads/下载安装文件mysql-5.0.22.tar.gz。
(4)PHP安装文件可在http://www.php.net/downloads.php下载,下载文件php-4.4.4.tar.gz。
(5)phpMyAdmin文件可在网站http://www.phpmyadmin.net/homepage/downloads.php下载,文件名phpmyadmin.zip,这是管理MySQL数据库的工具。
(6)库软件:
libpng-1.2.10.tar.bz2Compress-Zlib-1.42.tar.gz
libxml2-2.6.23.tar.bzjpegsrc.v6b.tar.gzZendOptimizer-2.5.7-linux-glibc21-i386.tar.gzopenssl-0.9.7i.tgzperl-5.8.8.tgz
Eaccelerator(加速器)可在http://download.chinaunix.net/disc/linux/分别下载。
(7)Moodle官方下载地址:http://download.moodle.org/,下载Moodle1.8,文件名为:moodle-latest-18.tgz。
(8)在网站http://download.moodle.org/lang/,下载简体中文语言包zh_cn_utf8.zip
3.2系统的安装流程3.2.1RedHat服务器的安装说明注意事项一:在安装前一定要了解两个系统的文件系统不一样。windows所用的文件系统主要有FAT16、FAT32和NTFS;Linux所用的文件系统主要有exit2、exit3。
注意事项二:对试验机系统硬件型号要了解特别清楚,要是安装双系统一定要记住,把Linux系统安装在最后一个盘符,分出最少10G的空间,安装双系统的顺序是先安装windows在安装Linux。
注意事项三:Linux分区方案:安装Linux时,需要在硬盘建立Linux使用的分区,在大多情况下,至少需要为Linux建立以下3个分区。/boot分区:/boot分区用于引导系统,它包含了操作系统的内核和在启动系统过程中所要用到的文件,该分区的大小一般100MBswap分区。
swap分区的作用是充当虚拟内存,其大小通常是物理内存的两倍左右(当物理内存大于512MB时,swap分区为512MB即可)。例如物理内存是128MB,那么swap分区的大小应该是256MB。
/(根)分区:Linux将大部分的系统文件和用户文件都保存在/(根)分区上,所以该分区一定要足够大,一般要求大于5GB。
3.2.2操作系统安装具体步骤(1)启动计算机,进入BIOS设置程序,设为从CD-ROM启动。然后把RedHatEnterpriseLinux第1张安装盘放入光驱。
(2)在“boot:”提示符状态下按“回车”键,安装程序会提示用户是否要检测安装光盘。(3)系统开始启动图形界面的安装程序。
(4)进入安装语言的选择界面
(5)进入“键盘配置”后,安装程序会自动为用户选取一个通用的键盘类型(美国英语式)。
(6)进入磁盘分区界面后,可以选择“自动分区”或“用DiskDruid手工分区”。这里试验机安装双系统所以,选择手工分区。
(7)如果在新硬盘上执行安装,因此会出现一个警告对话框,提示用户硬盘sda上的分区表无法读取,安装程序需要对其硬盘执行初始化操作,硬盘上的所有数据将会丢失。
(8)进入磁盘分区界面后,可以看到手工分区提供一个图形化操作界面,点击新建一个/boot分区,分区大小100M,在点击新建分区swap分区,分区大小根据试验机的物理内存翻一倍(如果物理内存为256那512就可以了),一般512M就可以。点击新建最后一个分区/(根分区),把剩余的空间全部划分到这个分区。
(9)在引导装载程序配置界面中,可以设置引导装载程序GRUB的属性。
(10)在网络配置界面中,安装程序提供通过DHCP自动配置和手工设置两种配置网络的方法。
(11)Linux本身内置了软件防火墙以加强计算机连接网络的安全性。默认Linux防火墙是禁用的,还有SELinux也设置为“已禁用”。
(12)在选择系统支持的语言界面中,可以选择系统安装的语言和系统默认语言,在这里建议选择系统默认的。
(13)在时区选择界面中,应根据实际来选择。这里选择“亚洲/上海”选项,然后单击“下一步”按钮。
(14)在设置根口令界面中,可以为root管理员账号设置口令。
(15)软件包安装的默认设置界面中,安装程序会显示将要安装的组件。
(16)在选择软件包组界面中,为了方便编辑各种服务的配置软件和安装基于源程序的软件包,建议安装“应用程序”中的“编辑器”和“开发”中的“开发工具”。
(17)在即将安装界面中,安装程序会让用户做安装的最后确认。
(18)安装程序会非常善意地提醒用户需要准备的安装光盘。
(19)安装程序开始安装RedHatEnterpriseLinux。
(20)在整个漫长的安装过程,安装程序会提示更换光盘。
(21)最后安装程序报告系统安装完毕。[8]
备注:(由于安装是一个动态的过程,所以我已经将该系统的安装用录屏软件记录下来,会放在moodle课程中,以供大家学习)。
3.2.3操作系统环境配置(1)设置语言参数:点击键盘Ctrl+Alt+F1,进去文本模式,输入命令:locale查看环境,#vi/etc/sysconfig/i18n,将第1句“LANG=zh_CH.UTF-8”改为“LANG=zh_CN.GB18030”。
(2)配置网络参数:输入命令#setup,选择网络配置,我的网络配置参数:“ip地址:210.27.205.14子网掩码:255.255.255.128网关:210.27.205.1DNS服务器:202.201.128.2”试验机把Linux系统挂载在最后一个盘符,安装系统所必须的软件在windows系统下的E盘和F盘,所以要挂载这两个盘符。
(3)挂载windows分区:要注意windows分区下的CDEF盘在Linux下设备号分别是sda1、sda5、sda6、sda7。
#/mnt/e/mnt/f
#vi/etc/fstab添加下面的命令到该文本中
/dev/sda6/mnt/evfatiocharset=gb2312,umask=0,codepage=93600
/dev/sda7/mnt/fvfatiocharset=gb2312,umask=0,codepage=93600
安装RedHat服务器完毕!
3.2.4安装MySql数据库安装之前,必须保证电脑上以前安装过的mysql服务器彻底卸载掉了。具体步骤:
安装mysql-5.0.22.tar.gz
#tarzxvfmysql-5.0.22.tar.gz/*tar为linux下的解压命令*/
#cdmysql-5.0.22
#./configure--prefix=/usr/local/mysql--sysconfdir=/etc--localstatedir=/var/lib/mysql/*设置mysql的安装目录*/
#make/*编译命令*/
#makeinstall
#prefix=/usr/local/mysqlmysql/*安装的目标目录*/
#sysconfdir=/etcmy.ini/*配置文件的路径*/
#localstatedir=/var/lib/mysql/*数据库存放的路径*/
#groupaddmysql/*创建mysql用户*/
#useradd-gmysql-d/usr/local/mysql-s/sbin/nologinmysql/*设置mysql目录为用户mysql属组*/
如果系统没有mysql这个用户的话,最好做以下这步:
useradd-M-o-r-d/var/lib/mysql-s/bin/bash-c"MySQLServer"-u27mysql
#/usr/local/mysql/bin/mysql_install_db--user=mysql/*安装完以后要初始化数据库*/
#chown-Rroot/usr/local/mysql/*设置目录访问权限*/
#chgrp-Rmysql/usr/local/mysql
#chown-Rroot/usr/local/mysql/bin
#chgrp-Rmysql/usr/local/mysql/bin
#chgrp-Rmysql/var/lib/mysql
#chmod777/var/lib/mysql
#chown-Rroot/var/lib/mysql/mysql
#chgrp-Rmysql/var/lib/mysql/mysql
#chmod777/var/lib/mysql/mysql
#chown-Rroot/var/lib/mysql/mysql/*
#chgrp-Rmysql/var/lib/mysql/mysql/*
#chmod777/var/lib/mysql/mysql/*
#chmod777/usr/local/mysql/lib/mysql/libmysqlclient.a
运行命令#/usr/local/mysql/bin/mysqld_safe--user=mysql&测试安装是否成功
如果显示#Startingmysqlddaemonwithdatabasefrom/usr/local/mysql/var表示安装成功
做完上面的步骤,然后把你编译目录的一个脚本COPY过去
cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld/*把mysql的启动目录添加到系统启动目录init中,启动命令为mysqld*/
#chkconfig--addmysqld/*添加系统自起服务命令*/
用ntsysv设置使mysql每次启动都能自动运行。
好了,至此mysql安装完毕,你可以这样起动你的mysql服务
#/etc/rc.d/init.d/mysqldstart
下面这步比较关键
#ln-s/usr/local/mysql/lib/mysql/usr/lib/mysql
#ln-s/usr/local/mysql/include/mysql/usr/include/mysql
3.2.5Openssl(安全套接层协议)的安装#tarzxvfopenssl-0.9.7i.tgz
#cdopenssl-0.9.7i
#./config–prefix=/usr/share/ssl//*安装目录在/usr/share/ssl下*/
#make
#makeinstall
#makeclean/*清楚安装完的垃圾文件*/
3.2.6Apache服务器的安装安装之前,必须保证电脑上以前安装过的apache服务器彻底卸载掉了。
具体安装步骤:
#tarzxvfhttpd-2.2.4.tar.bz2
#cdhttpd-2.2.4
#./configure--prefix=/usr/local/apache2--enable-shared=max--enable-module=rewrite--enable-so--enable-ssl--with-ssl=/usr/share/ssl/--enable-so--enable-logio--enable-module=most/*安装apache的安装目录以及ssl的配置*/
#make
#makeinstall
#makeclean
打开apache配置文#cd/usr/local/apache2/conf/httpd.con修改其中的user和group为apache。
开机自动加载apache服务#vi/etc/rc.d/rc.local
在里面加入一行/usr/local/apache2/bin/httpd-kstart
测试:在浏览器中输入http://localhost/看到It’sworks就表示安装成功了!
3.2.7安装各种库(1)libxml2安装/*libxml2是一个C程序解析器*/
源代码:libxml2-2.6.23.tar.bz2
#tarjxflibxml2-2.6.23.tar.bz2
#cdlibxml2-2.6.23
#./configure
#make
#makeinstall
#makeclean
(2)zlib安装/*zlib库,很多程序中的压缩或者解压缩函数都会用到这个库*/
源代码:Compress-Zlib-1.42.tar.gz
#tarzxvfCompress-Zlib-1.42.tar.gz
#cdzlib-14.2
#perlMakefile.PL
#make
#maketest
(3)libpng安装/*libpng是多种应用程序使用的解析PNG图象格式的库*/
源代码:libpng-1.2.10.tar.bz2
#tarjxflibpng-1.2.10.tar.bz2
#cdlibpng-1.2.9
#cpscripts/makefile.stdmakefile
编辑makefile将prefix改为prefix=/usr/local/libpng2
#make
#mkdir/usr/local/libpng2
#makeinstall
#makeclean
(4)jpeg安装/*安装JPEG库,在安装GD库的时候如果没有JPEG库,GD将不能生成JPEG格式的图象.*/
源代码:jpegsrc.v6b.tar.gz
#tarzxvfjpegsrc.v6b.tar.gz
#cdjpeg-6b
#./configure--prefix=/usr/local/jpeg6--enable-shared
#make
#mkdir/usr/local/jpeg6
#mkdir/usr/local/jpeg6/include
#mkdir/usr/local/jpeg6/lib
#mkdir/usr/local/jpeg6/bin
#mkdir/usr/local/jpeg6/man
#mkdir/usr/local/jpeg6/man/man1
#makeinstall-lib
#makeinstall
#makeclean
(5)GD安装/*gd库提供了一系列用来处理图片的API,使用GD库可以处理图片*/
源代码:gd-2.0.33.tar.gz
#tarzxvfgd-2.0.33.tar.gz
#cdgd-2.0.33
#./configure--prefix=/usr/local/gd2--with-zlib--with-png=/usr/local/libpng2--with-jpeg=/usr/local/jpeg6
编辑Makefile231行将CPPFLAGS=-I/usr/local/jpeg6/include
改为CPPFLAGS=-I/usr/local/jpeg6/include-I/usr/local/libpng2/include
#make
#makeinstall
#makeclean
3.2.8PHP的安装和配置#tarzxvfphp-4.4.4.tar.gz
#cdphp-4.4.4
#./configure--prefix=/usr/local/php--with-apxs2=/usr/local/apache2/bin/apxs--with-xml--with-mysql=/usr/local/mysql--with-zlib--with-jpeg-dir=/usr/local/jpeg6--with-png-dir=/usr/local/libpng2--with-gd=/usr/local/gd2--with-config-file-path=/usr/local/lib--disable-debug--enable-safe-mode--enable-trans-sid--enable-memory-limit--enable-short-tags--disable-posix--enable-exif--enable-ftp--enable-sockets--enable-mbstring--enable-track-vars--with-openssl=/usr/share/ssl--with-curl=/usr/include/curl--with-iconv
#make
#makeinstall
#makeclean
#cpphp.ini-dist/usr/local/lib/php.ini
把php加到apache里去
#vi/usr/local/apache2/conf/httpd.conf
添加LoadModulephp4_modulemodules/libphp4.so
AddTypeapplication/x-httpd-php.php
新建一个test.php
代码如下:
然后在客户端的浏览器访问http://210.27.205.12/test.php,如果看到php的信息页面如下图,则表示php运行环境配置成功。
3.2.9安装ZendOptimizer/*ZendOptimizer(以下简称ZO)用优化代码的方法来提高php应用程序的执行速度*/
#tarxvzfZendOptimizer-2.5.7-linux-glibc21-i386.tar.gz
#./install.sh--prefix=/usr/local/zend
#make
#makeinstall
3.2.10安装和配置Eacceleratr/*eAccelerator是一个自由开放源码php加速器*/
step1:编译eAccelerator
注意:整个命令操作确保在eAccelerator的源码目录中进行。
#exportPHP_PREFIX="/usr/local/php"
#PHP_PREFIX/bin/phpize
#./configure--enable-eaccelerator=shared--with-php-config=$PHP_PREFIX/bin/php-config
#make
step2:安装eAccelerator
运行如下命令
makeinstall
step3:配置eAccelerator
如果使用了系统自带的php,你可以将eAccelerator中的eAccelerator.ini文件拷贝至/etc/php.d中,并且修改默认值。
如果使用的自己编译的PHP,可以修改php.ini,在最后加上如下几行
#vi/usr/local/lib/php.ini
zend_extension="eaccelerator:"(可以通过命令whereiseaccelerator.so查找)accelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
step4:创建缓存目录
第三步中设置了缓存目录,这里可以使用如下命令建立:
#mkdir/tmp/eaccelerator
#chmod777/tmp/eaccelerator
3.2.11新建数据库和数据库管理员这里可以使用phpmyadmin轻松做到,将phpmyadmin文件解压到虚拟目录中
#unzipphpmyadmin.zip
#cp-rphpmyadmin/usr/local/apache2/ht就可以通过
http://localhost/phpmyadmin直接访问。(注意新建数据库的时候语言要用utf8-general.gi)图形化的操作界面,操作很简单。
也可以手动建立数据库,输入命令:
#cd/usr/local/mysql/bin
#./mysql
#./mysqladmin–urootpassword*******/*新建root用户密码*/
#createdatabasemoodle/*新建数据库moodle*/
#exit/*推出mysql*/
4Moodle平台的安装和配置需要在文本模式下新建Moodle数据库存储目录,命令如下:
#mkdir/usr/local/apache/moodledata/*新建Moodle数据存储目录*/
#cpmoodle.zip/usr/local/apache2/htdocs/*把Moodle压缩包拷到apache服务器虚拟目录下*/
解压文件和设置访问权限
#cd/usr/local/apache2/htdocs
#unzipmoodle.zip/*解压Moodle.zip*/
#chown-Rapache:apache/usr/local/apache2/moodledata/*修改Moodledata目录的拥有者为apache*/
配置config.php
以root身份拷贝和编辑该文件
#cd/usr/local/apache2/htdocs/moodle
#cpconfig-dist.phpconfig.php
#viconfig.php
将config.php做如下设置
dbtype="mysql"
dbhost="localhost"
dbname="moodle"(数据库名)
dbuser="root"(访问mysql用户名)
dbpass="*******"(访问mysql密码)
prefix="mdl_"(建立数据库中表的前缀,如果为空那么都是没有前缀)
wwwroot=http://210.27.205.14/moodle
dirroot='/usr/local/apache2/htdocs/moodle'
dataroot='/usr/local/apache2/moodledata'
配置apache服务器:#vi/usr/local/apache2/conf/httpd.conf
修改listen80/*监听80端口*/
serverRoot“/usr/local/apache2”/*设置相对根目录*/
serverName210.27.205.14:80/*设置服务器主机名称*/
DocumentRoot“/usr/local/apach2/htdocs/*设置主目录的路径*/
AddDefaultcharesetGB2312/*设置默认字符集*/
ServerAdmin[[email protected]][email protected][/email]/*设置网络管理员的E-mail地址*/
DirectoryIndexindex.phpindex.html/*设置默认文档*/
安装Moodle中文支持语言包
把zh_cn_utf8.zip解压到Moodle文件夹下的lang目录,具体操作:
#unzipzh_cn_utf8.zip/*解压zip包的命令*/
#mvzh_ch_utf8/usr/local/apache2/htdocs/moodle/lang/*移动zh_ch_utf8包到moodle的lang文件夹下*/
5在moodle平台上搭建网络课程因为考虑到要对linux下构建moodle平台的性能与windows下moodle平台进行对比,所以我设计了一门linux在线学习的网络课程,主要是针对初级阶段的学习者,有命令、服务器的配置等相关教程。
6配置linux防火墙随着网络技术的迅猛发展和因特网的普及,网络概念已不再局限于某些领域,而是深入到社会的各个组成部分,形成了一个初具规模的网络社会。在计算机网络日益扩展和普及的今天,计算机安全的要求更高,涉及面更广,不但要求防治病毒,也要提高系统抵抗外来非法黑客入侵的能力,还要提高对远程数据传输的保密性,避免在传输途中遭受非法窃取。为防止Internet上的不安全因素蔓延到局域网内部,使用防火墙是一种行之有效的解决方法[8]。我介绍一下在Linux下配置防火墙的解决方案。
Moodle平台需要Apache服务器,所以要开通web服务,使用标准的80端口的服务器,我们可在防火墙中进行设置:
#echo"0">/proc/sys/net/ipv4/ip_forward
#iptables–F/*清楚iptables的所有规则*/
#iptables-AINPUT-ilo-jACCEPT/*对网络接口lo的处理*/
#iptables-AINPUT-ptcp-mmultiport--dports22,80-jACCEPT/*匹配来自22,80端口的所有包*/
#iptables-AINPUT-mstate--stateRELATED,ESTABLISHED-jACCEPT/*接受来自RELATED,ESTABLISHED协议的所有包*/
#iptables-PINPUTDROP/*丢弃所有发给本机的包*/
7测试及验证(1)负载测试:在平台正常运行的情况下,找50台客户机同时在线学习,发现系统运行正常,没有出现异常,非常稳定
(2)安全性测试:运用局域网查看工具(lanSee)V1.62对服务器进行攻击,未发现漏洞,上传当下比较流行的病毒,arp病毒、熊猫烧香病毒,发现未出现异常,运行正常。由于时间和这方面知识的匮乏,所以只能进行一些简单的测试,还不够完善,希望以后可以做的更好。
8总结根据Linux操作系统下对Moodle平台的搭建的实现、测试、验证,证明了在同等配置的服务器上运行Linux系统搭建Moodle平台比Windows系统下搭建Moodle平台稳定、安全。因此,Linux操作系统下搭建Moodle平台可以为Moodle这个网络教学平台提供安全、稳定的环境。
参考文献:[1]Moodle官方网站:http://www.moodle.org
[2]开源社区http://www.lupaworld.com/
[3]Apache官方网站www.apache.com
[4]林惠琛、刘殊、尤国君、编著《RedHatLinux服务器配置与应用》,人民邮电出版社,2006年
[5]php官方网站www.php.com
[6]MYSQL官方网站:www.mysql.com
[7]常金娥、陈晋玲,Windows下Moodle平台的构建,晋城职业技术学院信息工程系;科技信息(学术研究),编辑部2007年36期
[8]杨云,在Linux下配置防火墙的技术,(济南铁道职业技术学院信息工程系,济南250013)2004.3第84期
英文摘要LinuxOperatingSystemPlatformforTheStructures
UnderMoodle
MaHaiRui
[Keywords]:MoodleAppcheMySQLPHPPHPmyAdminLinux
附录、遇到的问题以及解决办法1、对RedHat-Linux操作系统没有研究过解决:我从网上下载很多的学习Linux操作系统的相关的视频教程,比如:浙江大学-Linux操作系统、楚广明网络操作系统视频教学(Flash版)、黑客基地Linux特训班等等。学习Linux操作系统的基本命令,已经服务器的配置、运行,软件的安装,系统的安装等一些基本的操作。
2、RedHat-Linux操作系统对Moodle平台“不支持”说明:由于在安装时采用Linux系统自带的软件,所以到时在安装Moodle平台时,Linux系统自带的Mysql版本太低,导致安装的失败。如下图所示:
解决:通过大量的资料查询得知,原来Moodle平台对Mysql版本要求在Mysql4.1.16以上,所以Linux自带的版本太低,导致安装失败。在Mysql官方下载了最新的版本Mysql-5.0.22,需要源码安装。具体的安装代码如上3.3.4
3、源码安装说明:linux系统下的安装有两种,一种是rpm包安装,另一种就是源码安装也就是tar包的安装。对系统软件的安装我们都看到,大多数的软件不是通过系统自带的,都是从网上下载的源码包tgz安装,不是rpm包,所以解决软件的安装也是我碰到的一个比较棘手的问题。
解决:在网上查了大量的资料发现有一个叫gcc编译器,自己机子上没有安装,所以,把安装光盘放进光驱才发现有很多后缀名叫gcc的,需要安装的是perl、gcc-3.4.3-9.EL4、libgcc-3.4.3-9.EL4、gcc-C++-3.4.3-9.EL4、gcc-java-3.4.3-9.EL4、gcc-g77-3.4.3-9.EL4。
4、挂载硬盘出现乱码说明:由于试验机是双系统,所以,很多资料都在试验机的E盘和F盘,而Linux系统在另外划分的硬盘空间,需要把windows下的E盘和F盘挂载到Linux系统下,才能完成Moodle平台的安装。如图所示:
解决:见3.3.3下(3)windows分区的挂载和(1)设置语言参数。
更多Moodle信息:http://www.aieln.com/system/moodle/
搭建环境是:centos+Apache+php+mysql+phpmyadmin+zendoptimizer
1、安装apache
#yuminstallhttpd
2、安装php
#yuminstallphp
3、安装ZEND
wgethttp://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz(下载ZEND)
tarzxvfZendOptimizer-3.0.1-linux-glibc21-i386.tar.gz(解压)
cdZendOptimizer*←进入Zend的源代码目录
./install.sh←运行安装脚本,进入交互界面,直接安装即可,路径可使用默认的
错误描述:Failedloading/usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so:/usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so:cannotrestoresegmentprotafterreloc:Permissiondenied
解决办法:按照字面意思就以为是权限了,但是检查了没有什么差异,又以为是和之前装的eaccelerator冲突,于是又参照了这篇文章,未果。索性直接将eaccelerator去掉了,还是不行。最后发现是和selinux有关,去/etc/selinux/config下面去disable掉selinux后问题解决。
4、安装mysql
#yuminstallmysql-server
5、安装php-mysql
#yuminstallphp-mysql
6、安装GD库
#yuminstallphp-mbstring
#yuminstallphp-gd
#yuminstallphp-xmlrpc
7、重启apache和mysql服务
#servicehttpdrestart
#servicemysqldrestart
8、安装phpmyadmin
通过图形界面的浏览器下载linux下的phpmyadmin,解压后放在/var/www/html下。在浏览器中键入:http://本机ip/phpmyadmin,若能正看到管理数据库的界面,说明phpmyadmin安装正确,此时通过它建立一个新数据库moodle,为后面的moodle安装做准备。
9、安装moodle
(1)下载linux下moodle1.9版和最新汉化包。
(2)在/var/www/下建moodledata文件夹,按F1键到shell命令模式下,给apache组中的apache赋权:#chown-Rapache:apache/var/www/moodledata
(3)将moodle1.9解压到/var/www/html下的moodle文件夹。
(4)将汉化包解压到/var/www/html/moodle/lang下。
(5)将moodle文件夹下的config.disk.php复制一份为config.php,并修改该文件中的参数。
(6)在浏览器中键入http://本机ip/moodle即可访问moodle。