GNU/Linux >> Linux の 問題 >  >> Debian

Debian9にMoodleeラーニングプラットフォームをインストールする

Moodleは、柔軟で強力な無料のオープンソースコース管理システムおよびeラーニングプラットフォームであり、PHPで記述されており、多くの場合、LAMPまたはLEMPスタックとも呼ばれるPHPおよびMySQL/MariaDBデータベース管理システムを備えたApache/NginxWebサーバーの下でLinuxにデプロイされます。

このチュートリアルでは、Debian 9リリースで最新バージョンのMoodleをインストールして構成し、構内でeラーニングプラットフォームを作成する方法について説明します。

Moodleプラットフォームは、教育者やトレーナーがコースデータを保存し、学生、成績、オンラインコースを追跡するために使用できる直感的なWebインターフェースを提供します。世界中のほとんどの主要大学は、学生と教師の教育活動を容易にするために、Moodleeラーニングプラットフォームを導入しています。

要件

Moodleを正常にインストールしてデプロイするには、サーバーが以下の要件を満たしている必要があります。

  • ベアメタルサーバーマシンまたは仮想プライベートサーバーに最小限のソフトウェア要件でインストールされたDebian9サーバー
  • コンソールまたはSSHを介したrootアカウントへの直接アクセス、またはsudoユーティリティを介して取得したroot権限を持つアカウントへのリモートまたは直接アクセス
  • 静的IPアドレスで構成されたネットワークインターフェースカード
  • Moodleのメール登録、通知、またはその他の種類の機能を使用するには、IMAP、POP3、およびSMTPサービスにアクセスできるメールサーバーを施設に適切に設定する必要があります。
  • デプロイメントに応じて、Webサービス用に構成された適切なDNSレコードを持つプライベートまたはパブリックドメイン名。有効なドメイン名または登録済みのドメイン名がない場合は、インストールを実行して、サーバーのIPアドレスを介してWebサイトにアクセスできます

Apache、PHP、およびMySQLをインストールします

最初のステップでは、Moodleプラットフォームのインストールと設定を開始する前に、まずrootアカウントまたはroot権限を持つアカウントでサーバーにログインし、以下のコマンドを発行してDebianシステムリポジトリとソフトウェアパッケージの更新を開始します。

apt update
apt upgrade

次に、システムソフトウェアを更新した後、次のコマンドを実行してDebianサーバーの名前を設定します。次の例に示すように、ホスト名変数を自分の設定に一致するように置き換えてください。

hostnamectl set-hostname www.myblog.com

次に、以下のコマンドを発行して、マシンのホスト名とhostsファイルを確認できます。

hostnamectl
cat /etc/hostname
hostname –s
hostname –f

カーネルの更新を適用し、ホスト名の変更を適用するには、以下のコマンドを発行してマシンを再起動します。

systemctl reboot

Moodle学習プラットフォームを展開するための最も重要なLAMPコンポーネントの1つは、ユーザー、セッション、連絡先、その他のデータなどのさまざまな構成を格納するためにWebアプリケーションによって使用されるRDBMSデータベースです。このチュートリアルでは、MySQLデータベースへのループバックアクセスを備えたMariaDBデータベースバックエンドを使用してMoodleCMSを構成します。これは、データベースにはローカルホストまたは127.0.0.1アドレスを介してのみアクセスできることを意味します。 MySQLデータベースへの外部接続はできません。 MariaDBデータベースサーバーとクライアントをDebian9サーバーにインストールするには、以下のコマンドを発行します。

apt install mariadb-server mariadb-client

MariaDBデータベースのDebianサーバーへのインストールが完了したら、 netstatを発行します。 次の例に示すようにコマンドを実行して、サービスが稼働しているかどうかを確認し、ローカルホストのポート3306で接続をリッスンします。

netstat –tlpn | grep mysql

netstatの場合 ネットワークユーティリティはデフォルトではDebianシステムにインストールされていません。以下のコマンドを実行してインストールしてください。

apt install net-tools

MySQLルートアカウントは、インストール時にDebian9で適切に保護されていません。ルートパスワードなしでデータベースにログインできます。ルートアカウントを保護するには、MySQLサーバーコンソールにログインし、次のコマンドを安全に実行します。

