# 安装Moodle

## 别恐慌，耐心尝试!

> 这份向导解释第一次应该如何安装Moodle系统。因为包含了一些如何尝试和解决可能的web服务器的主要问题的详细步骤， 这份文档或许看起来很长而且复杂。别恐慌，一旦你知道了如何去做，你只需要化几分钟的时间就可以安装好Moodle服务器！

> 如果你遇到了问题，请仔细阅读这份文档 - 很多常见的问题在这份文档里都有答复。 如果你仍然还不能解决你的问题，你可以从 Moodle帮助上寻求帮助。

> 另一个选择是联系一家Moodle主机托管提供商， 他们完全可以替你维护Moodle系统，从而你可以忘掉这些技术问题，把精力关注在教育培训业务本身！

> 文档章节:

> 1. 安装需求
> 2. 下载和复制文档到正确的位置
> 3. 站点结构
> 4. 运行安装脚本来创建配置文件config.php
>    - 检查Web服务器设置
>    - 创建数据库
>    - 创建一个数据目录
> 5. 转到管理页面继续完成配置
> 6. 配置守护进程
> 7. 创建新的课程

### 1. 安装需求

> Moodle主要在Linux系统上，使用Apache, MySQL 和 PHP 开发 ( 有时侯也把他们叫做LAMP平台 )， 同时它也在PostgreSQL数据库 和Windows XP, Mac OS X 和 Netware 6 操作系统上经过有规律的测试。

> 安装Moodle的软件需求如下：

> 1. Web服务器软件。大部分人使用Apache， 但Moodle在其他支持PHP的web服务器下也工作的很好，例如 Windows平台下的IIS。
> 2. PHP 脚本语言 (版本 4.1.0 或更高)。 PHP 5 从Moodle 1.4开始也被支持。
> 3. 一个运行中的数据库：MySQL 或 PostgreSQL 被完全支持也推荐和Moodle一同使用。

> 大多数的web主机缺省就支持这些。 如果你使用的主机托管服务商不支持这些特性，问问他们为什么， 并且考虑为自己找一个其他的托管服务商。

> 如果你期望在自己的计算机上运行Moodle，而所有的这些看起来有点使人畏惧， 请查看我们的指南： 安装 Apache, MySQL 和 PHP。 它提供了详细的在大多数流行的平台上安装这些软件的指导。

### 2. 下载这些文件并复制到正确的位置

> 有两个途径可以获得Moodle，作为一个压缩包或通过CVS。 这在下载页面有详细的解释 ： http://moodle.org/download/

> 在下载和解压安装包， 或从CVS中检出安装文件后， 你将看到一个叫做 "moodle" 的目录，包含了很多其他的文件和子目录。

> 你可以把整个目录都复制到你的web服务器主文档目录， 这种情况下Moodle站点可以通过http://yourwebserver.com/moodle地址访问， 或者你可以拷贝moodle目录下所有的文件到主服务器文件所指的目录， 在这种情况下Moodle站点通过简单的URL访问 http://yourwebserver.com。

> 如果你下载Moodle到你本地的计算机，然后上传到你的web服务器上。建议你上传整个压缩包到服务器上，然后在服务器上解压缩文件。主机托管的管理界面象Cpanel这样的系统允许你通过 "文件管理" 的功能解压。

### 3. 站点结构

> 你可以安全的跳过这个章节，但这里有关于Moodle目录内容的一个快速摘要，来帮助你 了解它:

> > config.php | - | 这里包含了系统的基本设置。这个文件并不包括在Moodle安装包里 - 你将在安装过程中创建它。
> > install.php | - | 通过这个安装脚本你可以创建config.php
> > version.php | - | 定义当前Moodle代码的版本号
> > index.php | - | 站点的首页

