著者はCOVID-19救済基金を選択し、 Write forDOnationsプログラムの一環として寄付を受け取りました。
序章
Mahara は、オープンソースのeポートフォリオおよびソーシャルネットワーキングシステムであり、「学習者中心の個人学習環境」と自称しています。 マハラは、学習者が知識と成長をキュレートして共有するためのプラットフォームを提供する学術機関で特に人気があります。 遠隔教育環境では、マハラは教育者がデジタル教室を育成し、生徒の進歩を整理するのを助けることができます。 従来の学習管理システム(LMS)とは異なり、Maharaはより分散され、ユーザーに重点を置いています。 この量のユーザーの創造性は、他のより制度的なシステムとは対照的です。
マハラには、学生以外の多くのアプリケーションもあります。 これを使用して、ブログ、履歴書ビルダー、ファイルリポジトリ、またはコンピテンシーフレームワークを構築できます。
このガイドでは、Maharaをインストールし、認証ソースとしてPostgresデータベースを使用するように構成します。 完了すると、サーバーベースのePortfolioへの管理アクセスが可能になります。
前提条件
- 非ルート
sudo
ユーザーとファイアウォールを備えた1つのUbuntu18.04サーバー。 手順については、Ubuntu18.04初期サーバーセットアップガイドに従ってください。 - Postgresリレーショナルデータベース管理システムがインストールされています。 手順については、 Ubuntu18.04ガイドにPostgreSQLをインストールして使用する方法に従ってください。 ステップ1—PostgreSQLをインストールするだけで十分です。
- ApacheとPHPがインストールされています。 手順については、 Linux、Apache、MySQL、PHP(LAMPスタック)をUbuntu18.04ガイドにインストールする方法に従ってください。 MaharaはMySQLではなくPostgresを使用することを推奨していますが、このガイドのステップ2に従って、代わりにMySQLをインストールして使用することができます。
- サーバーを指すように構成されたドメイン名。 ドメインをDigitalOceanドロップレットにポイントするには、 Common DomainRegistrarsガイドからDigitalOceanネームサーバーをポイントする方法に従ってください。 このチュートリアルでは、例として
mahara.your_domain
を使用します。 ServerName
ディレクティブを使用してドメイン用に構成された仮想ホスト。 ガイドについては、 Ubuntu 18.04にApacheWebサーバーをインストールする方法のステップ5—仮想ホストのセットアップ(推奨)にジャンプしてください。- Ubuntu 18.04でLet’sEncryptを使用してApacheを保護する方法ガイドに従って、構成したドメインに設定されたLet’sEncrypt証明書。
ステップ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
注: MaharaデータベースにはPostgresを使用することをお勧めしますが、 MySQL を使用する場合は、Mahara用に新しいユーザーとデータベースを設定する必要があります。 これを行うには、次のコマンドを使用してMySQLrootアカウントにログインします。
- 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ビルドはここにあります。
最新の安定版リリースへの.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-19.10.2.tar.gz
というラベルの付いた圧縮ファイルがダウンロードされます。 圧縮ファイルを抽出して、Maharaディレクトリ構造を作成します。
- tar xzvf mahara-19.10.2.tar.gz
- ls
ls
コマンドは抽出をチェックします。 これで、新しいmahara-19.10.2
ディレクトリが表示されます。
Outputmahara-19.10.2.tar.gz mahara-19.10.2
マハラを/var/www/mahara.your_domain
にコピーしましょう。 mahara.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—データルートディレクトリを作成する
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
htdocs
ディレクトリにあるconfig-dist.php
ファイルをコピーして、config.php
ファイルを作成します。
ディレクトリを変更し、ファイルをコピーします。
- cp config-dist.php config.php
次に、nano
またはお好みのテキストエディタを使用してconfig.php
を開きます。
- nano config.php
ファイル内の次のセクションを見つけて、必要な変更を加えます。 MySQLを使用している場合を除き、$cfg->dbtype
をpostgres
のままにします。使用している場合は、mysql
に変更します。 maharadb
、mahara
、およびdbpassword
を変更して、データベース名、ユーザー、およびパスワードにそれぞれステップ1で使用した値と一致させます。
...
$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';
...
同じファイルで、次のセクションを見つけます。
...
$cfg->dataroot = '/path/to/uploaddir';
...
ステップ3で設定したとおりに、Maharaのdatarootディレクトリを指すように変更します。
...
$cfg->dataroot = '/var/maharadata';
...
最後に、passwordsaltmain
をランダムな秘密の文字列で更新しましょう。 これにより、保存されているユーザーパスワードが暗号化されます。 次の行を見つけてコメントを外します。
...
// $cfg->passwordsaltmain = 'some long random string here with lots of characters';
...
OpenSSL rand
関数を使用して、秘密のソルト文字列として使用するランダムな文字列を生成できます。 新しい端末を開き、サーバーに再度接続し、次のコマンドを実行してこの文字列を生成します。
- openssl rand -base64 32
-base64 32
オプションは、32文字の長さのBase64エンコード文字列を保証します。 passwordsaltmain
の値をyour_generated_salt
に更新します。
...
$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
をファイルの実際の名前に置き換えてください。
- sudo nano /etc/apache2/sites-available/mahara.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は、 oneurlを介してアクセスされることを想定しています。 サーバーエイリアスを使用すると、2回ログインする必要がある、シングルサインオン(SSO)機能が機能しなくなるなどの問題が発生します。
ただし、何らかの理由でエイリアスが必要な場合は、上記のディレクティブに加えて、別の2番目のVirtualHostディレクティブを設定できます。
ファイルに次の追加を行います。
...
<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
を更新して/htdocs
を含めます。 次に、2つの新しいブロックを追加します。
<Directory />
ブロックは、ファイルシステムのルートを参照します。 サーバー上の任意の場所にあるすべてのファイルとディレクトリに適用されるディレクティブを指定します。 このブロックにディレクティブを指定すると、AllowOverride None
などのデフォルトのディレクティブを配置することで、サーバーを侵入から保護できます。
<Directory /var/www/mahara.your_domain/htdocs>
ブロックは、Maharaのドキュメントルートを参照します。 ここで宣言されたディレクティブは、<Directory />
ブロックで宣言されたディレクティブをオーバーライドします。 これらのディレクティブは、Apache構成がMaharaにサービスを提供するための基本的な要件です。
ファイルを保存して閉じます。
これで、PHPサービスを構成する準備が整いました。
ステップ6—PHP設定の調整
最後のステップは、Apacheのphp.ini
ファイルを更新することです。 これにより、ログの詳細度が変更され、アップロードの最大サイズとPOST
サイズのサイズが変更されます。
ファイルを開きます。
- sudo nano /etc/php/7.2/apache2/php.ini
これは大きなファイルです。 更新を1つずつ見ていきましょう。
log_errors
行を見つけて、強調表示されたコードと一致することを確認します。
. . .
log_errors = On
. . .
log_errors
をOnに設定すると、PHPは、Maharaの実行中に発生したエラーをログに記録して、デバッグに役立てることができます。
次に、upload_max_filesize = 2M
で始まる行を見つけます。 2M
を50M
に置き換えます。
. . .
upload_max_filesize = 50M
. . .
これにより、アップロードファイルの最大サイズが50メガバイトに増加します。
次に、post_max_size = 8M
で始まる行を見つけます。 8M
を100M
に置き換えます。
. . .
post_max_size = 100M
. . .
upload_max_filesize
は、投稿されるファイルに許可される最大サイズを示し、post_max_size
は、すべてのPOST
本文データに許可される最大サイズです。 したがって、この2番目の数値を常に高くする必要があります。 これらの設定により、Maharaは設定された最大値でファイルのアップロードを受け入れることができます。
次に、ファイルの最後に移動して、次のディレクティブを追加します。
...
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のマニュアルで強調されているようにセキュリティに影響があります。
magic_quotes_runtime
をOff
に設定すると、PHPは、外部ソース(POST
/ GET
)から入ってくる関数からのバックスラッシュで引用符を自動的にエスケープしなくなります。 magic_quotes_runtime
、magic_quotes_sybase
、およびmagic_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の使用を開始する準備が整いました。 ただし、新しいePortfolioの探索を開始する前に、いくつかの最終機能を設定することをお勧めします。
メールを設定する
本番環境では、Maharaがメールを送信できることを確認してください。 これは、ユーザーがサイトに登録した後に確認メールなどの通知を送信する場合に便利です。 管理者設定で送信SMTPサーバーを指定できます。 右上のドロップダウンメニューをクリックし、サイトの構成->サイトオプション->メールを選択します。
cronジョブを設定する
最後に、毎分htdocs/lib/cron.php
をヒットするようにcronジョブを設定することを検討してください。 これを設定しないと、RSSフィードが更新されず、一部の電子メール通知が送信されないことがわかります。 先に進み、次のコマンドを入力します。 選択したエディターを選択するオプションが表示されます。 この例では、nano
エディターを使用しています。
- sudo crontab -e
ファイルの下部に次の行を追加して、mahara.your_domain
をステップ2でMaharaをインストールしたディレクトリの名前に置き換えます。
* * * * * php /var/www/mahara.your_domain/htdocs/lib/cron.php
電子メールとcronジョブを構成すると、Maharaを使用する準備が整います。
結論
マハラは強力で人気のあるプラットフォームです。 これは、特に遠隔教育環境において、教師と学習者にとって素晴らしいリソースです。 マハラは教育以外でも人気があり、ユーザーはブログを作成してビルダーを再開します。
ユーザーは多数のテーマから選択することもでき、管理者はプラグインの大規模なライブラリを探索できます。
ユーザーインターフェイスに慣れたら、MaharaのWebサイトの次のステップの記事に従って他のアイデアを検討してください。