mysql -h localhost
Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1


Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed
MariaDB [mysql]> update user set plugin='' where user='root';
Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> exit
Bye

データベースルートアカウントを適切に適用した後、 mysql_secure_installationを実行します MySQLデータベースをさらに保護するために、データベースのインストール中にDebianストレッチリポジトリによって提供されるスクリプト。スクリプトは、MariaDBデータベースを保護するために設計された一連の質問をします。MySQLルートパスワードを変更する場合、匿名ユーザーを削除する場合、リモートルートログインを無効にし、テストデータベースを削除します。以下のコマンドを発行してスクリプトを実行し、 yesと入力してください。 以下のスクリプト出力の抜粋に示すように、すべての質問に:

mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!


In order to log into MariaDB to secure it, we'll need the current

password for the root user. If you've just installed MariaDB, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.


Enter current password for root (enter for none):

OK, successfully used password, moving on...


Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.


You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them. This is intended only for testing, and to make the installation

go a bit smoother. You should remove them before moving into a

production environment.


Remove anonymous users? [Y/n] y

... Success!


Normally, root should only be allowed to connect from 'localhost'. This

ensures that someone cannot guess at the root password from the network.


Disallow root login remotely? [Y/n] y

... Success!


By default, MariaDB comes with a database named 'test' that anyone can

access. This is also intended only for testing, and should be removed

before moving into a production environment.


Remove test database and access to it? [Y/n] y

- Dropping test database...

... Success!

- Removing privileges on test database...

... Success!


Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.


Reload privilege tables now? [Y/n] y

... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

最後に、MySQLデーモンを保護した後、データベースコンソールにログインし、rootアカウントのパスワードを入力しません。以下のコマンドの抜粋に示すように、rootアカウントにパスワードが指定されていない場合は、データベースへのアクセスを拒否する必要があります。

mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

root を指定すると、MySQLデータベースコンソールへのログインが許可されます。 コマンドサンプルに示されているパスワード:

mysql -h localhost -u root -p
Enter password:

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 15

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit

Bye

Moodle CMSは、ほとんどがPHPサーバーサイドプログラミング言語で書かれたWebベースのアプリケーションです。これまで、LAMPのMySQLデータベースコンポーネントのみをインストールしました。アプリケーションのPHPファイルスクリプトを実行するには、Apache HTTPサーバーなどのWebサーバーと、PHP処理ゲートウェイがシステムにインストールされて動作している必要があります。アプリケーションを正しく実行するために必要なすべてのPHPモジュールとともに、Apache WebサーバーとPHPインタープリターをインストールするには、サーバーコンソールで次のコマンドを発行します。

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-mysql php7.0-gd php7.0-opcache php7.0-json php7.0-mbstring php7.0-xml php7.0-ldap php7.0-cli php7.0-curl php7.0-ldap php7.0-zip php7.0-bcmath php-imagick php7.0-xmlrpc php7.0-soap php7.0-intl

インストールされているすべてのPHPモジュールがシステムで有効になっているかどうかを確認するには、次のコマンドを発行します

php7.0 –m

ApacheとPHPをインストールしたら、root権限で次のコマンドを発行して、Webサーバーが稼働し、ポート80でネットワーク接続をリッスンしているかどうかをテストします。

netstat –tlpn

netstatコマンドの出力から、Apache Webサーバーがポート80で着信ネットワーク接続をリッスンしていることがわかります。同じタスクで、 ssを使用することもできます。 コマンド。デフォルトでは、Debian9に自動的にインストールされます。

ss- tulpn

UFWファイアウォールアプリケーションがDebianサーバーにインストールされて有効になっている場合は、次のコマンドを発行して、HTTPトラフィックがファイアウォールを通過できるようにする新しいルールを追加する必要があります。

ufw allow WWW

または

ufw allow 80/tcp

iptablesの場合 システム管理者はrawルールを使用してDebianサーバーのファイアウォールルールを管理します。次のルールを追加して、ファイアウォールでポート80のインバウンドトラフィックを許可し、訪問者がオンラインアプリケーションを閲覧できるようにします。

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
systemctl enable netfilter-persistent.service

SSH経由でDebianサーバーをリモート管理している場合は、以下のルールを追加して、マシンへの着信SSH接続を許可してください。

iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent

