CentOS8にNginxを使用してMoodle学習プラットフォームをインストールする方法


Moodleは、堅牢なオンライン学習サイトを構築するための世界で最も人気のある学習管理システムです。さまざまなアクティビティと教育ツールから選択でき、評価管理をサポートし、カスタム証明書が付属しています。また、強力なビデオ会議ツールを使用して、学生とリアルタイムでコミュニケーションをとることができます。さらに、モバイル対応であるため、生徒はモバイルデバイスから学ぶことができます。

このページで

1.ユーザーがMoodleオンライン学習サイトにアクセスするために使用するサブドメインを作成することから始めます。たとえば、ドメイン名が testprojects.me の場合、 Learning.testprojects.me というサブドメインを作成できます。

次の図に示すように、ドメイン名の詳細DNS設定を開き、 A レコードを追加します。

2. Moodleをインストールする前に、サーバーに必要なPHP拡張機能があることを確認してください。次のコマンドを実行して、それらをインストールできます。

# dnf install php-common php-iconv php-curl php-mbstring php-xmlrpc php-soap php-zip php-gd php-xml php-intl php-json libpcre3 libpcre3-dev graphviz aspell ghostscript clamav

3.次に、Moodleアプリケーションのデータベースを次のように作成します。

# mysql -u root -p

次に、データベース、データベースユーザーを作成し、使用するための安全なパスワードを作成します。

MariaDB [(none)]> CREATE DATABASE moodledb;
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO 'moodleadmin'@'localhost' IDENTIFIED BY '[email protected]';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

4.次に、Moodleの最新バージョン(執筆時点では3.9)を公式のmoodleプロジェクトWebサイトからダウンロードし、アーカイブファイルを抽出してWebルート(/var/www/html/)に移動します。次に、次のように、適切な権限と所有権を設定して、WebサーバーがMoodleディレクトリにアクセスできるようにします。

# wget -c https://download.moodle.org/download.php/direct/stable39/moodle-latest-39.tgz
# tar -xzvf  moodle-latest-39.tgz
# mv moodle /var/www/html/
# chmod 775 -R /var/www/html/moodle
# chown nginx:nginx -R /var/www/html/moodle

5.次に、Moodleインターフェースによってアップロードまたは作成されたファイルの場所であるmoodledataディレクトリを作成し、適切な権限と所有権を割り当てて、Webサーバーがそのディレクトリへの読み取りおよび書き込みアクセスを許可します。

# mkdir -p /var/www/html/moodledata
# chmod 770 -R /var/www/html/moodledata
# chown :nginx -R /var/www/html/moodledata

6.次に、Moodleインストールディレクトリに移動し、提供されているサンプルの config.dist.php ファイルから config.php ファイルを作成し、それを開いて編集し、いくつかを設定します。データベース接続パラメーターやサイトの場所、moodledataディレクトリの場所など、Moodleプラットフォームの主要な設定:

# cd /var/www/html/moodle/
# cp config-dist.php config.php
# vim config.php

正しいデータベースタイプ、正しいデータベースホスト、データベース名、データベースユーザー、およびユーザーのパスワードを設定します。

$CFG->dbtype    = 'mariadb';      // 'pgsql', 'mariadb', 'mysqli', 'sqlsrv' or 'oci'
$CFG->dblibrary = 'native';     // 'native' only at the moment
$CFG->dbhost    = 'localhost';  // eg 'localhost' or 'db.isp.com' or IP
$CFG->dbname    = 'moodledb';     // database name, eg moodle
$CFG->dbuser    = 'moodleadmin';   // your database username
$CFG->dbpass    = '[email protected]zzwd0L2';   // your database password
$CFG->prefix    = 'mdl_';       // prefix to use for all table names

7. Moodleシットへのアクセスに使用するURLも設定します。これにより、Moodle Webファイルが配置されているwwwrootの場所と、dataroot(moodledataディレクトリ)が指定されます。

$CFG->wwwroot   = 'http://learning.testprojects.me';
$CFG->dataroot  = '/var/www/html/moodledata';

8.このセクションでは、Moodleアプリケーションを提供するようにNGINXを設定する必要があります。図のように、NGINX構成でそのサーバーブロックを作成する必要があります。

# vim /etc/nginx/conf.d/moodle.conf