> > - admin/ - 用于管理整个站点的代码
> > - auth/ - 用于验证用户的插件模块
> > - blocks/ - 用于页面的小内容区域（blocks）
> > - calendar/ - 用于管理和显示日历的所有代码
> > - course/ - 用于管理和显示课程的代码
> > - doc/ - Moodle帮助文档 (例如这个页面)
> > - files/ - 用于显示和管理文件的代码
> > - lang/ - 不同的语言资源文件，每种语言一个目录
> > - lib/ - 核心Moodle代码库
> > - login/ - 用于处理登录和帐号创建的代码
> > - mod/ - 所有的主要Moodle课程模块都在这里
> > - pix/ - 通用的站点图片
> > - theme/ - 主题风格包/皮肤用于改变站点的界面
> > - user/ - 管理和显示用户的代码

### 4. 运行安装脚本来创建config.php配置文件

> 要运行安装脚本 (install.php)， 只需要在浏览器中输入你的Moodle站点主URL，或直接访问 http://yourserver/install.php 。

> (安装程序将尝试设置一个会话 cookie到你本机的浏览器。如果你看到你的浏览器弹出一个警告窗口，请确认你的浏览器设置允许接受cookie！)

> Moodle将会检测需要的配置并且带领你通过一些界面来创建一个新的 config.php. 配置文件。在安装程序的最后，Moodle会尝试写入配置文件到正确的目录，如果不行你可以通过一个按钮下载它并上传到服务器上的恰当的目录中。 另外，你也可以通过按一个按钮来从安装程序下载 config.php ，并且将其上传到服务器上 Moodle 的主目录。

> 在过程中安装程序会测试你服务器的环境，并且给你如何修复这些问题的建议。对于大部分的常见问题这些建议是很有效的,但如果你遇到麻烦，看看下面这些关于常见问题的详细信息。

> ### 4.1 通用的Web服务器设置

> > 首先，确认你的web服务器设置使用 index.php 作为默认的页面 (或许还需要设置 index.html, default.htm 等等)。

> > 在Apache中，通过使用在 httpd.conf 文件中的 DirectoryIndex 参数。 通常设置请参照下面的命令：

> > >     DirectoryIndex index.php index.html index.htm

> > 只需要确认 index.php 在这个列表中 (为了有效，推荐将其作为列表中的第一个)。

> > 第二， 如果你使用 Apache 2， 那么你需要打开 AcceptPathInfo变量， 这允许脚本传递参数，例如 http://server/file.php/arg1/arg2。 这是一个允许资源之间的相对链接的基础，它提供了使用你的Moodle站点的用户一个性能上的增强， 你可以打开这个选项通过添加这些行到你的 httpd.conf 文件。

> > >     AcceptPathInfo on

> > 第三， Moodle 需要激活一些 PHP 的配置参数才能开始工作。 在大多数的服务器上，这些已经是缺省的设置。 然而，一些 PHP 版本（包括一些最近发布的版本）或许采用了不同的设置。 这些变量定义在PHP的配置文件(通常叫做 php.ini)：

> > >     magic_quotes_gpc = 1    (推荐但非必须)
> > >     magic_quotes_runtime = 0    (必须)
> > >     file_uploads = 1
> > >     session.auto_start = 0
> > >     session.bug_compat_warn = 0

> > 如果你不能修改服务器上的 httpd.conf 或 php.ini， 或者你安装Moodle的服务器同时安装了需要其他配置的程序， 那么无需担心，你通常可以覆盖缺省设置。

> > 要完成这个，你需要创建一个叫做 .htaccess 的文件在Moodle服务器的主目录下， 并包含下面这些行。 这仅对 Apache 服务器有效，并且仅当 Overrides（覆盖）设置在主配置文件中被允许。

> > >     DirectoryIndex index.php index.html index.htm

> > >     <IfDefine APACHE2>
> > >          AcceptPathInfo on
> > >     </IfDefine>

> > >     php_flag magic_quotes_gpc 1
> > >     php_flag magic_quotes_runtime 0
> > >     php_flag file_uploads 1
> > >     php_flag session.auto_start 0
> > >     php_flag session.bug_compat_warn 0

> > 你也可以做一些像定义允许的最大上传文件大小的设置：

> > >     LimitRequestBody 0
> > >     php_value upload_max_filesize 2M
> > >     php_value post_max_size 2M

> > 最容易的做法是从lib/htaccess 下拷贝一个范例文件，然后修改成为符合你的设置，它包含了更进一步的设置指令。 作为范例，在Unix脚本环境下：

