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

作者选择了 COVID-19 救援基金作为 Write for Donations计划的一部分接受捐款。

介绍

Mahara是一个开源的电子钱包和社交网络系统,它自称是以学习者为中心的个人学习环境。Mahara在学术机构中特别受欢迎,它为学习者提供了一个平台来策划和分享他们的知识和成长。在远程学习环境中,Mahara可以帮助教育者培育数字课堂并组织学生的进步。与传统的学习管理系统(LMS)不同,Mahara更分布和以用户为中心。

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

在本指南中,您将安装Mahara并配置它以使用Postgres数据库(https://www.postgresql.org/)作为身份验证源。

前提条件

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

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

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

1sudo -i -u postgres

-i交换机提供了交互式壳,而与-u交换机使用的sudo允许您切换用户。

现在创建一个 Postgres 用户;请确保用您喜爱的用户名更换mahara:

1createuser -SRDP mahara

Postgres 将提示您输入新角色密码:角色指的是您试图创建的新用户,请提供您选择的密码,然后在提示时重新输入密码。

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

1createdb -O mahara -EUTF8 maharadb

您现在可以退出postgres用户:

1exit

<$>[note] 注: 建议您为 Mahara 数据库使用 Postgres,但如果您决定使用 MySQL,则需要为 Mahara 设置一个新的用户和数据库。

1mysql -u root -p

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

1create database maharadb character set UTF8;

接下来,为 Mahara 创建一个新的 MySQL 用户,设置一个密码,并允许它访问您的maharadb数据库. 请记住提供一个强大的密码而不是密码,并用您想要的用户名替换mahara:

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

美元

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

步骤 2 —下载马哈拉

现在你已经为马哈拉创建并配置了数据库,让我们下载马哈拉本身,你可以从马哈拉的服务器下载一个标准构建,并且 你可以在这里找到最新的马哈拉构建

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

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

这将下载一个被压缩的文件标签为 mahara-19.10.2.tar.gz. 提取压缩的文件来创建Mahara目录结构:

1tar xzvf mahara-19.10.2.tar.gz
2ls

ls命令检查提取,你现在会看到新的mahara-19.10.2目录:

1[secondary_label Output]
2mahara-19.10.2.tar.gz mahara-19.10.2

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

<$>[注] 注: Mahara必须安装到一个空的目录. 如果您已经在这里有文件,请考虑更改您的DocumentRoot并使用一个新的目录。

现在复制Mahara目录:

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

a 交换器确保系统将文件权限与文件和文件夹一起复制. 源文件末尾的 . 确保源目录中的所有内容,包括隐藏的文件,都被复制到目标目录。

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

运行以下命令来安装所有必要的依赖:

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

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

您已在您的服务器上安装了 Mahara. 接下来,您将创建数据源目录。

步骤 3 — 创建 Dataroot 目录

现在你已经设置了Mahara代码,让我们创建一个数据根目录,这就是Mahara会写上传的文件以及其它一些需要运行的文件的地方。

数据根目录也应该在您拥有Mahara代码的目录之外,您应该避免将其放在您的public_html目录中。

让我们在 /var/maharadata 中创建目录:

1sudo mkdir /var/maharadata

chown更新所有权:

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

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

步骤 4 — 设置Mahara配置文件

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

转到Mahara代码目录:

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

创建您的config.php文件,将config-dist.php文件复制到htdocs目录中。

更改目录并复制文件:

1cp config-dist.php config.php

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

1nano config.php

查找文件中的下一个部分并做出所需的更改. 将$cfg->dbtype留为postgres,除非您正在使用MySQL,在这种情况下将其更改为mysql

1[label ./htdocs/config.php]
2...
3$cfg->dbtype   = 'postgres';
4$cfg->dbhost   = 'localhost';
5$cfg->dbport   = null; // Change if you are using a non-standard port number for your database
6$cfg->dbname   = 'maharadb';
7$cfg->dbuser   = 'mahara';
8$cfg->dbpass   = 'dbpassword';
9...

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

1[label /var/www/mahara/htdocs/config.php]
2...
3$cfg->dataroot = '/path/to/uploaddir';
4...

更改它以指向Mahara的数据根目录,如您在 步骤 3 中设置:

1[label /var/www/mahara/htdocs/config.php]
2...
3$cfg->dataroot = '/var/maharadata';
4...

最后,让我们用随机的秘密字符串更新passwordsaltmain。这将加密存储的用户密码。 查找并放弃评论下列行:

1[label /var/www/mahara/htdocs/config.php]
2...
3// $cfg->passwordsaltmain = 'some long random string here with lots of characters';
4...

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

1openssl rand -base64 32

选项 -base64 32 确保一个 Base64 编码的字符串长达 32 个字符. 更新 passwordsaltmain 的值为 your_generated_salt:

1[label /var/www/mahara/htdocs/config.php]
2...
3$cfg->passwordsaltmain = 'your_generated_salt';
4...

<$>[警告] 警告: 一旦设置,您不应该丢失这个字符串,否则您需要重新设置所有用户密码。 保持您的 config.php 文件的安全备份是很好的做法。

<$>[注] 注: 当您使用 Mahara 作为开发或测试站点时,您可能希望将 productionmode 设置为 false。

保存并关闭文件。

有了 Mahara 配置,您可以使用 Apache Web 服务器为 Mahara 服务。

步骤 5 — 配置 Apache

在前提条件下,您配置了一个域,并将其指向该服务器. 您还安装了Apache并使用Let’s Encrypt设置了HTTPS。

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

请确保用您的文件的实际名称代替 mahara.your_domain:

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

檔案將看起來像這樣:

 1[label /etc/apache2/sites-available/your_domain-le-ssl.conf]
 2...
 3<IfModule mod_ssl.c>
 4<VirtualHost *:443>
 5        ServerAdmin webmaster@localhost
 6        ServerName mahara.your_domain
 7        DocumentRoot /var/www/mahara.your_domain
 8        ErrorLog ${APACHE_LOG_DIR}/error.log
 9        CustomLog ${APACHE_LOG_DIR}/access.log combined
10
11SSLCertificateFile /etc/letsencrypt/live/mahara.your_domain/fullchain.pem
12SSLCertificateKeyFile /etc/letsencrypt/live/mahara.your_domain/privkey.pem
13Include /etc/letsencrypt/options-ssl-apache.conf
14</VirtualHost>
15</IfModule>
16...

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

<$>[注] 注: 您的Apache配置不应该包含ServerAliases。Mahara预计将通过 one url 访问。

但是,如果您有任何原因需要一个名称,您可以设置一个单独的第二个 VirtualHost 指令,除了上述指令。

将下列添加到文件中:

 1[label /etc/apache2/sites-available/your_domain-le-ssl.conf]
 2...
 3<IfModule mod_ssl.c>
 4<VirtualHost *:443>
 5        ServerAdmin webmaster@localhost
 6        ServerName mahara.your_domain
 7        DocumentRoot /var/www/mahara.your_domain/htdocs
 8
 9        <Directory />
10            Options FollowSymLinks
11            AllowOverride None
12        </Directory>
13
14        <Directory /var/www/your_domain/htdocs>
15            Options Indexes FollowSymLinks MultiViews
16            AllowOverride None
17            Order allow,deny
18            allow from all
19        </Directory>
20
21        ErrorLog ${APACHE_LOG_DIR}/error.log
22        CustomLog ${APACHE_LOG_DIR}/access.log combined
23
24SSLCertificateFile /etc/letsencrypt/live/mahara.your_domain/fullchain.pem
25SSLCertificateKeyFile /etc/letsencrypt/live/mahara.your_domain/privkey.pem
26Include /etc/letsencrypt/options-ssl-apache.conf
27</VirtualHost>
28</IfModule>
29...

首先,更新「DocumentRoot」以包含「/htdocs」。

<Directory />区块指的是文件系统根,它指定了适用于服务器上任何地方的所有文件和目录的指令,为此区块指定了指令,使我们能够通过设置默认指令,如AllowOverride None来保护您的服务器免受入侵。

<Directory /var/www/mahara.your_domain/htdocs>块指的是马哈拉的文档根部. 这里声明的指令超过了在<Directory />块上声明的指令。

保存并关闭文件。

您现在已经准备好配置您的PHP服务了。

步骤 6 — 调整 PHP 设置

我们的最后一步是更新Apache的php.ini文件,这将改变我们的日志词汇,调整最大上传和POST大小。

打开文件:

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

这是一个大文件,让我们一个接一个的更新。

查找log_errors行,并确保它匹配突出的代码:

1[label /etc/php/7.2/apache2/php.ini]
2. . .
3log_errors = On
4. . .

log_errors设置为On将允许PHP在运行Mahara时记录遇到的错误,以帮助调试。

现在找出开始于upload_max_filesize = 2M的行,用50M取代2M:

1[label /etc/php/7.2/apache2/php.ini]
2. . .
3upload_max_filesize = 50M
4. . .

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

现在找到开始的行:post_max_size = 8M 取代8M100M:

1[label /etc/php/7.2/apache2/php.ini]
2. . .
3post_max_size = 100M
4. . .

upload_max_filesize 表示发布文件的最大允许大小,而 post_max_size 是所有 POST 身体数据的最大允许大小。

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

1[label /etc/php/7.2/apache2/php.ini]
2...
3register_globals = Off
4magic_quotes_runtime = Off
5magic_quotes_sybase = Off
6magic_quotes_gpc = Off
7allow_call_time_pass_reference = Off

「register_globals = Off」禁用「register_globals」。

magic_quotes_runtime设置为Off会阻止PHP自动从来自外部源的任何函数(POST/GET)中逃避引用,而magic_quotes_runtime,magic_quotes_sybasemagic_quotes_gpc都被贬值。

allow_call_time_pass_reference 也被删除。

保存并关闭文件。

重新启动Apache:

1sudo systemctl restart apache2

您现在已经准备好运行Mahara安装程序,并通过Web浏览器输入您的ePortfolio。

步骤7 —运行Mahara安装程序

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

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

Mahara Install Screen

点击 Install Mahara 按钮,等待安装程序完成所有安装。完成后,向下滚动. 您将看到一个节点,上面写着 成功安装了 Mahara。 继续 . 点击 继续 继续。

Mahara会要求您输入一个新的密码和一个主要的电子邮件地址。

Mahara Welcome Screen

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

设置电子邮件

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

创建一个Cron工作

最后,考虑设置一个 cron 任务,以便每分钟按htdocs/lib/cron.php。没有设置此设置,你会发现RSS 源不会更新,一些电子邮件通知不会发出。继续进去,输入以下命令。你会得到选择你选择的编辑器的选项。在这个例子中,我们正在继续使用nano编辑器:

1sudo crontab -e

在文件底部添加以下行,用您在 Step 2 上安装了 Mahara 的目录名称取代 mahara.your_domain:

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

有了您的电子邮件和 cron 工作配置,您现在已经准备好使用 Mahara。

结论

马哈拉是一个强大而受欢迎的平台,它是教师和学习者的伟大资源,尤其是在远程学习环境中。

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

熟悉用户界面后,请考虑遵循Mahara网站上的下一步文章(https://wiki.mahara.org/wiki/System_Administrator%27s_Guide/Next_Steps)以获得更多想法。

Published At
Categories with 技术
Tagged with
comments powered by Disqus