次の構成をコピーして、サーバーブロック構成ファイルに貼り付けます。サーバー名を上記で作成したサブドメイン名に置き換えます。fastcgi_passはphp-fpmを指している必要があります(CentOS 8では、PHP-FPMは/etc/nginx/conf.d/php-で定義されたアドレスを使用してFastCGIリクエストを受け入れることに注意してください。 fpm.conf構成)。

server{
   listen 80;
    server_name learning.testprojects.me;
    root        /var/www/html/moodle;
    index       index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ ^(.+\.php)(.*)$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_index           index.php;
        fastcgi_pass            php-fpm;
        include                 /etc/nginx/mime.types;
        include                 fastcgi_params;
        fastcgi_param           PATH_INFO       $fastcgi_path_info;
        fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

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

9.次に、NGINX構成が正しいかどうかを確認します。問題がない場合は、nginxサービスとphp-fpmサービスを再起動して、最近の変更を適用します。

# nginx -t
# systemctl restart nginx
# systemctl restart php-fpm

10.システムでSELinuxを有効にしている場合は、以下のコマンドを実行して、サーバー上のMoodleWebファイルにアクセスするための正しいコンテキストを設定します。

# setsebool -P httpd_can_network_connect on
# chcon -R --type httpd_sys_rw_content_t /var/www/html

11.さらに、HTTPおよびHTTPSサービスがファイアウォールで開いていることを確認して、NGINXWebサーバーへのトラフィックを許可します。

# firewall-cmd --permanent --zone=public --add-service=http 
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --reload

12. Moodle Webインストーラーにアクセスするには、Webブラウザーを開き、上記で作成したサブドメインを使用してナビゲートします。

http://learning.testprojects.me

ウェルカムページが読み込まれたら、利用規約を読み、[続行]をクリックします。

13.次に、Webインストーラーは、システムが指定されたバージョンのMoodleサイトを実行するための要件を満たしているかどうかをチェックします。下にスクロールして詳細を表示できます。

14.インストーラーはHTTPSが有効になっていないと文句を言い、今のところそのエラーを無視し(次のセクションでは、MoodleでHTTPSを有効にする方法を示します)、続行をクリックしてWebファイルの実際のインストールを開始します。

15.これで、インストーラーは次のスクリーンショットに示すようにMoodleファイルの実際のインストールを開始します。完了したら、[続行]をクリックします。

16.次のステップでは、ユーザー名、パスワード、名、名前、および電子メールアドレスを更新して、Moodleサイトの管理者アカウントを更新する必要があります。次に、ページを下にスクロールして、[プロファイルの更新]をクリックします。

17.次に、Moodleサイトのフロントページ設定を更新します。次に、下にスクロールして[更新]をクリックし、Moodleサイトの使用を開始します。

18.次に、画面の指示に従ってサイトを登録する必要があります。ダッシュボードをクリックすると、ダッシュボードに移動できます。

HTTPSは、サイトにセキュリティの第1層を追加して、ユーザーとMoodleアプリケーション(特に、要求を受信して応答を配信するNGINX Webサーバー)間の安全な通信を可能にします。

商用CAからSSL/TLS証明書を購入するか、無料で最新のすべてのWebブラウザーで認識されるLet’sEncryptを使用できます。このガイドでは、Let’sEncryptを使用します。

19. Let’s Encrypt証明書の展開は、certbotツールを使用して自動的に管理されます。次のコマンドを使用して、certbotおよびその他の必要なパッケージをインストールできます。

# dnf install certbot python3-certbot-nginx

20.次に、次のコマンドを実行してLet’s Encrypt証明書を取得し、CertbotにNGINX構成を自動的に編集させて提供します(HTTPをHTTPSに自動的にリダイレクトするように構成します)。

# certbot --nginx

21.次に、次のコマンドを実行して、Let’s Encrypt SSL/TLS証明書の自動更新を有効にします。

# echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

22.次に、Moodle設定を更新してHTTPSの使用を開始します。

# vim /var/www/html/moodle/config.php

wwwrootのURLをHTTPからHTTPSに変更します。

$CFG->wwwroot   = 'https://learning.testprojects.me';

23.最後になりましたが、MoodleサイトがHTTPSで実行されていることを確認してください。

今のところ以上です!新しい学習プラットフォームを実行するための詳細および構成オプションについては、MoodleのWebサイトにアクセスし、公式ドキュメントをお読みください。