Moodleインストール · 4 min read · Sep 24, 2025
Debian 9にMoodle eラーニングプラットフォームをインストールする

Moodleは、PHPで書かれた柔軟で強力な無料のオープンソースのコース管理システムおよびeラーニングプラットフォームであり、通常はApache/Nginxウェブサーバーの下でLinuxにデプロイされ、PHPおよびMySQL/MariaDBデータベース管理システムと共に使用されます。これはLAMPまたはLEMPスタックとして知られています。
このチュートリアルでは、Debian 9リリースに最新バージョンのMoodleをインストールおよび構成する方法を説明し、あなたの施設でeラーニングプラットフォームを作成します。
Moodleプラットフォームは、教育者やトレーナーがコースデータを保存し、学生、成績、オンラインコースを追跡するために使用できる直感的なウェブインターフェースを提供します。世界中の主要な大学のほとんどは、学生や教師の教育活動を容易にするためにMoodle eラーニングプラットフォームを導入しています。
要件
Moodleを正常にインストールおよびデプロイするには、サーバーが以下の要件を満たす必要があります。
- 最小限のソフトウェア要件がインストールされたDebian 9サーバー(ベアメタルサーバーまたは仮想プライベートサーバー)
- コンソールまたはSSHを介してrootアカウントへの直接アクセス、またはsudoユーティリティを介して取得したroot権限を持つアカウントへのリモートまたは直接アクセス
- 静的IPアドレスで構成されたネットワークインターフェースカード
- Moodleのメール登録、通知、または他のタイプの機能を使用するためには、IMAP、POP3、およびSMTPサービスへのアクセスを持つメールサーバーを適切に設定する必要があります。
- デプロイに応じたプライベートまたはパブリックドメイン名、ウェブサービス用に適切に構成されたDNSレコード。正当なまたは登録されたドメイン名がない場合は、インストールを実行し、サーバーのIPアドレスを介してウェブサイトにアクセスできます。
Apache、PHP、およびMySQLのインストール
最初のステップとして、Moodleプラットフォームのインストールと構成を開始する前に、まずrootアカウントまたはroot権限を持つアカウントでサーバーにログインし、以下のコマンドを発行してDebianシステムのリポジトリとソフトウェアパッケージを更新します。
apt updateapt upgrade次に、システムソフトウェアを更新した後、以下のコマンドを実行してDebianサーバーの名前を構成します。ホスト名変数を自分の設定に合わせて置き換えることを確認してください。以下の例に示すように。
hostnamectl set-hostname www.myblog.com次に、以下のコマンドを発行してマシンのホスト名とhostsファイルを確認できます。
hostnamectlcat /etc/hostnamehostname –shostname –fカーネルの更新を適用し、ホスト名の変更を適用するために、以下のコマンドを発行してマシンを再起動します。
systemctl rebootMoodle学習プラットフォームをデプロイするための最も重要なLAMPコンポーネントの1つは、異なる構成(ユーザー、セッション、連絡先、その他のデータ)を保存するためにウェブアプリケーションによって使用されるRDBMSデータベースです。このチュートリアルでは、MySQLデータベースへのループバックアクセスを持つMariaDBデータベースバックエンドでMoodle CMSを構成します。これは、データベースにlocalhostまたは127.0.0.1アドレスを介してのみアクセスできることを意味します。MySQLデータベースへの外部接続は行えません。Debian 9サーバーにMariaDBデータベースサーバーとクライアントをインストールするために、以下のコマンドを発行します。
apt install mariadb-server mariadb-clientMariaDBデータベースのインストールがDebianサーバーで完了した後、以下の例に示すようにnetstatコマンドを発行して、サービスが起動しており、localhostのポート3306で接続をリッスンしているかどうかを確認します。
netstat –tlpn | grep mysqlもしnetstatネットワークユーティリティがDebianシステムにデフォルトでインストールされていない場合は、以下のコマンドを実行してインストールします。
apt install net-toolsMySQLのrootアカウントは、インストール時にDebian 9で適切に保護されていません。rootパスワードなしでデータベースにログインできます。rootアカウントを保護するために、MySQLサーバーコンソールにログインし、以下のコマンドを実行して保護します。
mysql -h localhostMariaDBモニターへようこそ。コマンドは;または\gで終了します。
あなたのMariaDB接続IDは2です
サーバーバージョン: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
著作権 (c) 2000, 2017, Oracle, MariaDB Corporation Abおよび他の人々。
'help;'または'\h'を入力してヘルプを表示します。'\c'を入力して現在の入力文をクリアします。MariaDB [(none)]> use mysql;テーブルおよびカラム名の補完のための情報を読み込んでいます
この機能をオフにすると、-Aでより迅速なスタートアップが得られます
データベースが変更されましたMariaDB [mysql]> update user set plugin='' where user='root';クエリOK、1行が影響を受けました (0.00秒)
一致した行: 1 変更された行: 1 警告: 0MariaDB [mysql]> flush privileges;クエリOK、0行が影響を受けました (0.00秒)MariaDB [mysql]> exitさようならデータベースrootアカウントを適切に強化した後、データベースのセキュリティをさらに強化するために、Debianストレッチリポジトリによって提供されるmysql_secure_installationスクリプトを実行します。このスクリプトは、MariaDBデータベースを保護するために設計された一連の質問を行います: MySQL rootパスワードを変更するか、匿名ユーザーを削除するか、リモートrootログインを無効にするか、テストデータベースを削除するか。以下のコマンドを発行してスクリプトを実行し、すべての質問にyesと入力することを確認してください。以下のスクリプト出力の抜粋のように。
mysql_secure_installation注意: このスクリプトのすべての部分を実行することは、すべてのMariaDB
本番環境での使用を推奨します! 各ステップを注意深くお読みください!
MariaDBにログインして保護するには、現在の
rootユーザーのパスワードが必要です。MariaDBをインストールしたばかりで、
rootパスワードをまだ設定していない場合、パスワードは空白になります。
ここでEnterを押してください。
rootの現在のパスワードを入力してください (noneの場合はEnter):
OK、パスワードが正常に使用され、次に進みます...
rootパスワードを設定することで、誰も適切な認証なしにMariaDB
rootユーザーにログインできないようにします。
すでにrootパスワードが設定されているので、安全に'n'と答えることができます。
rootパスワードを変更しますか? [Y/n] y
新しいパスワード:
新しいパスワードを再入力:
パスワードが正常に更新されました!
特権テーブルを再読み込みしています..
... 成功!
デフォルトでは、MariaDBのインストールには匿名ユーザーが含まれており、誰でも
ユーザーアカウントを作成せずにMariaDBにログインできます。これはテスト用のみであり、インストールを
少しスムーズにするためのものです。生産環境に移行する前に、これらを削除する必要があります。
匿名ユーザーを削除しますか? [Y/n] y
... 成功!
通常、rootは'localhost'からのみ接続を許可されるべきです。これにより、誰かがネットワークからrootパスワードを推測できないようにします。
リモートでのrootログインを無効にしますか? [Y/n] y
... 成功!
デフォルトでは、MariaDBには誰でもアクセスできる'test'という名前のデータベースが含まれています。これはテスト用のみであり、生産環境に移行する前に削除する必要があります。
テストデータベースとそのアクセスを削除しますか? [Y/n] y
- テストデータベースを削除中...
... 成功!
- テストデータベースの特権を削除中...
... 成功!
特権テーブルを再読み込みすると、これまでに行ったすべての変更が即座に有効になります。
特権テーブルを今すぐ再読み込みしますか? [Y/n] y
... 成功!
クリーンアップ中...
すべて完了! 上記のすべてのステップを完了した場合、MariaDBのインストールは現在安全であるはずです。
MariaDBをご利用いただきありがとうございます!最後に、MySQLデーモンのセキュリティを強化した後、データベースコンソールにログインし、rootアカウントにパスワードを提供せずにログインします。rootアカウントにパスワードが提供されていない場合、データベースへのアクセスは拒否されるはずです。以下のコマンド抜粋に示すように。
mysql -h localhost -u rootエラー 1045 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワードを使用: NO)
MySQLデータベースコンソールにログインするには、rootパスワードを提供する必要があります。以下のコマンドサンプルのように。
mysql -h localhost -u root -pパスワードを入力してください:
MariaDBモニターへようこそ。コマンドは;または\gで終了します。
あなたのMariaDB接続IDは15です
サーバーバージョン: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
著作権 (c) 2000, 2017, Oracle, MariaDB Corporation Abおよび他の人々。
'help;'または'\h'を入力してヘルプを表示します。'\c'を入力して現在の入力文をクリアします。
MariaDB [(none)]> exit
さようならMoodle CMSは、主にPHPサーバーサイドプログラミング言語で書かれたウェブベースのアプリケーションです。これまでにLAMPのMySQLデータベースコンポーネントのみをインストールしました。アプリケーションのPHPファイルスクリプトを実行するには、Apache HTTPサーバーなどのウェブサーバーと、アプリケーションが正常に動作するために必要なすべてのPHPモジュールを備えたPHP処理ゲートウェイをインストールして稼働させる必要があります。ApacheウェブサーバーとPHPインタープリターを、アプリケーションが正常に動作するために必要なすべての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 –mApacheとPHPがインストールされた後、以下のコマンドを発行して、ウェブサーバーが稼働しており、ポート80でネットワーク接続をリッスンしているかどうかをテストします。
netstat –tlpnnetstatコマンドの出力から、Apacheウェブサーバーがポート80での受信ネットワーク接続をリッスンしていることがわかります。同じタスクに対して、Debian 9にデフォルトで自動的にインストールされるssコマンドを使用することもできます。
ss- tulpnDebianサーバーにUFWファイアウォールアプリケーションがインストールされ、有効になっている場合は、以下のコマンドを発行してHTTPトラフィックがファイアウォールを通過できるように新しいルールを追加する必要があります。
ufw allow WWWまたは
ufw allow 80/tcpシステム管理者がDebianサーバーでファイアウォールルールを管理するためにiptables生のルールを使用している場合は、訪問者がオンラインアプリケーションを閲覧できるように、ファイアウォールでポート80の受信トラフィックを許可するために以下のルールを追加します。
apt-get install -y iptables-persistentiptables -I INPUT -p tcp --destination-port 80 -j ACCEPTnetfilter-persistent savesystemctl restart netfilter-persistentsystemctl status netfilter-persistentsystemctl enable netfilter-persistent.serviceSSHを介してDebianサーバーをリモート管理している場合は、以下のルールを追加して、マシンへの受信SSH接続を許可する必要があります。
iptables -I INPUT -p tcp --destination-port 22 -j ACCEPTnetfilter-persistent savesystemctl restart netfilter-persistentMoodleアプリケーションが正常に動作するために必要な以下のApacheモジュールを有効にし、アクティブにする必要があります。以下のコマンドを発行します。
a2enmod rewritesystemctl restart apache2最後に、クライアントのブラウザでApacheウェブサーバーのデフォルトウェブページが表示できるかどうかをテストします。あなたのDebianマシンのIPアドレスまたはドメイン名またはサーバーのFQDNをHTTPプロトコルを介して訪問します。以下の画像に示すように。もしマシンのIPアドレスがわからない場合は、ifconfigまたはip aコマンドを実行してサーバーのIPアドレスを表示します。

