如何在Ubuntu 16.04上安装Moodle

介绍

Moodle是一个流行的,开源的基于Web的学习管理系统(LMS),任何人都可以免费安装和使用。通过Moodle,您可以为学习者群体创建和提供课程,阅读和讨论板等学习资源。Moodle还允许您管理用户角色,因此学生和教师可以拥有不同级别的材料访问权限。在Web服务器上安装Moodle后,任何有权访问您网站的人都可以创建并参与基于浏览器的学习。

在本教程中,您将在Ubuntu 16.04服务器上安装和设置Moodle。您将安装和配置Moodle所需的所有软件,运行设置向导,选择主题并创建第一个课程。

准备

在开始本教程之前,您需要以下内容:

  • 一个1GB的Ubuntu 16.04服务器,Moodle代码至少有200MB的磁盘空间,以及存储内容所需的数量。Moodle需要512MB内存,但建议至少1GB才能获得最佳性能。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。
  • 具有sudo权限和防火墙的非root用户,您可以按照[Ubuntu 16.04初始服务器设置指南进行设置]((https://cloud.tencent.com/developer/article/1007167)。
  • 按照本教程安装LAMP堆栈(Apache,MySQL和PHP)。请务必记下您在此过程中设置的根MySQL密码。

第一步 - 安装Moodle和依赖项

Moodle依赖于一些软件,包括拼写检查库和图形库。Moodle是一个PHP应用程序,它还有一些额外的PHP库依赖项。在我们安装Moodle之前,让我们使用包管理器安装所有必备库。首先,确保您拥有最新的软件包列表:

代码语言:javascript
复制
sudo apt-get update

然后安装Moodle的依赖项:

代码语言:javascript
复制
sudo apt-get install aspell graphviz php7.0-curl php7.0-gd php7.0-intl php7.0-ldap php7.0-mysql php7.0-pspell php7.0-xml php7.0-xmlrpc php7.0-zip

接下来,重新启动Apache Web服务器以加载刚刚安装的模块:

代码语言:javascript
复制
sudo systemctl restart apache2

现在我们准备下载并安装Moodle本身。我们将使用curl从官方分发服务器下载Moodle。

以下命令将转到Moodle网站,并将包含整个当前稳定版Moodle的压缩包放入该moodle.tgz文件中。该-L标志告诉curl遵循重定向。

代码语言:javascript
复制
curl -L https://download.moodle.org/download.php/direct/stable32/moodle-latest-32.tgz > moodle.tgz

现在我们可以使用tar程序解压缩文件,并将生成的文件放在Web文档根目录中:

代码语言:javascript
复制
sudo tar -xvzf moodle.tgz -C /var/www/html

验证该moodle目录是否位于服务器的Web根目录中:

代码语言:javascript
复制
ls /var/www/html

您应该看到moodle列出的目录:

代码语言:javascript
复制
Outputindex.html  moodle

现在查看moodle目录中的文件:

代码语言:javascript
复制
ls /var/www/html/moodle

您将看到刚刚下载和解压缩的所有Moodle文件和目录:

代码语言:javascript
复制
admin           composer.json     grade          message                    README.txt
auth            composer.lock     group          mnet                       report
availability    config-dist.php   Gruntfile.js   mod                        repository
backup          config.php        help_ajax.php  my                         rss
badges          CONTRIBUTING.txt  help.php       notes                      search
behat.yml.dist  COPYING.txt       index.php      npm-shrinkwrap.json        tag
blocks          course            install        package.json               tags.txt
blog            dataformat        install.php    phpunit.xml.dist           theme
brokenfile.php  draftfile.php     INSTALL.txt    pix                        TRADEMARK.txt
cache           enrol             iplookup       plagiarism                 user
calendar        error             lang           pluginfile.php             userpix
cohort          file.php          lib            portfolio                  version.php
comment         files             local          PULL_REQUEST_TEMPLATE.txt  webservice
competency      filter            login          question
completion      githash.php       media          rating

现在我们需要在Web根目录之外创建一个目录,以便Moodle存储将存储在服务器上但不存储在数据库中的所有与课程相关的数据。在Web根目录外创建此目录更安全,因此无法直接从浏览器访问它。执行以下命令:

代码语言:javascript
复制
sudo mkdir /var/moodledata

然后设置其所有权以确保Web服务用户www-data可以访问该目录:

代码语言:javascript
复制
sudo chown -R www-data /var/moodledata

然后更改文件夹的权限,以便只有所有者具有完全权限:

代码语言:javascript
复制
sudo chmod -R 0770 /var/moodledata

现在您已经在服务器上安装了Moodle,现在是时候设置它将使用的数据库了。

第二步 - 配置数据库

我们需要创建MySQL数据库,Moodle将存储其大部分数据。我们将创建Moodle代码所期望的结构,并且我们将创建一个Moodle将用于连接到数据库的用户。

但首先我们需要对MySQL配置文件进行一些更改,以便我们的MySQL安装与Moodle兼容。打开MySQL配置文件:

代码语言:javascript
复制
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

然后将以下突出显示的行添加到“基本设置”区域,该区域配置新数据库应使用的存储类型:

代码语言:javascript
复制
...
[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda
## Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
...

保存此文件,然后重新启动MySQL服务器以使用新设置重新加载配置。

代码语言:javascript
复制
sudo systemctl restart mysql

现在我们可以创建Moodle数据库了。为此,您将与MySQL命令行界面进行交互。执行以下命令:

代码语言:javascript
复制
mysql -u root -p

出现提示时,提供您在安装MySQL时设置的root密码。

登录后,您将看到mysql>提示。运行以下命令以创建数据库:

代码语言:javascript
复制
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

然后创建一个Moodle用户,这样我们就不必告诉Moodle应用程序我们的root密码了。执行以下命令:

注意:在接下来的两个命令中,moodler使用您的Moodle用户名和moodlerpassword所选密码替换。

代码语言:javascript
复制
create user 'moodler'@'localhost' IDENTIFIED BY 'moodlerpassword';

并授予moodler用户编辑数据库的权限。该用户需要创建表并更改权限:

代码语言:javascript
复制
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodler'@'localhost' IDENTIFIED BY 'moodlerpassword';

现在退出MqSQL命令行界面:

代码语言:javascript
复制
quit;

这将负责数据库配置。现在我们可以在浏览器中启动Moodle并继续在那里进行设置。

第三步 - 在浏览器中配置Moodle

要完成Moodle的配置,我们将在Web浏览器中显示该站点,并为其提供一些其他配置详细信息。为了使Web服务器保存配置,我们需要临时更改Moodle Web根目录的权限。

警告: 权限最多可以打开此文件夹。如果您对此感到不满意,只需不要更改权限。Web界面将提供手动修改配置文件的说明。

如果您确实更改了权限,则在完成设置后立即撤消此权限非常重要。该步骤包含在本教程中。

代码语言:javascript
复制
sudo chmod -R 777 /var/www/html/moodle

现在打开浏览器然后转到http://your_server_ip/moodle。您将看到如下页面。

请按照以下步骤配置Moodle:

  1. 设置要使用的语言,然后单击“ 下一步”
  2. 在下一个屏幕上,将Data Directory设置为/var/moodledata,然后单击Next
  3. Choose Database Driver页面上,将Database driver设置为Improved MySQL(native mysqli)。然后单击下一步
  4. 在“ 数据库设置”页面上,输入您在第三步中创建的Moodle MySQL用户的用户名和密码。其他字段可以保留原样。单击“ 下一步”继续。
  5. 按“ 继续”,查看许可协议并确认您同意其条款。
  6. 查看“ 服务器检查”页面是否存在任何可能的问题,确保底部存在“您的服务器环境满足所有最低要求”消息,然后按继续。
  7. Moodle将安装几个组件,为每个组件显示“成功”消息。滚动到底部,然后按继续。
  8. 然后,您将看到一个页面,您可以在其中设置Moodle的管理员帐户。
    1. 对于用户名,输入您想要的任何内容,并接受默认值。
    2. 对于选择身份验证方法,请保留默认值。
    3. 对于新密码,请输入您要使用的密码。
    4. 对于电子邮件,请输入您的电子邮件
    5. 将其余字段设置为适当的值。
    6. 点击更新个人资料
  9. 在“ 首页设置”屏幕上,填写“ 完整站点名称”,“ 站点短名称”,设置位置,然后选择是否允许通过电子邮件进行自行注册。然后单击保存更改。

一旦你完成了这个。您将被带到新Moodle安装的仪表板,以管理员用户身份登录。

现在您的设置已完成,重要的是再次限制Moodle Web根目录的权限。返回终端,执行以下命令:

代码语言:javascript
复制
sudo chmod -R 0755 /var/www/html/moodle

让我们做一个小改动来改善Moodle的安全性。默认情况下,Moodle在具有全局可写权限的文件夹/var/moodledata中创建文件。让我们通过更改Moodle使用的默认权限来加强它。

在编辑器中打开Moodle配置文件:

代码语言:javascript
复制
sudo nano /var/www/html/moodle/config.php

找到这一行:

代码语言:javascript
复制
$CFG->directorypermissions = 0777;

将其更改为以下内容:

代码语言:javascript
复制
$CFG->directorypermissions = 0770;

然后保存文件并退出编辑器。

最后,重置/var/moodledata目录本身的权限,因为Moodle已经创建了一些世界可写文件夹并且在安装过程中:

代码语言:javascript
复制
sudo chmod -R 0770 /var/moodledata

现在配置了Moodle,让我们进行一些自定义并创建一个测试课程,以了解Moodle Web界面。

第四步 - 自定义Moodle并创建您的第一个课程

现在您的网站正在运行,您当晚要做的第一件事就是注册您的Moodle网站。这将订阅Moodle邮件列表,让您及时了解安全警报和新版本等内容。

要注册,请单击左侧框中的“ 站点管理”链接,然后单击“ 注册”。然后使用适当的详细信息填写Web表单。您也可以选择发布您的Moodle网站,以便其他人可以找到它。

接下来,让我们改变Moodle网站的主题。选择网站管理,选择外观选项卡,然后选择主题选择。您将看到如下图所示的页面,表示您当前正在使用默认设备上的“Boost”主题,该主题指的是现代Web浏览器:

单击“ 更改主题”按钮,您将进入显示其他可用主题的屏幕。当您单击主题名称下的使用主题按钮时,您的Moodle网站将使用该主题显示您网站的所有内容。您还可以为平板电脑或手机等不同设备选择不同的主题。

既然你已经让你的Moodle网站更接近你想要它的样子了,那么现在是时候创建你的第一道菜了。从导航菜单中选择Site home。您将看到一个空的课程列表和一个添加新课程按钮。单击该按钮可显示如下图所示的表单:

填写有关课程的信息,包括姓名,简称,说明和任何其他相关详细信息。然后滚动到底部并单击“ 保存并显示”

你的第一个Moodle课程现在准备好了。您可以使用Moodle的界面开始在课程项里添加课程和活动。

但在您开始让人们注册参加新课程之前,您应确保您的Moodle安装已准备好投入生产。首先,您需要为Apache设置TSL / SSL证书,以加密服务器和客户端之间的流量。为确保您的数据受到保护,请确保定期备份MySQL数据库。您还应该备份服务器上的文件,包括/var/moodledata/文件夹。

结论

在本文中,您在Ubuntu 16.04服务器上安装并设置了Moodle。Moodle是一个强大且高度可配置的Web应用程序。请务必查阅Moodle文档,并与Moodle用户和管理员的全球社区联系,以获取有关如何充分利用它的想法。

想要了解更多关于Ubuntu的开源信息教程,请前往腾讯云+社区学习更多知识。

参考文献:《How To Install Moodle on Ubuntu 16.04》