> > >     cp lib/htaccess .htaccess

> ### 4.2 创建一个数据库

> > 你需要创建一个空白的数据库(例如 "moodle") 在你的数据库系统上， 同时，设置一个数据库用户 (例如 "moodleuser") 能够访问你所创建的数据库 (你可以设置该用户只能访问此数据库)。你也可以使用"root"用户如果你在一个测试服务器上， 但不推荐你在生产环境使用这种方式； 如果黑客发现了你的密码， 那么你整个数据库系统都会有危险而不是仅仅一个数据库。

> > 如果你使用主机托管服务，那通常会有一个web的管理界面允许你来创建数据库。

> > Cpanel 系统是其中一个常见的主机托管管理系统。要在Cpanel中创建数据库，

> > 1. 点击 "MySQL 数据库" 图标。
> > 2. 输入 "moodle" 在数据库字段并点击 "添加数据库"。
> > 3. 输入用户名和密码 (不是你目前正在使用的主机托管帐号)在相应的位置 并点击 "添加用户"。
> > 4. 现在使用 "添加用户到数据库" 按钮来给新用户帐号 "ALL" 权限到新的数据库。
> > 5. 注意用户名和数据库或许被加上你的Cpanel 帐号作为前缀。当输入这些信息到Moodle安装程序时，注意使用全称。

> > 如果你能使用Unix命令行，那么你可以通过下面这些命令行来完成同样的工作。

> > 这是一些范例的Unix MySQL命令行：

> >        # mysql -u root -p
> >        > CREATE DATABASE moodle;
> >        > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.*
> >                TO moodleuser@localhost IDENTIFIED BY 'yourpassword';
> >        > quit
> >        # mysqladmin -p reload

> > 这是一些PostgreSQL的范例代码：

> >        # su - postgres
> >        > psql -c "create user moodleuser createdb;" template1
> >        > psql -c "create database moodle;" -U moodleuser template1
> >        > psql -c "alter user moodleuser nocreatedb;" template1

> ### 4.3 创建一个数据目录

> > Moodle也需要你服务器上的一些硬盘空间来存储上载的文件，例如课程文档和用户的图片。

> > Moodle安装程序很努力的尝试为你创建这个目录，但是如果安装程序不能创建这个数据目录，你需要自己手工来创建它。

> > 从安全的方面考虑，这个目录最好不能直接从Web目录访问。 最简单的方法是把它放在web目录之外，但如果你必须把它放在web目录下，你需要在创建一个叫 .htaccess 的在数据目录下，包含这一行：

> > >     deny from all

> > 要确认Moodle能够保存上传的文件到这个目录，检查web服务器软件 (例如 Apache) 具有读、写和执行的权限在这个目录中。

> > 在Unix机器上，这意味着设置目录的拥有者给用户 "nobody" 或 "apache"，然后给用户读、写和执行的权力。

> > 在 Cpanel 系统，你可以使用 "文件管理（File Manager）" 来找到这个目录，点击它，然后选择 "更改授权（Change Permissions）"。 在很多 共享主机的托管服务器，你可能需要限制所有的文件访问到你所在的 "用户组" (要防止其他的web主机用户查看或修改你的文件)， 但提供全部的读/写权限给另外的人 (这允许你的web服务器访问你的文件)。

> > 跟你的服务器管理员联系，如果你设置安全性时碰到问题。特别但一些站点使用叫做 "Safe Mode" 的PHP特性时，可能 需要 管理员来为你创建这个目录。

### 5. 转到管理页面继续配置

> 但基本的 config.php 在第一步被创建之后，尝试访问你的站点首页，你将被定位到 "管理" 页面完成后续的配置操作。

> 但你第一次访问管理页面，你将看到一个GPL "shrinkwrap" 协议，你必须接受这个协议才能继续完成下一步的设置。

> 现在 Moodle 将开始设置你的数据库并且创建数据表来存储数据。 首先，主要的数据库表格将要创建。将看到一系列的SQL语句状态跟随着状态消息（绿色或红色）的，看起来像这样：