次のステップでは、PHPのデフォルト設定ファイルを編集して、以下のPHP変数が有効になっていることを確認し、PHPのtimezone設定が正しく構成され、システムの地理的位置に一致するようにします。/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変数をあなたの地理的時間に応じて置き換えます。PHPドキュメントで提供されているタイムゾーンのリストを参照して、以下のリンクで確認してください http://php.net/manual/en/timezones.php
ウェブサイトのページの読み込み速度をOPCacheプラグインを介して向上させたい場合は、以下のように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=1php.ini設定ファイルを閉じ、以下のコマンドを発行してOPCache変数が正しく追加されたかどうかを確認します。
grep opcache /etc/php/7.0/apache2/conf.d/10-opcache.ini上記のすべての変更を行った後、以下のコマンドを発行してApacheデーモンを再起動し、新しい変更を適用します。
systemctl restart apache2HTTPSプロトコルを介してMoodleウェブインターフェースにアクセスするために、クライアントのトラフィックを保護するために、以下のコマンドを発行してApacheウェブサーバーのSSLモジュールとSSLサイト設定ファイルを有効にします。
a2enmod ssla2ensite default-ssl.conf次に、テキストエディタでApacheデフォルトSSLサイト設定ファイルを開き、以下のコード行をDocumentRootディレクティブの後に追加してURLリライトルールを有効にします。以下のサンプルのように。
nano /etc/apache2/sites-enabled/default-ssl.conf
SSLサイト設定ファイルの抜粋:
Options +FollowSymlinks
AllowOverride All
Require all granted
また、以下の抜粋のようにVirtualHost行を次のように変更します。
SSL Apacheファイルを閉じ、/etc/apache2/sites-enabled/000-default.confファイルを編集のために開き、SSL設定ファイルと同じURLリライトルールを追加します。以下の例のようにDocumentRootステートメントの後にコード行を挿入します。
Options +FollowSymlinks
AllowOverride All
Require all granted
最後に、これまでに設定したすべてのルールを適用するためにApacheデーモンを再起動し、HTTPプロトコルを介してドメインを訪問します。Apacheがインストール時に発行した自動的に自己署名された証明書ペアを使用しているため、証明書はブラウザによって信頼されず、エラー警告がブラウザに表示されるはずです。
systemctl restart apache2警告を受け入れて、信頼されていない証明書を受け入れ、Apacheデフォルトウェブページにリダイレクトされ続けます。
UFWファイアウォールアプリケーションがHTTPSポートへの受信ネットワーク接続をブロックしている場合は、以下のコマンドを発行してHTTPSトラフィックがファイアウォールを通過できるように新しいルールを追加する必要があります。
ufw allow ‘WWW Full’または
ufw allow 443/tcpiptablesがネットワークレベルでDebianシステムを保護するためにインストールされたデフォルトのファイアウォールアプリケーションである場合は、訪問者があなたのドメイン名を閲覧できるように、ファイアウォールでポート443の受信トラフィックを許可するために以下のルールを追加します。
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPTnetfilter-persistent savesystemctl restart netfilter-persistentsystemctl status netfilter-persistent最後に、すべてのサーバーPHP変数を表示するために、以下のコマンドを実行してPHP情報ファイルを作成し、ブラウザから以下のURLでPHP情報スクリプトファイルにアクセスしてPHPタイムゾーンが正しく構成されているかどうかを確認します。以下の画像に示すように、date設定までスクロールします。
echo ''| tee /var/www/html/info.php次に、Moodleが情報を保存するために必要なデータベースを作成する前に、まずMariaDBサーバーにいくつかの変更を加え、適切な文字セットを設定する必要があります。MariaDBクライアント設定ファイルを開き、以下のサンプルのように[client]ディレクティブの後に以下の行を追加します。
nano /etc/mysql/mariadb.conf.d/50-client.cnf[client]
# デフォルトはLatin1、UTF-8が必要な場合はこれを設定します (サーバーセクションでも)
default-character-set = utf8mb4次に、mysql.cnfファイルを開き、[mysql]ステートメントの後に上記と同じ行を追加します。
nano /etc/mysql/conf.d/mysql.cnfmysql.cnfファイルの抜粋:
default-character-set = utf8mb4MariaDBサーバー設定ファイルを編集のために開き、以下の行を[mysqld]ステートメントの後に追加して、MySQLエンジンinnodbがBarracudaファイル形式とutf8mb4文字セットを使用するようにします。
nano /etc/mysql/mariadb.conf.d/50-server.cnf50-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 mysqlsystemctl status mysql最後に、MariaDBデータベースコンソールにログインし、アプリケーション用のデータベースを作成し、アプリケーションデータベースを管理するために使用されるユーザーとパスワードを設定します。以下のコマンドを発行します。データベース名、ユーザー、パスワードを適宜置き換えてください。
mysql –u root -pMariaDBモニターへようこそ。コマンドは;または\gで終了します。
あなたのMariaDB接続IDは2です
サーバーバージョン: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
著作権 (c) 2000, 2017, Oracle, MariaDB Corporation Abおよび他の人々。
'help;'または'\h'を入力してヘルプを表示します。'\c'を入力して現在の入力文をクリアします。MariaDB [(none)]> CREATE DATABASE moodle_db;クエリOK、1行が影響を受けました (0.00秒)**
MariaDB [(none)]> grant all privileges on moodle_db.* to 'moodle_user'@'localhost' identified by 'password1234';クエリOK、0行が影響を受けました (0.00秒)MariaDB [(none)]> flush privileges;クエリOK、0行が影響を受けました (0.00秒)MariaDB [(none)]> exitさようならMoodleのインストール
Moodle CMSアプリケーションをインストールするためのすべてのシステム要件が満たされた後、公式のMoodleダウンロードページ https://download.moodle.org/releases/latest/ にアクセスし、以下のコマンドを発行して最新のzip圧縮アーカイブをシステムに取得します。
wget https://download.moodle.org/download.php/direct/stable34/moodle-latest-34.zipzipアーカイブのダウンロードが完了したら、Moodle zipアーカイブファイルを現在の作業ディレクトリに抽出し、以下のコマンドを発行して抽出されたファイルをリストします。また、Apacheウェブサーバーによってインストールされたデフォルトのindex.htmlファイルをウェブルートパスから削除し、以前に作成したinfo.phpファイルも削除します。
unzip moodle-latest-34.ziplsrm /var/www/html/index.htmlrm /var/www/html/info.php次に、Moodleの抽出ディレクトリのすべてのコンテンツをウェブサーバーのドキュメントルートパスにコピーするために、以下のコマンドを発行します。また、以下の隠しドットファイルをウェブルートパスにコピーすることを確認してください。
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/次に、Moodle用のデータディレクトリをサーバーのドキュメントルートの1つ上に作成し、以下のコマンドを実行してApacheランタイムユーザーにウェブルートパスとMoodleデータディレクトリへのフル書き込み権限を付与します。lsコマンドを使用して、/var/www/html/ディレクトリにインストールされたファイルの権限をリストします。
mkdir /var/www/moodledatachown -R www-data:www-data /var/www/moodledata/chown -R www-data:www-data /var/www/html/ls -al /var/www/html/これで、ウェブインターフェースインストーラーを介してMoodle CMSのインストールを開始します。ブラウザを開き、HTTPSプロトコルを介してサーバーのIPアドレスまたはドメイン名に移動します。最初のインストール画面で、インストール言語を選択し、次のボタンを押して続行します。

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

