Docker 入門
Moodle サイトを構築する
Docker で Moodle サイトを構築する
はじめに
Moodle はオープンソースの学習プラットフォームです.世界の230以上の国で,15万以上のサイトで運用されている代表的な LMS です.ここでは,Docker を用いて Moodle サイトを構築し,管理者アカウントでログインするまでの作業を行ってみます.なお,実際に本番環境で運用するには様々な設定が必要になることに注意してください.
インストール(ただし,バージョン4)についての日本語での解説はここ (https://docs.moodle.org/4x/ja/Moodleのインストール)が参考になります.また,バージョン5についてのインストール解説は Installation quick guide (https://docs.moodle.org/501/en/Installation_quick_guide) が参考になります.
docker-compose.yml の準備
まず,任意の名前のディレクトリ(フォルダ)を作成し,その中に全体の設計図である docker-compose.yml ファイルを次のとおり準備します.今回は moodle_apache,moodle_mysql という2個のサービス(それぞれのコンテナ名は php-apache-moodle,mysql9-moodle)で構成します.ここで,moodle_apache サービスは PHP を設定した Apache Web サーバです.一方で,moodle_mysql はここで説明したのと同じように日本語に対応するよう設定した MySQL データベースサーバです.
docker-compose.yml
services:
moodle_apache:
build:
context: .
dockerfile: ./php/Dockerfile
container_name: php-apache-moodle
ports:
- "80:80"
volumes:
- ./web/moodle:/var/www/html
- ./web/logs:/var/log/apache2
- moodledata:/moodledata
- ./php/php.ini:/usr/local/etc/php/php.ini
- ./php/000-default.conf:/etc/apache2/sites-available/000-default.conf
moodle_mysql:
build:
context: .
dockerfile: ./mysql/Dockerfile
args:
IMAGE: ${MYSQL_IMAGE}
container_name: mysql9-moodle
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- mysqlvolume:/var/lib/mysql
- ./mysql/script:/docker-entrypoint-initdb.d
ports:
- 3306:3306
volumes:
moodledata:
mysqlvolume:
また,同じディレクトリの中に次のとおり必要となるサブディレクトリやファイルを作成します.なお,Moodle のコードは web ディレクトリに後のステップでダウンロードすることにします.
% tree -F -a ⏎
./
├── .env
├── .env.example
├── .gitignore
├── docker-compose.yml
├── mysql/
│ ├── Dockerfile
│ ├── my.cnf
│ └── script/
│ └── init-db.sql
├── php/
│ ├── 000-default.conf
│ ├── Dockerfile
│ └── php.ini
├── Readme.md
└── web/
├── .gitignore
└── logs/
└── .gitignore
6 directories, 13 files
MySQL の設定
次に,MySQL の設定を行います.Docker イメージの設計図となる Dockerfile を mysql ディレクトリに設置します.
mysql/Dockerfile
ARG IMAGE
FROM ${IMAGE}
RUN microdnf install -y glibc-locale-source glibc-langpack-en && \
microdnf clean all
RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG="ja_JP.UTF-8" \
LANGUAGE="ja_JP:ja" \
LC_ALL="ja_JP.UTF-8"
MySQL のベースイメージの指定は .env で行います.このとき,Windows では mysql:9.4 を,Apple Silicon を搭載した macOS では arm64v/mysql:9.4 を指定すると良いでしょう.また,MySQL の管理者 (rootユーザ) 用パスワード,ユーザ名とパスワードをここで指定します.このとき,複雑なパスワードを設定するようにしてください.また .env には機密情報を記載することになるので,.env は Git のリポジトリに含めないようにし,.env.example をサンプルファイルとして準備しておくと良いでしょう.
.env (.env.example)
# MYSQL_IMAGE=mysql:9.4
MYSQL_IMAGE=arm64v8/mysql:9.4
MYSQL_ROOT_PASSWORD=password
MYSQL_USER=docker-user
MYSQL_PASSWORD=secret
この .env を Git リポジトリに含めないようにするために .gitignore を作成します.なお,macOS を利用している場合は .DS_Store も設定しておくと良いでしょう.
.env
.DS_Store
さらに,mysql ディレクトリに my.cnf を作成し,文字コードの設定を行います.
mysql/my.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
[client]
default-character-set=utf8mb4
MySQL のイメージ作成時に Moodle 用のデータベースを生成するためのスクリプトを設置します.このとき,任意のデータベース名でよいですが,今回は moodleDB とします.また .env に記載されたユーザ名と同じユーザ名を指定しなければならないことに注意してください.これによって指定したユーザに moodleDB へのアクセス権が付与されます.
mysql/script/init-db.sql
CREATE DATABASE IF NOT EXISTS `moodleDB`;
GRANT ALL PRIVILEGES ON `moodleDB`.* TO 'docker-user';
PHP-Apache の設定
つづいて,PHP-Apache の設定を行います.ベースイメージは php:8.2-apache を利用しますが,様々な設定を行った Docker イメージを作成するために Dockerfile を準備します.なお,Docker イメージのルートディレクトリに /moodledata ディレクトリを作成します.このディレクトリには,サイトにアップロードされたすべてのファイル,一時データ,キャッシュ,セッションデータなどすべてのファイルが保存されます.Web サーバはこのディレクトリに書き込める必要がありますが,一方で,Web経由で直接アクセスできないようにしなければなりません.したがって,ルート(または任意の場所)に設置したこのディレクトリの所有者を Apache ユーザである www-data に変更しています.そのコマンドが chown (CHange OWNer) です.詳細はこちらを参照してください.
php/Dockerfile
FROM php:8.2-apache
RUN apt-get update && \
apt-get install -y --no-install-recommends \
libzip-dev \
libicu-dev \
libxml2-dev \
libjpeg-dev \
libpng-dev \
libfreetype6-dev \
libsodium-dev && \
docker-php-ext-configure gd --with-freetype --with-jpeg && \
docker-php-ext-install \
exif \
zip \
mysqli \
pdo_mysql \
intl \
gd \
soap \
opcache && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# Apache の rewrite を有効化
RUN a2enmod rewrite
RUN mkdir /moodledata && chown www-data:www-data /moodledata
RUN echo "cgi.fix_pathinfo=1" > /usr/local/etc/php/conf.d/docker-php-ext-pathinfo.ini
# 公式 Composer イメージから composer バイナリをコピー
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
# 動作確認(任意)
# RUN composer --version
次の php.ini は Moodle の動作に必要な設定を記述しています.この max_input_vars はフォームから POST できる変数の上限を意味しています.デフォルトでは 1000 ですが,Moodle では 5000 に変更する必要があります.また,ファイルアップロードの最大サイズはデフォルトで2MBですが,これを任意の値(今回は100MB)に変更します.
php/php.ini
max_input_vars = 5000
upload_max_filesize = 100M
さらに Apache の設定も行います.ここで,docker-compose.yml の設定にあるとおり,web/moodle に Moodle のソースコードを設置します.しかし,Moodle ソースコードの中で Web ページとして公開すべきフォルダは public フォルダ以下だけです.したがって,次の3行目のとおり DocumentRoot を変更します.また,8-13行目の内容を追加します.
php/000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/public>
AllowOverride All
Require all granted
AcceptPathInfo On
Options -Indexes -MultiViews
</Directory>
</VirtualHost>
Apache へのアクセスログは web/logs に出力するように設定しています.アクセスログは Git に登録する必要がないので,.gitignore を作成しておきます.
web/logs/.gitignore
*
また,Moodle のソースコードも web ディレクトリに設置することにします.Moodle のコードはそれ自体が Git で管理されているので Docker の Git リポジトリには含めないようにします.
web/.gitignore
moodle
Moodle のダウンロード
続いて Moodle のソースコードをダウンロードします.今回はInstallation quick guideで説明されている 5.1 Stable branch を利用します.具体的には web ディレクトリに移動して git clone コマンドでソースコードをダウンロードします.
cd web git clone -b MOODLE_501_STABLE git://git.moodle.org/moodle.git cd ..
実際にコマンドを実行すると次のような表示になります.展開後には全体で 1GB 近くなる (959MB) データがダウンロードされることに注意して下さい.
% cd web ⏎ % git clone -b MOODLE_501_STABLE git://git.moodle.org/moodle.git ⏎ Cloning into 'moodle'... remote: Enumerating objects: 1624156, done. remote: Counting objects: 100% (1624156/1624156), done. remote: Compressing objects: 100% (346082/346082), done. remote: Total 1624156 (delta 1225722), reused 1623967 (delta 1225533), pack-reused 0 Receiving objects: 100% (1624156/1624156), 543.66 MiB | 8.66 MiB/s, done. Resolving deltas: 100% (1225722/1225722), done. Updating files: 100% (29271/29271), done. % cd .. ⏎ %
Docker イメージのビルドとコンテナの起動
すべてのファイルの準備ができたので Docker のイメージをビルドしてコンテナを起動します.なお,初めての実行時であれば自動的にビルドが行われるので,--build オプションは省略可能です.
% docker compose up -d --build ⏎
[+] Running 0/0
[+] Running 0/2le_mysql Building 0.1s
⠹ Service moodle_mysql Building 0.3s
[+] Building 79.7s (19/19) FINISHED docker:desktop-linux
=> [moodle_mysql internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 313B 0.0s
=> WARN: InvalidDefaultArgInFrom: Default value for ARG ${IMAGE} results in e 0.0s
=> [moodle_apache internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 760B 0.0s
=> [moodle_apache internal] load metadata for docker.io/library/php:8.2-apach 0.0s
=> [moodle_apache internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [moodle_mysql internal] load metadata for docker.io/arm64v8/mysql:9.4 3.7s
=> CACHED [moodle_apache 1/5] FROM docker.io/library/php:8.2-apache 0.0s
=> [moodle_apache 2/5] RUN apt-get update && apt-get install -y --no-ins 79.0s
=> [moodle_mysql auth] arm64v8/mysql:pull token for registry-1.docker.io 0.0s
=> [moodle_mysql internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [moodle_mysql 1/3] FROM docker.io/arm64v8/mysql:9.4@sha256:c27267b491c0ea 21.2s
=> => resolve docker.io/arm64v8/mysql:9.4@sha256:c27267b491c0ea688241c792c449 0.0s
=> => sha256:68b6cfb14ed63d234a07a76dcbe2379c17328b73c399 737.53kB / 737.53kB 1.4s
=> => sha256:31e965880b69ca5a95a41e33e3a2386dfdadd9522eefad8d 6.44MB / 6.44MB 1.2s
=> => sha256:c27267b491c0ea688241c792c44919b3e71063d26f1062fa 1.66kB / 1.66kB 0.0s
=> => sha256:8c56cb68ef853056f066130282909d051b3f91e57a258ed2 2.87kB / 2.87kB 0.0s
=> => sha256:096cde3528fed6701531858fd067925b0fd6f0a38cbcb777 6.54kB / 6.54kB 0.0s
=> => sha256:12d9a25427f289ede710dac02ed01e42c53a7400ce58f0def8b3 886B / 886B 0.9s
=> => extracting sha256:12d9a25427f289ede710dac02ed01e42c53a7400ce58f0def8b3e 0.0s
=> => sha256:c065f45644751093347ba04d11bd67c9a3553d2c788e84e6 2.61kB / 2.61kB 1.8s
=> => sha256:20968b0e0ebf36258f3cfb5dd475191a1be2476784da0854885c 340B / 340B 2.0s
=> => extracting sha256:68b6cfb14ed63d234a07a76dcbe2379c17328b73c39944bb0b5d2 0.0s
=> => extracting sha256:31e965880b69ca5a95a41e33e3a2386dfdadd9522eefad8da3c71 0.2s
=> => sha256:985602c23e955a58859484f6f06125aea7013b01ac773a 48.02MB / 48.02MB 5.6s
=> => extracting sha256:c065f45644751093347ba04d11bd67c9a3553d2c788e84e6ad0c3 0.0s
=> => sha256:b4a2a1e05b8638fd23e253dde21caa0d4c6ea0ebfba2e892bd17 324B / 324B 2.1s
=> => extracting sha256:20968b0e0ebf36258f3cfb5dd475191a1be2476784da0854885c0 0.0s
=> => sha256:c058de2285f63e6e924e3a8782ed218052f2dde37ed 167.25MB / 167.25MB 14.7s
=> => sha256:6be8d9e1441e9d2678d861bc91e75a1ad48e480ac32f554b 5.33kB / 5.33kB 2.3s
=> => extracting sha256:985602c23e955a58859484f6f06125aea7013b01ac773a8bf4fa9 0.6s
=> => extracting sha256:b4a2a1e05b8638fd23e253dde21caa0d4c6ea0ebfba2e892bd171 0.0s
=> => extracting sha256:c058de2285f63e6e924e3a8782ed218052f2dde37edffd6d7d093 6.4s
=> => extracting sha256:6be8d9e1441e9d2678d861bc91e75a1ad48e480ac32f554bb6795 0.0s
=> [moodle_mysql 2/3] RUN microdnf install -y glibc-locale-source glibc-lang 28.8s
=> [moodle_mysql 3/3] RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 0.5s
=> [moodle_mysql] exporting to image 0.1s
=> => exporting layers 0.1s
=> => writing image sha256:c17bbc56b58f1290b28ab7ecf2a002afb1516b36cdcb4d38ed 0.0s
=> => naming to docker.io/library/docker-moodle-moodle_mysql 0.0s
=> [moodle_mysql] resolving provenance for metadata file 0.0s
=> [moodle_apache 3/5] RUN a2enmod rewrite 0.1s
=> [moodle_apache 4/5] RUN mkdir /moodledata && chown www-data:www-data /mood 0.1s
=> [moodle_apache 5/5] RUN echo "cgi.fix_pathinfo=1" > /usr/local/etc/php/con 0.1s
=> [moodle_apache] exporting to image 0.2s
=> => exporting layers 0.2s
[+] Running 7/7image sha256:f60573e753295d9973a389d2ffbcc9abb8acc365b7456802d4 0.0s
✔ Service moodle_mysql Built 54.5s
✔ Service moodle_apache Built 79.8s
✔ Network docker-moodle_default Created 0.0s
✔ Volume "docker-moodle_moodledata" Created 0.0s
✔ Volume "docker-moodle_mysqlvolume" Created 0.0s
✔ Container mysql9-moodle Started 0.3s
✔ Container php-apache-moodle Started 0.3s
%
コンテナが起動していることを確認します.
% docker container ls ⏎
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
295cec3902fd docker-moodle-moodle_apache "docker-php-entrypoi…" 10 minutes ago Up 10 minutes 0.0.0.0:80->80/tcp php-apache-moodle
b51de68e3471 docker-moodle-moodle_mysql "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql9-moodle
%
Moodle のインストール
続いて,Moodle のイントールを行います.Moodle のインストールは起動中の apache コンテナにログインし,/var/www/html/admin/cli/ ディレクトリにある install.php を実行します.
% docker compose exec -it moodle_apache /bin/bash ⏎ # (1) root@295cec3902fd:/var/www/html# cd admin/ ⏎ # (2) root@295cec3902fd:/var/www/html/admin# ls ⏎ # (3) cli root@295cec3902fd:/var/www/html/admin# cd cli/ ⏎ # (4) root@295cec3902fd:/var/www/html/admin/cli# ls ⏎ # (5) adhoc_task.php emailstop.php mysql_collation.php alternative_component_cache.php fix_course_sequence.php mysql_compressed_rows.php automated_backups.php fix_deleted_users.php purge_caches.php backup.php fix_orphaned_calendar_events.php reset_password.php build_theme_css.php fix_orphaned_question_categories.php restore_backup.php cfg.php generate_key.php scheduled_task.php check_database_schema.php import.php svgtool.php checks.php install.php uninstall_plugins.php cron.php install_database.php upgrade.php dashboard_reset.php kill_all_sessions.php delete_course.php maintenance.php root@295cec3902fd:/var/www/html/admin/cli# php install.php ⏎ # (6) .-..-. _____ | || | /____/-.---_ .---. .---. .-.| || | .---. | | _ _ |/ _ \/ _ \/ _ || |/ __ \ * | | | | | || |_| || |_| || |_| || || |___/ |_| |_| |_|\_____/\_____/\_____||_|\_____) Moodle 5.1.1+ (Build: 20251219) command line installation program ------------------------------------------------------------------------------- == Choose a language == en - English (en) ? - Available language packs type value, press Enter to use default value (en) : ja ⏎ # (7) ------------------------------------------------------------------------------- == データディレクトリパーミッション == 値を入力してください。デフォルト値 (2777) を使用するにはEnterキーを押してください。 : ⏎ # (8) ------------------------------------------------------------------------------- == ウェブアドレス == 値を入力してください。 : http://localhost/ ⏎ # (9) ------------------------------------------------------------------------------- == データディレクトリ == 値を入力してください。デフォルト値 (/var/www/moodledata) を使用するにはEnterキーを押してください。 : /moodledata ⏎ # (10) docker-compose.yml や php/Dockerfile の設定と同じ値を指定 ------------------------------------------------------------------------------- == データベースドライバを選択する == mysqli auroramysql mariadb 値を入力してください。デフォルト値 (mysqli) を使用するにはEnterキーを押してください。 : mysqli ⏎ # (11) ドライバのリストが表示されない場合,php/Dockerfile で mysqli がインストールされているか確認が必要 ------------------------------------------------------------------------------- == データベースホスト == 値を入力してください。デフォルト値 (localhost) を使用するにはEnterキーを押してください。 : moodle_mysql ⏎ # (12) docker-compose.yml に記載されたサービス名を指定 ------------------------------------------------------------------------------- == データベース名 == 値を入力してください。デフォルト値 (moodle) を使用するにはEnterキーを押してください。 : moodleDB ⏎ # (13) mysql/script/init-db.sql の値を参照 ------------------------------------------------------------------------------- == テーブル接頭辞 == 値を入力してください。デフォルト値 (mdl_) を使用するにはEnterキーを押してください。 : ⏎ # (14) ------------------------------------------------------------------------------- == データベースポート == 値を入力してください。デフォルト値 () を使用するにはEnterキーを押してください。 : 3306 ⏎ # (15) docker-compose.yml に記載されたポート番号を指定 ------------------------------------------------------------------------------- == データベースユーザ == 値を入力してください。デフォルト値 (root) を使用するにはEnterキーを押してください。 : docker-user ⏎ # (16) .env や mysql/script/init-db.sql の値を参照 ------------------------------------------------------------------------------- == データベースパスワード == 値を入力してください。 : secret ⏎ # (17) .env の値を参照 ------------------------------------------------------------------------------- == 長いサイト名 == 値を入力してください。 : Moodleテストサイト ⏎ # (18) ホーム画面やログイン画面にこの値が表示される ------------------------------------------------------------------------------- == サイト省略名 (例 単語) == 値を入力してください。 : Moodle ⏎ # (19) ほとんどページで左上に配置される「ロゴ」の文字列 ------------------------------------------------------------------------------- == 管理者アカウントユーザ名 == 値を入力してください。デフォルト値 (admin) を使用するにはEnterキーを押してください。 : admin ⏎ # (20) Moodle の管理者アカウント:ログイン時に利用 ------------------------------------------------------------------------------- == 新しい管理者パスワード == 値を入力してください。 : password ⏎ # (21) Moodle の管理者パスワード:ログイン時に利用 ------------------------------------------------------------------------------- == 新しい管理ユーザメールアドレス == 値を入力してください。デフォルト値 () を使用するにはEnterキーを押してください。 : ????.?????????@gmail.com ⏎ # (22) ------------------------------------------------------------------------------- == サポートメールアドレス == 値を入力してください。デフォルト値 () を使用するにはEnterキーを押してください。 : ????.?????????@gmail.com ⏎ # (23) ------------------------------------------------------------------------------- == アップグレードキー (設定しない場合、空白にしてください) == 値を入力してください。 : ⏎ # (24) ------------------------------------------------------------------------------- == 著作権表示 == Moodle - Modular Object-Oriented Dynamic Learning Environment Copyright (C) 1999 onwards Martin Dougiamas (https://moodle.com) このプログラムはフリーソフトウェアです。あなたはこれをフリーソフトウェア財団により発行された GNU 一般公衆利用許諾契約書 (バージョン2か、希望によりそれ以降のバージョンのうちどれか) の定める条件の下で再頒布または改変することができます。 このプログラムは有用であることを願って頒布されますが*全くの無保証*です。商業可能性の保証や特定の目的への適合性は言外に示されたものも含め全く存在しません。 詳細はMoodleライセンス情報をご覧ください: https://moodledev.io/general/license これらの要件を読んで理解できましたか? y (yes) または n (no) を入力してください。 : y ⏎ # (25) ------------------------------------------------------------------------------- == データベース設定中 == -->システム ++ install.xml: 成功 (2.29 秒) ++ ++ xmldb_main_install: 成功 (1.82 秒) ++ ++ admin_apply_default_settings: 成功 (1.06 秒) ++ ++ 成功 (6.13 秒) ++ -->aiplacement_courseassist ++ 成功 (0.08 秒) ++ -->aiplacement_editor ...(中略)... -->factor_webauthn ++ 成功 (0.06 秒) ++ -->upgrade_noncore() ++ 成功 (0.99 秒) ++ インストールが正常に完了しました。 root@295cec3902fd:/var/www/html/admin/cli# exit ⏎ # (26) exit %
以上で Moodle の初期設定ができました.
データベースの確認
Moodle のインストール作業過程でデータベースにも様々なテーブルが作成されています.MySQL のコンテナにログインしてテーブルの一覧などを確認してみます.次のコマンドではテーブルの一覧を確認した後,mdl_user テーブルの定義を表示し,登録されているユーザの一覧を表示しています.
% docker compose exec -it moodle_mysql /bin/bash ⏎ bash-5.1# mysql -u root -p ⏎ Enter password: パスワード ⏎ # .env に記載の管理者パスワード(入力しても画面には表示されない) Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 Server version: 9.4.0 MySQL Community Server - GPL Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; ⏎ +--------------------+ | Database | +--------------------+ | information_schema | | moodleDB | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.004 sec) mysql> USE moodleDB; ⏎ 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 mysql> SHOW TABLES; ⏎ +----------------------------------+ | Tables_in_moodleDB | +----------------------------------+ | mdl_adminpresets | | mdl_adminpresets_app | | mdl_adminpresets_app_it | | mdl_adminpresets_app_it_a | | mdl_adminpresets_app_plug | | mdl_adminpresets_it | | mdl_adminpresets_it_a | | mdl_adminpresets_plug | | mdl_ai_action_explain_text | | mdl_ai_action_generate_image | | mdl_ai_action_generate_text | | mdl_ai_action_register | | mdl_ai_action_summarise_text | | mdl_ai_policy_register | | mdl_ai_providers | | mdl_analytics_indicator_calc | | mdl_analytics_models | | mdl_analytics_models_log | | mdl_analytics_predict_samples | | mdl_analytics_prediction_actions | | mdl_analytics_predictions | | mdl_analytics_train_samples | | mdl_analytics_used_analysables | | mdl_analytics_used_files | | mdl_assign | | mdl_assign_grades | | mdl_assign_overrides | | mdl_assign_plugin_config | | mdl_assign_submission | | mdl_assign_user_flags | | mdl_assign_user_mapping | | mdl_assignfeedback_comments | | mdl_assignfeedback_editpdf_annot | | mdl_assignfeedback_editpdf_cmnt | | mdl_assignfeedback_editpdf_quick | | mdl_assignfeedback_editpdf_rot | | mdl_assignfeedback_file | | mdl_assignsubmission_file | | mdl_assignsubmission_onlinetext | | mdl_auth_lti_linked_login | | mdl_auth_oauth2_linked_login | | mdl_backup_controllers | | mdl_backup_courses | | mdl_backup_logs | | mdl_badge | | mdl_badge_alignment | | mdl_badge_backpack | | mdl_badge_backpack_oauth2 | | mdl_badge_criteria | | mdl_badge_criteria_met | | mdl_badge_criteria_param | | mdl_badge_endorsement | | mdl_badge_external | | mdl_badge_external_backpack | | mdl_badge_external_identifier | | mdl_badge_issued | | mdl_badge_manual_award | | mdl_badge_related | | mdl_bigbluebuttonbn | | mdl_bigbluebuttonbn_logs | | mdl_bigbluebuttonbn_recordings | | mdl_block | | mdl_block_instances | | mdl_block_positions | | mdl_block_recent_activity | | mdl_block_recentlyaccesseditems | | mdl_block_rss_client | | mdl_blog_association | | mdl_blog_external | | mdl_book | | mdl_book_chapters | | mdl_cache_filters | | mdl_cache_flags | | mdl_capabilities | | mdl_choice | | mdl_choice_answers | | mdl_choice_options | | mdl_cohort | | mdl_cohort_members | | mdl_comments | | mdl_communication | | mdl_communication_customlink | | mdl_communication_user | | mdl_competency | | mdl_competency_coursecomp | | mdl_competency_coursecompsetting | | mdl_competency_evidence | | mdl_competency_framework | | mdl_competency_modulecomp | | mdl_competency_plan | | mdl_competency_plancomp | | mdl_competency_relatedcomp | | mdl_competency_template | | mdl_competency_templatecohort | | mdl_competency_templatecomp | | mdl_competency_usercomp | | mdl_competency_usercompcourse | | mdl_competency_usercompplan | | mdl_competency_userevidence | | mdl_competency_userevidencecomp | | mdl_config | | mdl_config_log | | mdl_config_plugins | | mdl_contentbank_content | | mdl_context | | mdl_context_temp | | mdl_course | | mdl_course_categories | | mdl_course_completion_aggr_methd | | mdl_course_completion_crit_compl | | mdl_course_completion_criteria | | mdl_course_completion_defaults | | mdl_course_completions | | mdl_course_format_options | | mdl_course_modules | | mdl_course_modules_completion | | mdl_course_modules_viewed | | mdl_course_published | | mdl_course_request | | mdl_course_sections | | mdl_customfield_category | | mdl_customfield_data | | mdl_customfield_field | | mdl_customfield_shared | | mdl_data | | mdl_data_content | | mdl_data_fields | | mdl_data_records | | mdl_enrol | | mdl_enrol_flatfile | | mdl_enrol_lti_app_registration | | mdl_enrol_lti_context | | mdl_enrol_lti_deployment | | mdl_enrol_lti_lti2_consumer | | mdl_enrol_lti_lti2_context | | mdl_enrol_lti_lti2_nonce | | mdl_enrol_lti_lti2_resource_link | | mdl_enrol_lti_lti2_share_key | | mdl_enrol_lti_lti2_tool_proxy | | mdl_enrol_lti_lti2_user_result | | mdl_enrol_lti_resource_link | | mdl_enrol_lti_tool_consumer_map | | mdl_enrol_lti_tools | | mdl_enrol_lti_user_resource_link | | mdl_enrol_lti_users | | mdl_enrol_paypal | | mdl_event | | mdl_event_subscriptions | | mdl_events_handlers | | mdl_events_queue | | mdl_events_queue_handlers | | mdl_external_functions | | mdl_external_services | | mdl_external_services_functions | | mdl_external_services_users | | mdl_external_tokens | | mdl_favourite | | mdl_feedback | | mdl_feedback_completed | | mdl_feedback_completedtmp | | mdl_feedback_item | | mdl_feedback_sitecourse_map | | mdl_feedback_template | | mdl_feedback_value | | mdl_feedback_valuetmp | | mdl_file_conversion | | mdl_files | | mdl_files_reference | | mdl_filter_active | | mdl_filter_config | | mdl_folder | | mdl_forum | | mdl_forum_digests | | mdl_forum_discussion_subs | | mdl_forum_discussions | | mdl_forum_grades | | mdl_forum_posts | | mdl_forum_queue | | mdl_forum_read | | mdl_forum_subscriptions | | mdl_forum_track_prefs | | mdl_glossary | | mdl_glossary_alias | | mdl_glossary_categories | | mdl_glossary_entries | | mdl_glossary_entries_categories | | mdl_glossary_formats | | mdl_grade_categories | | mdl_grade_categories_history | | mdl_grade_grades | | mdl_grade_grades_history | | mdl_grade_import_newitem | | mdl_grade_import_values | | mdl_grade_items | | mdl_grade_items_history | | mdl_grade_letters | | mdl_grade_outcomes | | mdl_grade_outcomes_courses | | mdl_grade_outcomes_history | | mdl_grade_settings | | mdl_gradepenalty_duedate_rule | | mdl_grading_areas | | mdl_grading_definitions | | mdl_grading_instances | | mdl_gradingform_guide_comments | | mdl_gradingform_guide_criteria | | mdl_gradingform_guide_fillings | | mdl_gradingform_rubric_criteria | | mdl_gradingform_rubric_fillings | | mdl_gradingform_rubric_levels | | mdl_groupings | | mdl_groupings_groups | | mdl_groups | | mdl_groups_members | | mdl_h5p | | mdl_h5p_contents_libraries | | mdl_h5p_libraries | | mdl_h5p_libraries_cachedassets | | mdl_h5p_library_dependencies | | mdl_h5pactivity | | mdl_h5pactivity_attempts | | mdl_h5pactivity_attempts_results | | mdl_imscp | | mdl_infected_files | | mdl_label | | mdl_lesson | | mdl_lesson_answers | | mdl_lesson_attempts | | mdl_lesson_branch | | mdl_lesson_grades | | mdl_lesson_overrides | | mdl_lesson_pages | | mdl_lesson_timer | | mdl_license | | mdl_lock_db | | mdl_log | | mdl_log_display | | mdl_log_queries | | mdl_logstore_standard_log | | mdl_lti | | mdl_lti_access_tokens | | mdl_lti_coursevisible | | mdl_lti_submission | | mdl_lti_tool_proxies | | mdl_lti_tool_settings | | mdl_lti_types | | mdl_lti_types_categories | | mdl_lti_types_config | | mdl_ltiservice_gradebookservices | | mdl_matrix_room | | mdl_message | | mdl_message_airnotifier_devices | | mdl_message_contact_requests | | mdl_message_contacts | | mdl_message_conversation_actions | | mdl_message_conversation_members | | mdl_message_conversations | | mdl_message_email_messages | | mdl_message_popup | | mdl_message_popup_notifications | | mdl_message_processors | | mdl_message_providers | | mdl_message_read | | mdl_message_user_actions | | mdl_message_users_blocked | | mdl_messageinbound_datakeys | | mdl_messageinbound_handlers | | mdl_messageinbound_messagelist | | mdl_messages | | mdl_mnet_application | | mdl_mnet_host | | mdl_mnet_host2service | | mdl_mnet_log | | mdl_mnet_remote_rpc | | mdl_mnet_remote_service2rpc | | mdl_mnet_rpc | | mdl_mnet_service | | mdl_mnet_service2rpc | | mdl_mnet_session | | mdl_mnet_sso_access_control | | mdl_modules | | mdl_moodlenet_share_progress | | mdl_my_pages | | mdl_notifications | | mdl_oauth2_access_token | | mdl_oauth2_endpoint | | mdl_oauth2_issuer | | mdl_oauth2_refresh_token | | mdl_oauth2_system_account | | mdl_oauth2_user_field_mapping | | mdl_page | | mdl_paygw_paypal | | mdl_payment_accounts | | mdl_payment_gateways | | mdl_payments | | mdl_portfolio_instance | | mdl_portfolio_instance_config | | mdl_portfolio_instance_user | | mdl_portfolio_log | | mdl_portfolio_tempdata | | mdl_post | | mdl_profiling | | mdl_qbank | | mdl_qtype_ddimageortext | | mdl_qtype_ddimageortext_drags | | mdl_qtype_ddimageortext_drops | | mdl_qtype_ddmarker | | mdl_qtype_ddmarker_drags | | mdl_qtype_ddmarker_drops | | mdl_qtype_essay_options | | mdl_qtype_match_options | | mdl_qtype_match_subquestions | | mdl_qtype_multichoice_options | | mdl_qtype_ordering_options | | mdl_qtype_randomsamatch_options | | mdl_qtype_shortanswer_options | | mdl_question | | mdl_question_answers | | mdl_question_attempt_step_data | | mdl_question_attempt_steps | | mdl_question_attempts | | mdl_question_bank_entries | | mdl_question_calculated | | mdl_question_calculated_options | | mdl_question_categories | | mdl_question_dataset_definitions | | mdl_question_dataset_items | | mdl_question_datasets | | mdl_question_ddwtos | | mdl_question_gapselect | | mdl_question_hints | | mdl_question_multianswer | | mdl_question_numerical | | mdl_question_numerical_options | | mdl_question_numerical_units | | mdl_question_references | | mdl_question_response_analysis | | mdl_question_response_count | | mdl_question_set_references | | mdl_question_statistics | | mdl_question_truefalse | | mdl_question_usages | | mdl_question_versions | | mdl_quiz | | mdl_quiz_attempts | | mdl_quiz_feedback | | mdl_quiz_grade_items | | mdl_quiz_grades | | mdl_quiz_overrides | | mdl_quiz_overview_regrades | | mdl_quiz_reports | | mdl_quiz_sections | | mdl_quiz_slots | | mdl_quiz_statistics | | mdl_quizaccess_seb_quizsettings | | mdl_quizaccess_seb_template | | mdl_rating | | mdl_registration_hubs | | mdl_reportbuilder_audience | | mdl_reportbuilder_column | | mdl_reportbuilder_filter | | mdl_reportbuilder_report | | mdl_reportbuilder_schedule | | mdl_reportbuilder_user_filter | | mdl_repository | | mdl_repository_instance_config | | mdl_repository_instances | | mdl_repository_onedrive_access | | mdl_resource | | mdl_resource_old | | mdl_role | | mdl_role_allow_assign | | mdl_role_allow_override | | mdl_role_allow_switch | | mdl_role_allow_view | | mdl_role_assignments | | mdl_role_capabilities | | mdl_role_context_levels | | mdl_role_names | | mdl_scale | | mdl_scale_history | | mdl_scorm | | mdl_scorm_aicc_session | | mdl_scorm_attempt | | mdl_scorm_element | | mdl_scorm_scoes | | mdl_scorm_scoes_data | | mdl_scorm_scoes_value | | mdl_scorm_seq_mapinfo | | mdl_scorm_seq_objective | | mdl_scorm_seq_rolluprule | | mdl_scorm_seq_rolluprulecond | | mdl_scorm_seq_rulecond | | mdl_scorm_seq_ruleconds | | mdl_search_index_requests | | mdl_search_simpledb_index | | mdl_sessions | | mdl_shortlink | | mdl_sms_gateways | | mdl_sms_messages | | mdl_stats_daily | | mdl_stats_monthly | | mdl_stats_user_daily | | mdl_stats_user_monthly | | mdl_stats_user_weekly | | mdl_stats_weekly | | mdl_stored_progress | | mdl_subsection | | mdl_tag | | mdl_tag_area | | mdl_tag_coll | | mdl_tag_correlation | | mdl_tag_instance | | mdl_task_adhoc | | mdl_task_log | | mdl_task_scheduled | | mdl_tiny_autosave | | mdl_tool_brickfield_areas | | mdl_tool_brickfield_cache_acts | | mdl_tool_brickfield_cache_check | | mdl_tool_brickfield_checks | | mdl_tool_brickfield_content | | mdl_tool_brickfield_errors | | mdl_tool_brickfield_process | | mdl_tool_brickfield_results | | mdl_tool_brickfield_schedule | | mdl_tool_brickfield_summary | | mdl_tool_cohortroles | | mdl_tool_customlang | | mdl_tool_customlang_components | | mdl_tool_dataprivacy_category | | mdl_tool_dataprivacy_contextlist | | mdl_tool_dataprivacy_ctxexpired | | mdl_tool_dataprivacy_ctxinstance | | mdl_tool_dataprivacy_ctxlevel | | mdl_tool_dataprivacy_ctxlst_ctx | | mdl_tool_dataprivacy_purpose | | mdl_tool_dataprivacy_purposerole | | mdl_tool_dataprivacy_request | | mdl_tool_dataprivacy_rqst_ctxlst | | mdl_tool_mfa | | mdl_tool_mfa_auth | | mdl_tool_mfa_secrets | | mdl_tool_monitor_events | | mdl_tool_monitor_history | | mdl_tool_monitor_rules | | mdl_tool_monitor_subscriptions | | mdl_tool_policy | | mdl_tool_policy_acceptances | | mdl_tool_policy_versions | | mdl_tool_recyclebin_category | | mdl_tool_recyclebin_course | | mdl_tool_usertours_steps | | mdl_tool_usertours_tours | | mdl_upgrade_log | | mdl_url | | mdl_user | | mdl_user_devices | | mdl_user_enrolments | | mdl_user_info_category | | mdl_user_info_data | | mdl_user_info_field | | mdl_user_lastaccess | | mdl_user_password_history | | mdl_user_password_resets | | mdl_user_preferences | | mdl_user_private_key | | mdl_wiki | | mdl_wiki_links | | mdl_wiki_locks | | mdl_wiki_pages | | mdl_wiki_subwikis | | mdl_wiki_synonyms | | mdl_wiki_versions | | mdl_workshop | | mdl_workshop_aggregations | | mdl_workshop_assessments | | mdl_workshop_grades | | mdl_workshop_submissions | | mdl_workshopallocation_scheduled | | mdl_workshopeval_best_settings | | mdl_workshopform_accumulative | | mdl_workshopform_comments | | mdl_workshopform_numerrors | | mdl_workshopform_numerrors_map | | mdl_workshopform_rubric | | mdl_workshopform_rubric_config | | mdl_workshopform_rubric_levels | | mdl_xapi_states | +----------------------------------+ 489 rows in set (0.009 sec) mysql> DESC mdl_user; ⏎ +-------------------+--------------+------+-----+-----------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------+--------------+------+-----+-----------+----------------+ | id | bigint | NO | PRI | NULL | auto_increment | | auth | varchar(20) | NO | MUL | manual | | | confirmed | tinyint(1) | NO | MUL | 0 | | | policyagreed | tinyint(1) | NO | | 0 | | | deleted | tinyint(1) | NO | MUL | 0 | | | suspended | tinyint(1) | NO | | 0 | | | mnethostid | bigint | NO | MUL | 0 | | | username | varchar(100) | NO | | | | | password | varchar(255) | NO | | | | | idnumber | varchar(255) | NO | MUL | | | | firstname | varchar(100) | NO | MUL | | | | lastname | varchar(100) | NO | MUL | | | | email | varchar(100) | NO | MUL | | | | emailstop | tinyint(1) | NO | | 0 | | | phone1 | varchar(20) | NO | | | | | phone2 | varchar(20) | NO | | | | | institution | varchar(255) | NO | | | | | department | varchar(255) | NO | | | | | address | varchar(255) | NO | | | | | city | varchar(120) | NO | MUL | | | | country | varchar(2) | NO | MUL | | | | lang | varchar(30) | NO | | en | | | calendartype | varchar(30) | NO | | gregorian | | | theme | varchar(50) | NO | | | | | timezone | varchar(100) | NO | | 99 | | | firstaccess | bigint | NO | | 0 | | | lastaccess | bigint | NO | MUL | 0 | | | lastlogin | bigint | NO | | 0 | | | currentlogin | bigint | NO | | 0 | | | lastip | varchar(45) | NO | | | | | secret | varchar(15) | NO | | | | | picture | bigint | NO | | 0 | | | description | longtext | YES | | NULL | | | descriptionformat | tinyint | NO | | 1 | | | mailformat | tinyint(1) | NO | | 1 | | | maildigest | tinyint(1) | NO | | 0 | | | maildisplay | tinyint | NO | | 2 | | | autosubscribe | tinyint(1) | NO | | 1 | | | trackforums | tinyint(1) | NO | | 0 | | | timecreated | bigint | NO | | 0 | | | timemodified | bigint | NO | | 0 | | | trustbitmask | bigint | NO | | 0 | | | imagealt | varchar(255) | YES | | NULL | | | lastnamephonetic | varchar(255) | YES | MUL | NULL | | | firstnamephonetic | varchar(255) | YES | MUL | NULL | | | middlename | varchar(255) | YES | MUL | NULL | | | alternatename | varchar(255) | YES | MUL | NULL | | | moodlenetprofile | varchar(255) | YES | | NULL | | +-------------------+--------------+------+-----+-----------+----------------+ 48 rows in set (0.004 sec) mysql> SELECT * FROM mdl_user\G ⏎ *************************** 1. row *************************** id: 1 auth: manual confirmed: 1 policyagreed: 0 deleted: 0 suspended: 0 mnethostid: 1 username: guest password: $6$rounds=10000$Nqhaa.ol9iIJgOl7$U2CgRXuekV8VoGVNSQw3xS6wwd4REHevzl0q0FycWzFv28AZ34dRg8.IJEd13Q6uQcnIS7xYCqfTIq/famP9T/ idnumber: firstname: ゲストユーザ lastname: email: root@localhost emailstop: 0 phone1: phone2: institution: department: address: city: country: lang: ja calendartype: gregorian theme: timezone: 99 firstaccess: 0 lastaccess: 0 lastlogin: 0 currentlogin: 0 lastip: secret: picture: 0 description: このユーザはいくつかのコースに閲覧のみ許可された特別ユーザです。 descriptionformat: 1 mailformat: 1 maildigest: 0 maildisplay: 2 autosubscribe: 1 trackforums: 0 timecreated: 0 timemodified: 1766898067 trustbitmask: 0 imagealt: NULL lastnamephonetic: NULL firstnamephonetic: NULL middlename: NULL alternatename: NULL moodlenetprofile: NULL *************************** 2. row *************************** id: 2 auth: manual confirmed: 1 policyagreed: 0 deleted: 0 suspended: 0 mnethostid: 1 username: admin password: $6$rounds=10000$D7J5E9YfWXxI0Ww/$afwJxHaQCXrIhDEwQ2lofKqXshA.trswYoGBaYCSd/1ilIHoD2yAP/ZiwfIrvQ..qH58mqGoCaS/7lzHUOY6n/ idnumber: firstname: 管理 lastname: ユーザ email: ????.?????????@gmail.com emailstop: 0 phone1: phone2: institution: department: address: city: country: lang: ja calendartype: gregorian theme: timezone: 99 firstaccess: 0 lastaccess: 0 lastlogin: 0 currentlogin: 0 lastip: 0.0.0.0 secret: picture: 0 description: NULL descriptionformat: 1 mailformat: 1 maildigest: 0 maildisplay: 1 autosubscribe: 1 trackforums: 0 timecreated: 0 timemodified: 1766898067 trustbitmask: 0 imagealt: NULL lastnamephonetic: NULL firstnamephonetic: NULL middlename: NULL alternatename: NULL moodlenetprofile: NULL 2 rows in set (0.001 sec) mysql> exit ⏎ Bye bash-5.1# exit ⏎ exit %
Moodle サイトにアクセスする
Moodle の準備ができたのでトップページにアクセスします.右上にある「ログイン」リンクをクリックします.
Moodle のインストール時の(20), (21) で設定した「管理者アカウントユーザ名」と「管理者パスワード」を使ってログインします.
ログインに成功したらダッシュボードが表示されました.
とりあえず Moodle を設定して管理者アカウントでログインするところまでの作業ができました.この後は教員ユーザや学生ユーザの登録,コースの登録など様々な設定作業が必要になるでしょう.