> > CREATE TABLE course ( id int(10) unsigned NOT NULL auto_increment, category int(10) unsigned NOT NULL default '0', password varchar(50) NOT NULL default '', fullname varchar(254) NOT NULL default '', shortname varchar(15) NOT NULL default '', summary text NOT NULL, format tinyint(4) NOT NULL default '1', teacher varchar(100) NOT NULL default 'Teacher', startdate int(10) unsigned NOT NULL default '0', enddate int(10) unsigned NOT NULL default '0', timemodified int(10) unsigned NOT NULL default '0', PRIMARY KEY (id)) TYPE=MyISAM

> > 成功

> ...等等同样地，跟随着： 主数据库被成功地设置。

> > 如果你看不到这些，那么一定是数据库或你定义在config.php中配置设置有问题。 检查 PHP 没有启用限制的 "安全模式（Safe Mode）" (商业的web服务主机有时候会启用安全模式)。 你可以检查 PHP 的变量设置来创建一个小文件，包含 <?php phpinfo() ?> 并且从浏览器来查看它。 检查所有的这些并再次尝试这个页面。

> 拖动到页面的底部，点击 "继续" 链接。

> 你现在可以看到一个表单，在这里你可以定义更多的配置变量给你的安装， 例如：缺省的语言， SMTP 主机以及其他参数。 不要担心现在设置不好所有的变量 - 你以后可以随时地返回到这个页面和更改这些设置使用管理页面。 缺省的配置项目是常用的和安全的给大多数站点。 向下拖动到页面的底部，并且点击 "保存更改"。

> > 如果 (也只是如果) 你发现自己在这个页面上碰到问题，不能够继续， 那么你的服务器或许遇到了一个我叫做 "buggy referrer" 的问题。 这很容易修复： 只需要关闭 "安全表单（secureforms）" 设置，然后，再尝试继续。

> 接下来，你将看到好几个打印出许多状态信息的页面，他们设置各种Moodle模块需要的数据表单。跟以前一样，他们应该都是显示为 绿色的。

> 滚动到页面的底部，点击 "继续" 链接。

> 下一个页面是一个允许你定义Moodle站点和首页参数的表单。例如：名称、格式、描述等等。 填写这个表格 (你以后可以返回这个页面并且修改它)，然后，点击 "保存修改".

> 最后，你将被要求创建一个顶级管理员，供以后访问管理员界面。 填写详细的信息使用你的名字、email地址等等，然后点击 "保存修改"。并不是所有的字段都是需要的， 但如果你忽略了任何重要的字段，你将被要求重新输入这些字段。

> > > > > > 确保你记住了你选择的管理员账号的用户名和密码， 他们在将来访问管理页面是必须的。

> > (如果你的安装因为任何原因中断，或者由于某种系统错误阻止你登录到系统使用管理员账号， 你通常可以使用缺省的用户名登录 "admin", 口令是 "admin".)

> 一旦顺利结束，你将被返回到你的新站点的首页! 注意，管理链接出现在页面的左手边 (这些项目也出现在一个单独的管理页面上) - 这些项目只对你可见， 因为你是作为管理员用户登录的。所有你将来在Moodle要做到的管理工作，都可以通过这个页面完成，例如:

> - 创建和删除课程
> - 创建和修改用户帐号
> - 管理教师帐号
> - 修改站点级别的设置，例如：界面主题

> 但你还没有完成安装! 还有一件非常重要的事情去做 (看下一个章节关于守护进程cron).

### 6. 设置守护进程 -- 重要!

> 一些Moodle的模块需要持续的检查来完成任务。 例如，Moodle需要检查讨论组以便它能够通过邮件的方式给订阅者发送拷贝。

> 完成这些任务的脚本放置在管理员目录下，叫做 cron.php。 然而，它自己不会自动运行，所有你需要设置一种机制让这个脚本有规律的运行 (例如：每5分钟或10分钟)。 这提供了 "触发器（heartbeat）" 所以脚本能够执行每个模块预先定义的功能。 这种规律的机制也被叫做 守护服务.

