著者はCOVID-19救済基金を選択し、 Write forDOnationsプログラムの一環として寄付を受け取りました。

序章

Mahara は、オープンソースのeポートフォリオおよびソーシャルネットワーキングシステムであり、「学習者中心の個人学習環境」と自称しています。 マハラは、学習者が知識と成長をキュレートして共有するためのプラットフォームを提供する学術機関で特に人気があります。 遠隔教育環境では、マハラは教育者がデジタル教室を育成し、生徒の進歩を整理するのを助けることができます。 従来の学習管理システム(LMS)とは異なり、Maharaはより分散され、ユーザーに重点を置いています。 この量のユーザーの創造性は、他のより制度的なシステムとは対照的です。

マハラには、学生以外の多くのアプリケーションもあります。 これを使用して、ブログ、履歴書ビルダー、ファイルリポジトリ、またはコンピテンシーフレームワークを構築できます。

このガイドでは、Maharaをインストールし、認証ソースとしてPostgresデータベースを使用するように構成します。 完了すると、サーバーベースのePortfolioへの管理アクセスが可能になります。

前提条件

ステップ1—Maharaのデータベースとユーザーを作成する

最初のステップは、MaharaのPostgresデータベースとユーザーを作成することです。

サーバーのコマンドラインから、postgresユーザーに切り替えます。

  1. sudo -i -u postgres

-iスイッチはインタラクティブなシェルを提供し、sudo-uスイッチとともに使用してユーザーを切り替えることができます。

次に、Postgresユーザーを作成します。 maharaをお好みのユーザー名に置き換えてください。

  1. createuser -SRDP mahara

PostgresはEnter password for a new role:を要求します。 ここでのroleは、作成しようとしている新しいユーザーを指します。 選択したパスワードを入力し、プロンプトが表示されたらパスワードを再入力します。

次に、Maharaインストール用のデータベースを作成します。 次のコマンドを使用して、maharadbを新しいデータベースの優先名に置き換え、maharaを作成したばかりの新しいユーザーに置き換えます。

  1. createdb -O mahara -EUTF8 maharadb

これで、postgresユーザーを終了できます。

  1. exit

注: MaharaデータベースにはPostgresを使用することをお勧めしますが、 MySQL を使用する場合は、Mahara用に新しいユーザーとデータベースを設定する必要があります。 これを行うには、次のコマンドを使用してMySQLrootアカウントにログインします。

  1. mysql -u root -p

アクセスするには、MySQLルートパスワードを入力してください。 次に、Maharaデータベースを作成します。 maharadbを別の名前に置き換えます。

  1. create database maharadb character set UTF8;

次に、Mahara用の新しいMySQLユーザーを作成し、パスワードを設定して、maharadbデータベースへのアクセスを許可します。 passwordの代わりに強力なパスワードを入力し、maharaを目的のユーザー名に置き換えることを忘れないでください。

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

これで、Maharaのデータベースが作成され、ロールが作成されました。 これで、Maharaをインストールして構成できます。

ステップ2—マハラをダウンロードする

Mahara用にデータベースを作成して構成したので、Mahara自体をダウンロードしましょう。 標準ビルドはMaharaのサーバーからダウンロードでき、最新のMaharaビルドはここにあります。

最新の安定版リリースへの.tar.gzリンクを取得したら、wgetコマンドを使用してダウンロードします。 /19.10/19.10.2/+download/mahara-19.10.2.tar.gzを選択したリリースに置き換えてください。

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

これにより、mahara-19.10.2.tar.gzというラベルの付いた圧縮ファイルがダウンロードされます。 圧縮ファイルを抽出して、Maharaディレクトリ構造を作成します。

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

lsコマンドは抽出をチェックします。 これで、新しいmahara-19.10.2ディレクトリが表示されます。

Output
mahara-19.10.2.tar.gz mahara-19.10.2

マハラを/var/www/mahara.your_domainにコピーしましょう。 mahara.your_domainは、前提条件セクションの仮想ホスト構成手順で作成したディレクトリと一致する必要があります。

注:Maharaは空のディレクトリにインストールする必要があります。 ここにすでにファイルがある場合は、DocumentRootを変更して新しいディレクトリを使用することを検討してください。

次に、Maharaディレクトリをコピーします。

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

-aスイッチは、システムがファイルとフォルダーとともにファイルのアクセス許可をコピーすることを保証します。 ソースファイルの最後にある.は、隠しファイルを含むソースディレクトリ内のすべてのものが宛先ディレクトリにコピーされることを保証します。

