XAMPP 上に Moodle をインストール(Ubuntu 上)

Moodle は,オープンソースの学習管理システム(LMS)である. コース,教材,小テスト,課題提出,成績管理などの機能を持つ. Moodle の動作には,Web サーバ(Apache)PHPデータベースサーバ(MariaDB, MySQL, PostgreSQL など)が必要である. このページでは,Ubuntu 上の XAMPP(Apache,MariaDB,PHP をまとめたパッケージ)に Moodle を配置して動作させる手順を示す.

前提と,バージョンの対応の確認

Ubuntu 上に XAMPP for Linux がインストール済みであることを前提とする.

Moodle は,リリースごとに PHP とデータベースサーバの必要バージョンが定められている. 例えば Moodle 4.5 (LTS) は PHP 8.1 以上,MariaDB 10.6.7 以上,MySQL 8.0 以上を必要とし, Moodle 5.0 は PHP 8.2 以上,MariaDB 10.11 以上,MySQL 8.4 以上を必要とする. 一方,XAMPP に同梱される PHP と MariaDB のバージョンは XAMPP のリリースにより異なる. そのため,インストールする Moodle のバージョンは,使用する XAMPP に同梱された PHP と MariaDB のバージョンに合わせて選ぶ. XAMPP に同梱されたバージョンは,次のコマンドで確認できる.

/opt/lampp/bin/php -v
/opt/lampp/bin/mysql --version

Moodle 各リリースの必要バージョンは,Moodle 公式のリリースノート (https://moodledev.io/general/releases)で確認できる. 同梱バージョンが必要要件を満たさない場合は,条件を満たす Moodle のバージョンを選ぶか, XAMPP を使わずに Ubuntu のパッケージ(apache2, php, mariadb-server)で環境を構築する.

かつて Bitnami が提供していた XAMPP 用の Moodle アドオンモジュールは配布が終了している. このページでは,Moodle の配布ファイルを手作業で配置する方法を示す.

XAMPP の起動と,PHP の設定

  1. 端末を開く

    Ubuntu で端末を開くには,「Ctrl + Alt + T」を押す.

  2. XAMPP を起動する

    端末で,次のコマンドを実行する.Apache と MariaDB が起動する.

    sudo /opt/lampp/lampp start
    
  3. PHP の設定を確認する

    Moodle は,PHP の設定項目 max_input_vars が 5000 以上であることを必要とする. 端末で,次のコマンドを実行して /opt/lampp/etc/php.ini を編集する.

    sudo nano /opt/lampp/etc/php.ini
    

    次の行に設定する(行が無い場合は追加する).

    max_input_vars = 5000
    

    編集後,端末で,次のコマンドを実行して Apache を再起動する.

    sudo /opt/lampp/lampp restart
    

Moodle 用データベースの作成

  1. MariaDB に接続する

    端末で,次のコマンドを実行する.

    sudo /opt/lampp/bin/mysql -u root
    
  2. データベースとユーザを作成する

    Moodle は,文字セット utf8mb4 のデータベースを必要とする. 次の SQL を実行する.パスワードは各自で設定する.

    CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY '設定するパスワード';
    GRANT ALL PRIVILEGES ON moodle.* TO 'moodleuser'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;
    

Moodle の配置と,データディレクトリの作成

  1. Moodle をダウンロードする

    https://download.moodle.org/ から,使用する PHP と MariaDB のバージョンに対応した Moodle のアーカイブ(tgz 形式)をダウンロードする.

  2. Moodle を Web サーバの公開ディレクトリに展開する

    端末で,次のコマンドを実行する(ファイル名はダウンロードしたものに合わせる).

    cd ~/Downloads
    sudo tar zxvf moodle-latest-*.tgz -C /opt/lampp/htdocs/
    

    展開により /opt/lampp/htdocs/moodle が作られる.

  3. データディレクトリ(moodledata)を作成する

    Moodle は,アップロードされたファイルなどを保存するディレクトリを必要とする. このディレクトリは,Web で公開されるディレクトリ(htdocs)の外に置く. 端末で,次のコマンドを実行する.

    sudo mkdir -p /opt/moodledata
    sudo chown -R daemon:daemon /opt/moodledata
    sudo chmod -R 0770 /opt/moodledata
    

    XAMPP の Apache は daemon ユーザで動作するため,所有者を daemon に設定している.

Web インストーラの実行

  1. Web ブラウザでインストーラを開く

    Web ブラウザで http://localhost/moodle を開く.

  2. 言語,ディレクトリ,データベースを設定する

    インストーラの画面で,次を設定する.

    データディレクトリ: /opt/moodledata
    データベースドライバ: MariaDB (native/mariadb) または MySQL (native/mysqli)
    データベースホスト: localhost
    データベース名: moodle
    データベースユーザ: moodleuser
    パスワード: 上で設定したパスワード
    
  3. サーバ環境チェックの結果を確認する

    インストーラは,PHP のバージョン,PHP 拡張モジュール,データベースのバージョンを検査する. 「必須(must be fixed)」と表示された項目がある場合,その項目を解消しないとインストールは完了しない. PHP 拡張モジュールが不足している場合は /opt/lampp/etc/php.ini で該当モジュールを有効にし, Apache を再起動してから再度チェックする.

  4. データベーステーブルの作成と,管理ユーザの設定

    チェックを通過すると,データベースのテーブル作成が始まる. 続いて,管理ユーザのユーザ名,パスワード,メールアドレス,およびサイト名を設定する.

Moodle を起動してみる Launch Moodle

Web ブラウザで http://localhost/moodle を開く. インストール時に設定した管理ユーザのユーザ名とパスワードでログインできる.

日本語化

管理ユーザでログインし,次のように操作する.

  1. 言語パックのインストール

    「Site administration」→「Language」→「Language packs」と操作し, 一覧から「日本語 (ja)」を選び,インストールする.

  2. 既定の言語の設定

    「Site administration」→「Language」→「Language settings」と操作し, 「Default language」に「日本語 (ja)」を設定して保存する.

アンインストール

Moodle のプログラム,データディレクトリ,データベースの 3 つを削除する.

  1. 端末を開く

    Ubuntu で端末を開くには,「Ctrl + Alt + T」を押す.

  2. プログラムとデータディレクトリの削除

    端末で,次のコマンドを実行する. データディレクトリを削除すると,アップロードされたファイルは復元できないため, 必要なデータは事前にバックアップする.

    sudo rm -rf /opt/lampp/htdocs/moodle
    sudo rm -rf /opt/moodledata
    
  3. データベースの削除

    端末で,次のコマンドを実行する.

    sudo /opt/lampp/bin/mysql -u root
    

    次の SQL を実行する.

    DROP DATABASE moodle;
    DROP USER 'moodleuser'@'localhost';
    EXIT;