> 注意，运行守护进程的机器 不一定需要是跟运行Moolde的机器是同一台机器。例如， 你有一个仅提供有限服务的主机，不支持守护进程，那么你可能选择运行守护进程在一台其他的服务器上或在你家里的计算机上。 所有这些因素围绕 cron.php 文件需要被规律的调用。

> 这个脚本的负载不是很大，所以5分钟的间隔通常是合理的， 但如果你还担心负载的问题，你可以缩短时间间隔到15分钟或者甚至是30分钟。 但最好不要让时间间隔太长，因为延迟的邮递任务会让课程活动的速度减慢。

> 首先，测试脚本能够直接从你的浏览器中运行:

> >     http://example.com/moodle/admin/cron.php

> 现在，你需要设置一种途径让脚本能够自动的有规律的运行。

> 在 Windows 系统

> > 最简单的办法是使用这个小包 moodle-cron-for-windows.zip ，这个包使得事情变得非常简单通过安装一个小的Windows服务。运行它并且忘了它!

> 在主机托管服务

> > 你的web控制面板一般会有一个页面，允许你来设置这个守护进程。例如，在 Cpanel 系统，查找一个叫做 "守护任务（Cron jobs）" 的按钮。 在那里，你可以输入一小段像下面列出这样的 Unix 命令。

> #### 在Unix下使用命令行

> > 从命令行环境你可以使用不同的命令行程序来调用这个页面。并不是所有的在一个给定的服务器上都适用。

> > 例如，你可以使用 Unix 工具像 'wget':

> > >     wget -q -O /dev/null http://example.com/moodle/admin/cron.php

> > 注意，在这个范例中输出被丢弃了(输出到 /dev/null).

> > 相同的事情使用 lynx 完成如下:

> > >     lynx -dump http://example.com/moodle/admin/cron.php > /dev/null

> > 作为选择，你可以使用标准版本的 PHP， 编译成允许从命令行运行。 这样做的好处是，你的web服务器日志不会被固定的到 cron.php 的请求填满。 不好的地方在于你需要具有访问命令行版本php的权限。

> > >     /opt/bin/php /web/moodle/admin/cron.php

> #### 在Unix环境下使用 crontab 程序

> > Cpanel 完成这个任务所做的工作就是提供一个web接口到一个叫做crontab的Unix 工具。如果你有一个命令行环境，你可以自己设置 crontab 工具通过命令行:

> > >     crontab -e

> > 然后，添加一个行命令像下面这样:

> > >     */5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php

> > 通常， "crontab" 命名将把你带入到'vi' 编辑器环境。 你按下 "i" 进入到"插入模式"， 然后输入像上面给出的一行，然后，按下ESC键退出插入模式。 输入 ":wq" 你就可以保存和退出，或者退出不保存使用 ":q!" (输入时不要包含引号)。

### 7. 创建一个新课程

> 现在 Moodle 系统已经可以正常运行了，你可以尝试创建一个新的课程来熟悉它。

> 选择 "添加一个新课程" 从管理页面 (或者从主页面的管理链接)。

> 填写这个表单，特别要注意课程的格式。 在这个阶段你不需要太多的担心详细的课程设置项目，因为所有的课程项目 随后都可以由老师进行修改。 注意，黄色的帮助按钮在每个地方都提供相关方面的上下文帮助。

> 按下 "保存修改"，你将被带到一个新的表单，在那里 你可以为课程指定教师。 你只能添加一个已经存在的用户帐号从这个表单 - 如果你想创建一个新的教师账号，那么可以要求教师为他们自己创建一个账号（查看login.php上的提示）， 或者使用管理页面的 "添加一个新用户" 为他们创建一个。

> 一旦完成，课程已经准备好被定制，也能通过首页的 "课程" 链接被访问。

> 请查看 "教师手册" 了解课程构建 的详细信息。

> 祝你在Moodle的世界中获得一个快乐的探索旅程！

> 如果你喜欢 Moodle，请考虑 捐赈 来帮助我们找回我们的付出!

Moodle 文档

版本: $Id: install.html,v 1.1.2.1 2006/04/23 06:51:20 koenr Exp $