以下のコマンドを発行して、Moodleアプリケーションが正しく実行するために必要な以下のApacheモジュールを有効にしてアクティブ化する必要がある場合もあります。

a2enmod rewrite
systemctl restart apache2

最後に、次の図に示すように、HTTPプロトコルを介してDebianマシンのIPアドレスまたはドメイン名またはサーバーのFQDNにアクセスして、ApacheWebサーバーのデフォルトのWebページをクライアントのブラウザーに表示できるかどうかをテストします。マシンのIPアドレスがわからない場合は、 ifconfigを実行してください またはip a サーバーのIPアドレスを明らかにするコマンド。

http://your_domain.tld

次のステップで、PHPのデフォルト構成ファイルを編集して、次のPHP変数が有効になり、PHPのタイムゾーンが有効になっていることを確認します。 設定は正しく構成されており、システムの地理的な場所と一致しています。 /etc/php/7.0/apache2/php.iniを開きます 編集用のファイルを作成し、次の行が次のように設定されていることを確認します。また、最初に、PHP構成ファイルのバックアップを作成します。

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

php.ini で次の変数を検索、編集、変更します 構成ファイル:

file_uploads = On
memory_limit = 128M
post_max_size = 80M
upload_max_filesize = 80M
default_charset = UTF-8
date.timezone = Europe/London
>

upload_max_file_sizeを増やします その場合は、大きなファイルの添付ファイルをサポートし、 date.timezoneを置き換えるのに適した変数 次のリンクhttp://php.net/manual/en/timezones.php

でPHPドキュメントによって提供されるタイムゾーンのリストを参照することにより、地理的な時間に応じて変更できます。

PHP7で使用可能なOPCacheプラグインを介してWebサイトページの読み込み速度を上げたい場合は、PHPインタープリター構成ファイルの下部の [opcache ] 以下に詳述するステートメント:

nano /etc/php/7.0/apache2/conf.d/10-opcache.ini
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

php.iniを閉じます 構成ファイルを作成し、PHP構成ファイルの終わりを確認して、以下のコマンドを発行してOPCache変数が正しく追加されているかどうかを確認します。

grep opcache /etc/php/7.0/apache2/conf.d/10-opcache.ini

上記で説明したすべての変更を行った後、次のコマンドを発行して、Apacheデーモンを再起動し、新しい変更を適用します。

systemctl restart apache2

クライアントのトラフィックを保護するHTTPSプロトコルを介してMoodleウェブインターフェースにアクセスするには、次のコマンドを発行して、ApacheウェブサーバーのSSLモジュールとSSLサイト構成ファイルを有効にします。

a2enmod ssl
a2ensite default-ssl.conf

次に、テキストエディタでApacheのデフォルトSSLサイト構成ファイルを開き、 DocumentRoot の後に次のコード行を追加して、URL書き換えルールを有効にします。 以下のサンプルに示すように、ディレクティブ:

nano /etc/apache2/sites-enabled/default-ssl.conf

SSLサイト構成ファイルの抜粋:

<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>

また、以下の抜粋に示すように、VirtualHost行に次の変更を加えます。

<VirtualHost *:443>

SSL Apacheファイルを閉じて、 /etc/apache2/sites-enabled/000-default.confを開きます。 編集用のファイルを作成し、SSL構成ファイルと同じURL書き換えルールを追加します。 DocumentRootの後にコード行を挿入します 以下の例に示すようなステートメント。

<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>

最後に、Apacheデーモンを再起動して、これまでに構成されたすべてのルールを適用し、HTTPプロトコルを介してドメインにアクセスします。インストール時にApacheによって自動的に発行された自己署名証明書のペアを使用しているため、証明書はブラウザによって信頼されていません。ブラウザにエラー警告が表示されます。

systemctl restart apache2

https://yourdomain.tld

信頼できない証明書を受け入れ、引き続きApacheのデフォルトのWebページにリダイレクトするには、警告を受け入れます。

UFWファイアウォールアプリケーションがHTTPSポートへの着信ネットワーク接続をブロックする場合は、次のコマンドを発行して、HTTPSトラフィックがファイアウォールを通過できるようにする新しいルールを追加する必要があります。

ufw allow ‘WWW Full’

または

ufw allow 443/tcp

