如何在 Ubuntu 18.04 上安装和配置 Mahara

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。

介绍

Mahara是一个开源的电子档案和社交网络系统,自称为“以学习者为中心的个人学习环境”。Mahara 在学术机构中尤其受欢迎,它为学习者提供了一个平台来管理和分享他们的知识和成长。在远程学习环境中,Mahara 可以帮助教育工作者建立数字课堂并组织学生的进步。与更传统的学习管理系统 (LMS) 不同,Mahara 更加分散且以用户为中心。这种用户创造力与其他更制度化的系统形成鲜明对比。

Mahara 也有许多非学生应用程序。您可以使用它来构建博客、简历构建器、文件存储库或能力框架。

在本指南中,您将安装 Mahara 并将其配置为使用Postgres 数据库作为身份验证源。完成后,您将拥有对基于服务器的 ePortfolio 的管理访问权限。

先决条件

步骤 1 — 为 Mahara 创建数据库和用户

您的第一步是为 Mahara 创建一个 Postgres 数据库和用户。

从服务器的命令行,切换到postgres用户:

  • sudo -i -u postgres

-i开关提供了一个交互式外壳,同时sudo与该-u开关一起使用可以让您切换用户。

现在创建一个 Postgres 用户;确保替换mahara为您的首选用户名:

  • createuser -SRDP mahara

Postgres 会提示你Enter password for a new role:role这里指的是您尝试创建的新用户。提供您选择的密码,然后在出现提示时重新输入密码。

现在为您的 Mahara 安装创建一个数据库。使用以下命令,替换maharadb为新数据库的首选名称和mahara刚刚创建的新用户:

  • createdb -O mahara -EUTF8 maharadb

您现在可以退出postgres用户:

  • exit

注意:建议将 Postgres 用于您的 Mahara 数据库,但如果您决定使用MySQL,则需要为 Mahara 设置一个新用户和数据库。为此,请使用以下命令登录到您的 MySQL 根帐户:

  • mysql -u root -p

提供您的 MySQL 根密码以获取访问权限。现在创建您的 Mahara 数据库。替换maharadb为另一个名称:

  • create database maharadb character set UTF8;

接下来,为 Mahara 创建一个新的 MySQL 用户,设置密码,并授予它访问您的maharadb数据库的权限请记住提供一个强密码来代替password并替换mahara 为您想要的用户名:

  • grant all on maharadb .* to 'mahara '@'localhost' identified by 'password';

您现在已经为 Mahara 创建了一个数据库并创建了一个角色。现在您可以安装和配置 Mahara。

第 2 步 — 下载 Mahara

现在您已经为 Mahara 创建和配置了一个数据库,让我们下载 Mahara 本身。您可以从 Mahara 的服务器下载标准版本,您可以在此处找到最新的 Mahara 版本

.tar.gz获得最新稳定版本链接后,请使用wget命令下载它确保替换/19.10/19.10.2/+download/mahara-19.10.2.tar.gz为您选择的版本:

  • wget https://launchpad.net/mahara/19.10/19.10.2/+download/mahara-19.10.2.tar.gz

这将下载一个标记为 的压缩文件解压压缩文件以创建 Mahara 目录结构:mahara-19.10.2.tar.gz

  • tar xzvf mahara-19.10.2.tar.gz
  • ls

ls命令检查提取。您现在将看到新目录:mahara-19.10.2

Output
mahara-19.10.2.tar.gz mahara-19.10.2

让我们将 Mahara 复制到. 应该与您在先决条件部分的虚拟主机配置步骤中创建的目录相匹配/var/www/mahara.your_domainmahara.your_domain

注意: Mahara 必须安装到一个空目录中。如果这里已经有文件,请考虑更改DocumentRoot并使用新目录。

现在复制 Mahara 目录:

  • sudo cp -a mahara-19.10.2/. /var/www/mahara.your_domain/

-a开关确保系统将文件权限与文件和文件夹一起复制。.在源文件的末尾,确保在源目录中的一切,包括隐藏文件,被复制到目标目录。

Mahara 需要额外的 PHP 扩展才能正常运行。

运行以下命令以安装所有必需的依赖项:

  • sudo apt update
  • sudo apt install php-gd php-pgsql php-xmlrpc php-xml php-curl php-mbstring

键入y任何提示以完成安装。

您已经在您的服务器上安装了 Mahara。接下来,您将创建 dataroot 目录。

第 3 步 – 创建 Dataroot 目录

现在您已经设置了 Mahara 代码,让我们创建一个 dataroot 目录。这是 Mahara 将写入上传的文件以及它需要运行的其他一些文件的地方。因此,Web 服务器需要能够对其进行写入。

dataroot 目录也应该在您拥有 Mahara 代码的目录之外。您应该public_html完全避免将它放在您的目录中。

