作者选择了 COVID-19 救援基金作为 Write for Donations计划的一部分接受捐款。
介绍
Mahara是一个开源的电子钱包和社交网络系统,它自称是以学习者为中心的个人学习环境
。Mahara在学术机构中特别受欢迎,它为学习者提供了一个平台来策划和分享他们的知识和成长。在远程学习环境中,Mahara可以帮助教育者培育数字课堂并组织学生的进步。与传统的学习管理系统(LMS)不同,Mahara更分布和以用户为中心。
马哈拉也有许多非学生应用程序,您可以使用它来构建博客、简历构建器、文件存储库或能力框架。
在本指南中,您将安装Mahara并配置它以使用Postgres数据库(https://www.postgresql.org/)作为身份验证源。
前提条件
- 一个Ubuntu 18.04服务器,有一个非根 ' sudo ' 用户和一个防火墙。 您可以遵循我们的[Ubuntu 18.04 初始服务器设置指南] (https://andsky.com/tech/tutorials/initial-server-setup-with-ubuntu-18-04) 指令.
- 已安装 Postgres 关系数据库管理系统. 您可以在 Ubuntu 18.04 (https://andsky.com/tech/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04 ) 上遵循我们的 [如何安装和使用 PostgreSQL] 指令指南 。 步骤1——安装PostgreSQL 应足够.
*Apache和PHP已安装. 您可以在 Ubuntu 18. 04 (https://andsky.com/tech/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04) 上遵循我们的 [如何安装 Linux, Apache, MySQL, PHP (LAMP stack) 指令指南 。 注意: Mahara 推荐使用 Postgres 而不是 MySQL, 但您可以 [遵循 ** 步骤 2 ** 来安装和使用 MySQL (https://andsky.com/tech/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04#step-2-%E2%80%94-installing-mysql).
QQ 为指向您的服务器而配置的域名 。 要将域指向 DigitalOcean Droplets,请遵循我们的[如何从通用域注册处指向 DigitalOcean Nameervers] (https://andsky.com/tech/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-registrars) 指南. 此教程将使用
mahara. your_ domain
作为示例. - 使用
ServerName
指令为域配置的虚拟主机。 对于一个指南,请跳到[步骤5——设置虚拟主机(建议) ](https://andsky.com/tech/tutorials/how-to-install-the-apache-web-server-on-ubuntu-18-04#step-5-%E2%80%94-setting-up-virtual-hosts-(recommended)[如何在Ubuntu 18.04 (https://andsky.com/tech/tutorials/how-to-install-the-apache-web-server-on-ubuntu-18-04#step-5-%E2%80%94-setting-up-virtual-hosts-(recommended)上安装Apache Web服务器] - A让我们为您配置的域设置加密证书,遵循[如何用Ubuntu 18.04加密的Apache (https://andsky.com/tech/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04)指南.
步骤 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
取代8M
为100M
:
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_sybase
和magic_quotes_gpc
都被贬值。
allow_call_time_pass_reference
也被删除。
保存并关闭文件。
重新启动Apache:
1sudo systemctl restart apache2
您现在已经准备好运行Mahara安装程序,并通过Web浏览器输入您的ePortfolio。
步骤7 —运行Mahara安装程序
有了Apache和PHP的正确配置,让我们通过其基于Web的安装程序完成Mahara的安装。
在您的浏览器中,导航到您的服务器的域名. 将出现显示Mahara的许可信息的屏幕和继续安装的按钮。
点击 Install Mahara 按钮,等待安装程序完成所有安装。完成后,向下滚动. 您将看到一个节点,上面写着 成功安装了 Mahara。 继续 . 点击 继续 继续。
Mahara会要求您输入一个新的密码和一个主要的电子邮件地址。
你已经准备好开始使用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)以获得更多想法。