iptablesの場合 は、Debianシステムをネットワークレベルで保護するためにインストールされるデフォルトのファイアウォールアプリケーションです。次のルールを追加して、訪問者がドメイン名を閲覧できるように、ファイアウォールでポート443のインバウンドトラフィックを許可します。

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent

最後に、すべてのサーバーPHP変数を表示するには、次のコマンドを実行してPHP情報ファイルを作成し、次のURLにあるブラウザーからPHP情報スクリプトファイルにアクセスして、PHPタイムゾーンが正しく構成されているかどうかを確認します。画像。 日付まで下にスクロールします PHPのタイムゾーン構成を確認するための設定。

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

https://domain.tld/info.php

次に、Moodleが情報を保存するために必要なデータベースを作成する前に、まずMariaDBサーバーにいくつかの変更を加え、適切な文字セットを設定する必要があります。 MariaDBクライアント構成ファイルを開き、 [client]の後に次の行を追加します 以下のサンプルに示すように、ディレクティブ:

nano /etc/mysql/mariadb.conf.d/50-client.cnf
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4

次に、mysql.cnfファイルを開き、[mysql]ステートメントの後に上記と同じ行を追加します。

nano /etc/mysql/conf.d/mysql.cnf

mysql.cnfファイルの抜粋:

default-character-set = utf8mb4

MariaDBサーバー構成ファイルを編集するために開き、 [mysqld]の後に以下の行を追加します MySQLエンジンが innodbであることを確認するステートメント バラクーダを使用 ファイル形式とutf8mb4文字セット。

nano /etc/mysql/mariadb.conf.d/50-server.cnf

50-server.cnfファイルの抜粋:

[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake

これまでに行ったすべての変更をデータベースに適用するには、MySQLデーモンを再起動し、次のコマンドを発行してサービスが実行されているかどうかを確認します。

systemctl restart mysql
systemctl status mysql

最後に、MariaDBデータベースコンソールにログインし、次のコマンドを発行して、アプリケーションデータベースの管理に使用されるユーザーとパスワードを使用してアプリケーション用のデータベースを作成します。それに応じて、データベース名、ユーザー、およびパスワードを必ず置き換えてください。

mysql –u root -p
Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1


Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE moodle_db;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on moodle_db.* to 'moodle_user'@'localhost' identified by 'password1234';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
Moodleをインストールする

Moodle CMSアプリケーションをインストールするためのすべてのシステム要件が満たされた後、https://download.moodle.org/releases/latest/のMoodle公式ダウンロードページにアクセスし、以下のコマンドを発行して、システム内の最新のzip圧縮アーカイブを取得します。

wget https://download.moodle.org/download.php/direct/stable34/moodle-latest-34.zip

zipアーカイブのダウンロードが完了したら、Moodle zipアーカイブファイルを現在の作業ディレクトリに抽出し、以下のコマンドを発行して、抽出したファイルを一覧表示します。また、Apache Webサーバーによってwebrootパスにインストールされたデフォルトのindex.htmlファイルを削除し、以前に作成したinfo.phpファイルも削除します。

unzip moodle-latest-34.zip
ls
rm /var/www/html/index.html
rm /var/www/html/info.php

次に、次のコマンドを発行して、Moodle抽出ディレクトリのすべてのコンテンツをWebサーバーのドキュメントルートパスにコピーします。また、次の隠しドットファイルをwebrootパスにコピーしてください。

cp -rf moodle/* /var/www/html/
cp -rf moodle/.eslint* /var/www/html/
cp -rf moodle/.gherkin-lintrc /var/www/html/
cp -rf moodle/.jshintrc /var/www/html/
cp -rf moodle/.s* /var/www/html/
cp -rf moodle/.travis.yml /var/www/html/

次に、サーバードキュメントルートの1レベル上にMoodleのデータディレクトリを作成し、以下のコマンドを実行して、ApacheランタイムユーザーにWebルートパスとmoodleデータディレクトリへの完全な書き込み権限を付与します。 lsを使用する / var / www /html/ディレクトリにあるアプリケーションのインストール済みファイルの権限を一覧表示するコマンド。

mkdir /var/www/moodledata
chown -R www-data:www-data /var/www/moodledata/
chown -R www-data:www-data /var/www/html/
ls -al /var/www/html/

それでは、Webインターフェースインストーラーを介してMoodleCMSのインストールを開始しましょう。ブラウザを開き、HTTPSプロトコルを介してサーバーのIPアドレスまたはドメイン名に移動します。最初のインストール画面で、インストール言語を選択し、[次へ]ボタンを押して続行します。

次の画面で、インストーラーはウェブサーバーアドレス、moodleディレクトリパスおよびmoodleデータディレクトリパスを確認するように求めます。最初の2つのパス変数をデフォルトのままにして、 / var / www / moodledataを追加します 下の画像に示すように、Moodleデータディレクトリパスの場合。 [次へ]ボタンを押して続行します。

次の画面で、データベースドライバーとしてMariaDB(native / madiadb)を選択し、[次へ]ボタンをクリックしてインストールプロセスを続行します。

次に、データベースホスト、名前、ユーザー、パスワードなどのデータベース設定を追加します。 Moodleデータベース用に以前に設定されたデータベース名とクレデンシャルを使用してください。

データベースホストはlocalhostに設定する必要があります。独自のデータベーステーブルプレフィックスを追加し、データベースポートとして3306を使用し、[次へ]ボタンをクリックしてこの手順を完了し、インストールプロセスを続行します。

次の画面で、Moodleのライセンス条件を読み、続行ボタンを押してライセンス条件を確認します。

次に、Moodleインストールスクリプトは、インストールプロセスを続行するためのすべての要件が満たされているかどうかを判断するために、一連のサーバーチェックを実行します。すべてのデータベースとPHP拡張機能が[OK]に設定されているかどうかを確認し、ページの一番下までスクロールして[続行]ボタンをクリックし、インストールプロセスを進めます。

次に、インストーラーが一連のモジュールのインストールを完了するまで待ち、[続行]ボタンをもう一度押して次のステップに進みます。

次のステップでは、Moodle管理者アカウントを追加し、このアカウントの強力なパスワードを選択して、名、名前、電子メール、都市、国、タイムゾーン、説明などのすべてのアカウント情報を入力します。終了したら、[プロファイルの更新]ボタンをクリックして、管理者アカウント情報を保存します。

次に、完全なサイト名を設定し、短いサイト名とフロントページの概要を追加し、下にスクロールして[変更を保存]ボタンをクリックして、インストールプロセスを完了します。

インストールプロセスが完了すると、Moodle管理ダッシュボードにリダイレクトされます。ここで、登録フォームを使用して、アプリケーションをMoodle.netポータルに登録できます。

Moodleフロントエンドページにアクセスするには、ブラウザを開き、HTTPSプロトコルを介してサーバーのIPアドレスまたはドメイン名に移動します。

最後に、Debianサーバーコンソールに戻り、 .htaccessを作成します。 以下のコマンドを発行して、Webサイトのドキュメントルートパスにあるファイル。

nano /var/www/html/.htaccess

.htaccessファイルに以下の行を追加して、ネイティブPHPサーバー設定を操作して独自のサーバーリソースと構成に一致させることができるようにします。

.htaccess ファイルの抜粋:

#PHP設定を変更する

php_value register_globals 1
php_value upload_max_filesize 100M
php_value post_max_size 100M
Options -Indexes

cronをインストール

メールの送信、データベースのクリーンアップ、フィードの更新、その他のタスクを行うMoodleメンテナンススクリプトを定期的に実行するには、以下のコマンドを発行して、10分ごとに実行する以下のcronジョブを追加します。

crontab -u www-data -e

次の行を追加して、cronジョブを保存します。

*/10 * * * * /usr/bin/php7.0 /var/www/html/admin/cli/cron.php  >/dev/null

おめでとう!これで、Debian9サーバーにMoodleCMSが正常にインストールおよび設定されました。 Moodleのドキュメントページは次のアドレスにあります:https://docs.moodle.org/23/en/Main_page


Debian
  1. Debian11にRedisサーバーをインストールする方法

  2. MySQL 8.0/5.7をDebian11/Debian10にインストールする方法

  3. Debian8にProFTPDをインストールする方法

  1. MySQLサーバーをDebian9にインストールする方法

  2. Debian9にOdoo12をインストールする方法

  3. Debian9にコックピットをインストールする

  1. Debian9にMinecraftサーバーをインストールする方法

  2. SuiteCRMをDebian9にインストールする方法

  3. Debian9のLAMPにWordpressをインストールする