让我们在以下位置创建目录/var/maharadata

  • sudo mkdir /var/maharadata

更新所有权chown

  • sudo chown -R www-data:www-data /var/maharadata

这允许 Web 服务器写入目录。现在我们可以完成配置 Mahara。

步骤 4 — 设置 Mahara 配置文件

在这一步中,您将对 Mahara 的config.php文件进行一些最终调整这些调整将连接您的数据库并加密您的密码。

切换到 Mahara 代码目录:

  • cd /var/www/mahara.your_domain/htdocs

config.php通过复制config-dist.php目录中的文件来创建文件htdocs

更改目录并复制文件:

  • cp config-dist.php config.php

现在config.php使用nano或您喜欢的文本编辑器打开

  • nano config.php

在文件中找到以下部分并进行所需的更改。离开$cfg->dbtypepostgres,除非你使用MySQL,在这种情况下改变它mysql更改maharadbmaharadbpassword以分别匹配您在步骤 1 中为数据库名称、用户和密码使用的值

./htdocs/config.php
...
$cfg->dbtype   = 'postgres';
$cfg->dbhost   = 'localhost';
$cfg->dbport   = null; // Change if you are using a non-standard port number for your database
$cfg->dbname   = 'maharadb';
$cfg->dbuser   = 'mahara';
$cfg->dbpass   = 'dbpassword';
...

在同一文件中,找到以下部分:

/var/www/mahara/htdocs/config.php
...
$cfg->dataroot = '/path/to/uploaddir';
...

步骤 3中将其更改为指向 Mahara 的 dataroot 目录

/var/www/mahara/htdocs/config.php
...
$cfg->dataroot = '/var/maharadata';
...

最后,让我们passwordsaltmain用一个随机的秘密字符串更新这会加密存储的用户密码。找到并取消注释以下行:

/var/www/mahara/htdocs/config.php
...
// $cfg->passwordsaltmain = 'some long random string here with lots of characters';
...

您可以使用 OpenSSLrand函数生成一个随机字符串以用作您的秘密盐字符串。打开一个新终端,再次连接到您的服务器,然后运行以下命令来生成此字符串:

  • openssl rand -base64 32

-base64 32选项确保 Base64 编码的字符串长度为 32 个字符。更新passwordsaltmainto的值your_generated_salt

/var/www/mahara/htdocs/config.php
...
$cfg->passwordsaltmain = 'your_generated_salt';
...

警告:设置后,您不能丢失此字符串,否则您将需要重置所有用户密码。保持config.php文件的安全备份是一种很好的做法

注意:productionmode当使用 Mahara 作为开发或测试站点时,您可能希望设置为 false。将此设置为false将启用警告和错误消息的屏幕显示以帮助测试。

保存并关闭文件。

配置 Mahara 后,您就可以使用 Apache Web 服务器为 Mahara 提供服务了。

第 5 步 – 配置 Apache

在先决条件中,您配置了一个域并将其指向此服务器。您还安装了 Apache 并使用 Let’s Encrypt 设置了 HTTPS。现在让我们使用 Apache 为 Mahara 服务。

如果您的虚拟主机配置文件名为mahara.your_domain.confLet’s Encrypt,则会创建一个名为的新配置文件mahara.your_domain-le-ssl.conf,用于处理您的域的 HTTPS 请求。

打开那个文件。请务必mahara.your_domain使用文件的实际名称替换

  • sudo nano /etc/apache2/sites-available/mahara.your_domain-le-ssl.conf

该文件将类似于以下内容:

/etc/apache2/sites-available/your_domain-le-ssl.conf
...
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName mahara.your_domain
        DocumentRoot /var/www/mahara.your_domain
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLCertificateFile /etc/letsencrypt/live/mahara.your_domain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mahara.your_domain/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
...

ServerName指令定义了应与此虚拟主机定义匹配的基本域。这也应该是您在先决条件部分中选择使用 SSL 证书保护的域名

注意:您的 Apache 配置不应包含ServerAliases. Mahara 希望通过一个 url访问如果您使用服务器别名,您将遇到诸如必须登录两次和破坏单点登录 (SSO) 功能等问题。

但是,如果出于某种原因确实需要别名,则除了上述指令之外,您还可以设置单独的第二个 VirtualHost 指令。

对文件进行以下添加:

/etc/apache2/sites-available/your_domain-le-ssl.conf
...
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName mahara.your_domain
        DocumentRoot /var/www/mahara.your_domain/htdocs

        <Directory />
            Options FollowSymLinks
            AllowOverride None
        </Directory>

        <Directory /var/www/your_domain/htdocs>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLCertificateFile /etc/letsencrypt/live/mahara.your_domain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mahara.your_domain/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
...