Maharaが正しく機能するには、追加のPHP拡張機能が必要です。

次のコマンドを実行して、必要なすべての依存関係をインストールします。

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

インストールを完了するためのプロンプトが表示されたら、yと入力します。

サーバーにMaharaをインストールしました。 次に、datarootディレクトリを作成します。

ステップ3—データルートディレクトリを作成する

Maharaコードを設定したので、datarootディレクトリを作成しましょう。 これは、Maharaがアップロードされたファイルと実行する必要のある他のファイルを書き込む場所です。 したがって、Webサーバーはそれに書き込むことができる必要があります。

datarootディレクトリは、Maharaコードがあるディレクトリの外にもある必要があります。 public_htmlディレクトリ内に完全に配置することは避けてください。

/var/maharadataにディレクトリを作成しましょう。

  1. sudo mkdir /var/maharadata

chownで所有権を更新します。

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

これにより、Webサーバーがディレクトリに書き込むことができます。 これで、Maharaの構成を完了できます。

ステップ4—Mahara構成ファイルのセットアップ

このステップでは、Maharaのconfig.phpファイルにいくつかの最終調整を行います。 これらの調整により、データベースが接続され、パスワードが暗号化されます。

Maharaコードディレクトリに切り替えます。

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

htdocsディレクトリにあるconfig-dist.phpファイルをコピーして、config.phpファイルを作成します。

ディレクトリを変更し、ファイルをコピーします。

  1. cp config-dist.php config.php

次に、nanoまたはお好みのテキストエディタを使用してconfig.phpを開きます。

  1. nano config.php

ファイル内の次のセクションを見つけて、必要な変更を加えます。 MySQLを使用している場合を除き、$cfg->dbtypepostgresのままにします。使用している場合は、mysqlに変更します。 maharadbmahara、およびdbpasswordを変更して、データベース名、ユーザー、およびパスワードにそれぞれステップ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';
...

OpenSSL rand関数を使用して、秘密のソルト文字列として使用するランダムな文字列を生成できます。 新しい端末を開き、サーバーに再度接続し、次のコマンドを実行してこの文字列を生成します。

  1. openssl rand -base64 32

-base64 32オプションは、32文字の長さのBase64エンコード文字列を保証します。 passwordsaltmainの値をyour_generated_saltに更新します。

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

警告:一度設定すると、この文字列を失わないようにする必要があります。そうしないと、すべてのユーザーパスワードをリセットする必要があります。 config.phpファイルの安全なバックアップを保持することをお勧めします

注: Maharaを開発サイトまたはテストサイトとして使用する場合は、productionmodeをfalseに設定することをお勧めします。 これをfalseに設定すると、テストに役立つ警告とエラーメッセージが画面に表示されます。

ファイルを保存して閉じます。

Maharaを構成すると、ApacheWebサーバーを使用してMaharaにサービスを提供する準備が整います。

ステップ5—Apacheの設定

前提条件で、ドメインを構成し、それをこのサーバーにポイントしました。 また、Apacheをインストールし、Let’sEncryptを使用してHTTPSを設定しました。 次に、Apacheを使用してMaharaにサービスを提供しましょう。

仮想ホスト構成ファイルの名前がmahara.your_domain.confの場合、Let’s Encryptは、ドメインのHTTPS要求を処理するmahara.your_domain-le-ssl.confという新しい構成ファイルを作成しました。

そのファイルを開きます。 mahara.your_domainをファイルの実際の名前に置き換えてください。

  1. 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 [email protected]
        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は、 oneurlを介してアクセスされることを想定しています。 サーバーエイリアスを使用すると、2回ログインする必要がある、シングルサインオン(SSO)機能が機能しなくなるなどの問題が発生します。

ただし、何らかの理由でエイリアスが必要な場合は、上記のディレクティブに加えて、別の2番目のVirtualHostディレクティブを設定できます。

ファイルに次の追加を行います。

/etc/apache2/sites-available/your_domain-le-ssl.conf
...
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin [email protected]
        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を更新して/htdocsを含めます。 次に、2つの新しいブロックを追加します。

<Directory />ブロックは、ファイルシステムのルートを参照します。 サーバー上の任意の場所にあるすべてのファイルとディレクトリに適用されるディレクティブを指定します。 このブロックにディレクティブを指定すると、AllowOverride Noneなどのデフォルトのディレクティブを配置することで、サーバーを侵入から保護できます。