次の画面では、データベースドライバーとしてMariaDB(ネイティブ/mariadb)を選択し、次のボタンを押してインストールプロセスを続行します。

次に、データベース設定(データベースホスト、名前、ユーザー、パスワード)を追加します。以前に設定したMoodleデータベースのデータベース名と資格情報を使用します。
データベースホストはlocalhostに設定し、独自のデータベーステーブルプレフィックスを追加し、データベースポートには3306を使用し、次のボタンを押してこのステップを完了し、インストールプロセスを続行します。

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

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

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

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

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

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

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

最後に、Debianサーバーコンソールに戻り、ウェブサイトのドキュメントルートパスに配置される.htaccessファイルを作成するために、以下のコマンドを発行します。
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 -Indexescronのインストール
定期的にMoodleメンテナンススクリプトを実行し、メールを送信し、データベースをクリーンアップし、フィードを更新するなどのタスクを実行するために、以下のコマンドを発行して10分ごとに実行されるcronジョブを追加します。
crontab -u www-data -e以下の行を追加してcronジョブを保存します。
*/10 * * * * /usr/bin/php7.0 /var/www/html/admin/cli/cron.php >/dev/nullおめでとうございます!あなたはDebian 9サーバーにMoodle CMSを正常にインストールおよび構成しました。Moodleのドキュメントページは以下のアドレスで見つけることができます: https://docs.moodle.org/23/en/Main_page
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。