首先,您将 更新DocumentRoot为 include /htdocs然后添加两个新块。

<Directory />块是指文件系统根。它指定应用于服务器上任何位置的所有文件和目录的指令。为这个块指定指令允许我们通过放置默认指令来保护您的服务器免受入侵,例如AllowOverride None.

块是指 Mahara 的文档根。此处声明的指令会覆盖上声明的指令这些指令是为 Mahara 服务的 Apache 配置的基本要求。<Directory /var/www/mahara.your_domain/htdocs><Directory />

保存并关闭文件。

您现在可以配置 PHP 服务了。

第 6 步 – 调整 PHP 设置

我们的最后一步是更新 Apache 的php.ini文件。这将更改我们的日志记录详细程度并调整最大上传和POST大小。

打开文件:

  • sudo nano /etc/php/7.2/apache2/php.ini

这是一个大文件。让我们一一浏览更新。

找到该log_errors行并确保它与突出显示的代码匹配:

/etc/php/7.2/apache2/php.ini
. . .
log_errors = On
. . .

设置log_errors为 On 将使 PHP 能够记录运行 Mahara 时遇到的错误以帮助调试。

现在找到行开始upload_max_filesize = 2M替换2M50M

7.2/apache2/php.ini’>/etc/php/ 7.2 /apache2/php.ini
. . .
upload_max_filesize = 50M
. . .

这会将最大上传文件大小增加到 50 兆字节。

现在找到行开始post_max_size = 8M替换8M100M

7.2/apache2/php.ini’>/etc/php/ 7.2 /apache2/php.ini
. . .
post_max_size = 100M
. . .

upload_max_filesize考虑发布的文件允许的最大大小,而post_max_size是所有POST正文数据允许的最大大小所以你总是希望第二个数字更高。这些设置将使 Mahara 能够以设置的最大值接受文件上传。

现在移到文件末尾并添加以下指令:

/etc/php/7.2/apache2/php.ini
...
register_globals = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
magic_quotes_gpc = Off
allow_call_time_pass_reference = Off

register_globals = Off禁用register_globals. 启用它具有安全隐患,如 PHP’s Manual 中突出显示的那样

设置magic_quotes_runtimeOff阻止 PHP 自动转义来自外部源 ( POST/ GET) 的任何函数的反斜杠引号magic_quotes_runtimemagic_quotes_sybasemagic_quotes_gpc已被弃用。

allow_call_time_pass_reference 也已弃用。

保存并关闭文件。

现在重启Apache:

  • sudo systemctl restart apache2

这完成了您的服务器设置。您现在可以运行 Mahara 安装程序并通过 Web 浏览器输入您的 ePortfolio。

步骤 7 — 运行 Mahara 安装程序

正确配置 Apache 和 PHP 后,让我们继续通过基于 Web 的安装程序完成 Mahara 的安装。

在您的浏览器中,导航到您服务器的域名。将出现一个屏幕,显示 Mahara 的许可信息和继续安装的按钮。

Mahara 安装画面

单击安装 Mahara按钮并等待安装程序完成所有安装。完成后,向下滚动。您将看到一个显示已成功安装 Mahara 的部分。继续单击继续以继续。

Mahara 将提示您输入新密码和主电子邮件地址。继续并提交表格。

马哈拉欢迎画面

您已准备好开始使用 Mahara。但在您开始探索新的 ePortfolio 之前,您可能需要设置一些最终功能。

设置电子邮件

对于生产设置,请确保 Mahara 可以发送电子邮件。这对于在用户在网站上注册后发送确认电子邮件等通知很有用。您可以使用管理员设置指定外发 SMTP 服务器单击右上角的下拉菜单,然后选择配置站点->站点选项->电子邮件

设置 Cron 作业

最后,考虑设置一个 cron 作业以htdocs/lib/cron.php每分钟命中一次。如果不进行设置,您会发现 RSS 提要不会更新,某些电子邮件通知也不会发送出去。继续并输入以下命令。您将获得一个选项来选择您选择的编辑器。在这个例子中,我们继续使用nano编辑器:

  • sudo crontab -e

在文件底部添加以下行,替换mahara.your_domain为您在步骤 2 中安装 Mahara 的目录的名称

* * * * * php /var/www/mahara.your_domain/htdocs/lib/cron.php

配置您的电子邮件和 cron 作业后,您现在可以使用 Mahara。

结论

Mahara 是一个强大且受欢迎的平台。对于教师和学习者来说,这是一个很好的资源,尤其是在远程学习环境中。Mahara 在教育之外也很受欢迎,在那里用户创建博客和简历构建器。

用户还可以从众多主题中进行选择,而管理员可以探索大量的插件库

熟悉用户界面后,请考虑按照Mahara 网站上后续步骤文章了解更多想法。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