<Directory /var/www/mahara.your_domain/htdocs>ブロックは、Maharaのドキュメントルートを参照します。 ここで宣言されたディレクティブは、<Directory />ブロックで宣言されたディレクティブをオーバーライドします。 これらのディレクティブは、Apache構成がMaharaにサービスを提供するための基本的な要件です。

ファイルを保存して閉じます。

これで、PHPサービスを構成する準備が整いました。

ステップ6—PHP設定の調整

最後のステップは、Apacheのphp.iniファイルを更新することです。 これにより、ログの詳細度が変更され、アップロードの最大サイズとPOSTサイズのサイズが変更されます。

ファイルを開きます。

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

これは大きなファイルです。 更新を1つずつ見ていきましょう。

log_errors行を見つけて、強調表示されたコードと一致することを確認します。

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

log_errorsをOnに設定すると、PHPは、Maharaの実行中に発生したエラーをログに記録して、デバッグに役立てることができます。

次に、upload_max_filesize = 2Mで始まる行を見つけます。 2M50Mに置き換えます。

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

これにより、アップロードファイルの最大サイズが50メガバイトに増加します。

次に、post_max_size = 8Mで始まる行を見つけます。 8M100Mに置き換えます。

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

upload_max_filesizeは、投稿されるファイルに許可される最大サイズを示し、post_max_sizeは、すべてのPOST本文データに許可される最大サイズです。 したがって、この2番目の数値を常に高くする必要があります。 これらの設定により、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 = Offregister_globalsを無効にします。 これを有効にすると、PHPのマニュアルで強調されているようにセキュリティに影響があります。

magic_quotes_runtimeOffに設定すると、PHPは、外部ソース(POST / GET)から入ってくる関数からのバックスラッシュで引用符を自動的にエスケープしなくなります。 magic_quotes_runtimemagic_quotes_sybase、およびmagic_quotes_gpcは非推奨になりました。

allow_call_time_pass_referenceも非推奨になりました。

ファイルを保存して閉じます。

次に、Apacheを再起動します。

  1. sudo systemctl restart apache2

これでサーバーのセットアップは完了です。 これで、Maharaインストーラーを実行し、WebブラウザーからePortfolioを入力する準備が整いました。

ステップ7—Maharaインストーラーの実行

ApacheとPHPが適切に構成されたら、Webベースのインストーラーを使用してMaharaのインストールを完了します。

ブラウザで、サーバーのドメイン名に移動します。 Maharaのライセンス情報を表示する画面と、インストールを続行するためのボタンが表示されます。

Mahara Install Screen

Maharaのインストールボタンをクリックし、インストーラーがすべてのインストールの実行を完了するまで待ちます。 完了したら、下にスクロールします。 あなたは言うセクションが表示されます Maharaのインストールに成功しました。 継続する続行をクリックして続行します。

Maharaは、新しいパスワードとメインの電子メールアドレスを入力するように求めます。 先に進み、フォームを送信してください。

Mahara Welcome Screen

これで、Maharaの使用を開始する準備が整いました。 ただし、新しいePortfolioの探索を開始する前に、いくつかの最終機能を設定することをお勧めします。

メールを設定する

本番環境では、Maharaがメールを送信できることを確認してください。 これは、ユーザーがサイトに登録した後に確認メールなどの通知を送信する場合に便利です。 管理者設定で送信SMTPサーバーを指定できます。 右上のドロップダウンメニューをクリックし、サイトの構成->サイトオプション->メールを選択します。

cronジョブを設定する

最後に、毎分htdocs/lib/cron.phpをヒットするようにcronジョブを設定することを検討してください。 これを設定しないと、RSSフィードが更新されず、一部の電子メール通知が送信されないことがわかります。 先に進み、次のコマンドを入力します。 選択したエディターを選択するオプションが表示されます。 この例では、nanoエディターを使用しています。

  1. sudo crontab -e

ファイルの下部に次の行を追加して、mahara.your_domainステップ2でMaharaをインストールしたディレクトリの名前に置き換えます。

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

電子メールとcronジョブを構成すると、Maharaを使用する準備が整います。

結論

マハラは強力で人気のあるプラットフォームです。 これは、特に遠隔教育環境において、教師と学習者にとって素晴らしいリソースです。 マハラは教育以外でも人気があり、ユーザーはブログを作成してビルダーを再開します。

ユーザーは多数のテーマから選択することもでき、管理者はプラグインの大規模なライブラリを探索できます。

ユーザーインターフェイスに慣れたら、MaharaのWebサイト次のステップの記事に従って他のアイデアを検討してください。