Raspberry Pi OSでMoodleを動かす
はじめに
Raspberry Pi Desktop上にMoodleを構築します。
最終的に以下のような構成になります。
- MariaDB: 10.5.26
- PHP: 7.4.33
- Apache: 2.4.63
- Moodle: 4.1.14
バージョンについて
これでもRaspberry Pi Desktopに対応する最新版です。
正直何年遅れなのという古さなので、他のOSで実行する際はうまいこと読み替えてください。
MariaDBのセットアップ
とりあえずシステムの更新をします。
sudo apt update && sudo apt upgrade -y
MariaDBのインストール
MariaDBをインストールします。
sudo apt install -y mariadb-server mariadb-client
もっと新しいバージョンを入れようとした残骸
MariaDB公式のセットアップスクリプトスクリプト[1]をダウンロードして実行します。
curl -LsSO https://r.mariadb.com/downloads/mariadb_repo_setup && sudo bash mariadb_repo_setup --mariadb-server-version=10.6
ここでは、MariaDB-serverのバージョンとして10.6を指定しています。これは、10.6が32bit OSをサポートする最後のバージョンであるからです。
つぎに、リポジトリ構成の更新と確認を行います。
sudo apt update && sudo apt list mariadb-server -a
上のコマンドを実行すると、mariadb-serverのバージョンがいくつか表示されるはずです。
mariadb-server/unknown,unknown 1:10.6.20+maria~deb11 amd64
最新のバージョンを選べば問題ないはずですが、Raspberry Piで実行する際は、アーキテクチャがarmのものを選択してください。
MariaDB:1:10.6.20+maria~deb11
をインストールします。
sudo apt install -y mariadb-server=1:10.6.20+maria~deb11 mariadb-client
正しくインストールできていれば以下のコマンドが動作するはずです。
systemctl status mariadb
mariadb.serviceのActive
がactive (running)
となっていることを確認します。
mariadb --version
mariadbのバージョンが表示されることを確認します。
MariaDBの初期設定
初期設定用のコマンドを実行します。
sudo mysql_secure_installation
プロンプトに従って設定します。
以下は参考までに。
Enter current password for root (enter for none):
MariaDBのrootパスワードを求められます。
初期設定中で存在しないので何も入力せずにEnter。
Switch to unix_socket authentication [Y/n]
Unix_socketを用いた認証に切り替えるかを聞かれます。
nを入力してEnter。
なんの設定?
詳しくは他のサイト[2]にまとまっています。
よく理解していないしとりあえず使う必要はなさそうなので拒否しています。
Change the root password? [Y/n]
rootパスワードを変更するか聞かれます。
Enterを押してパスワードを設定します。
Remove anonymous users? [Y/n]
匿名ユーザを削除するかを聞かれます。
匿名ユーザはMariaDBにデフォルトで存在するユーザです。このユーザを使用することでユーザ名・パスワードなしにMariaDBにアクセスできます。
Enterを押して削除します。
Disallow root login remotely? [Y/n]
リモートホストからのrootログインを無効にするかを聞かれます。
Enterキーを押して無効にします。
Remove test database and access to it? [Y/n]
MariaDBにデフォルトで存在するtest
データベースを削除するかを聞かれます。
使用しないため、Enterキーを押して削除します。
Reload privilege tables now? [Y/n]
上で変更した権限テーブルをすぐに反映させるか聞かれます。
Enterキーを押して反映させます。
初期設定は以上です。
Moodle用データベースの作成
詳しいことは公式ドキュメントに載っています。
MariaDBへの接続
はじめに、以下のコマンドでMariaDBサーバに接続します。
mariadb -u root -p
するとパスワードを求められるので、先ほど設定したrootパスワードを入力します。
プロンプトが以下のような表示になっていれば接続されています。
MariaDB [(none)]>
データベースの作成
MariaDBへ接続された状態で以下のコマンドを実行します。
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
これはmoodle
というデータベースを、デフォルト文字セットをutf8mb4
、照合順序をutf8mb4_unicode_ci
として作成するコマンドです[3][4][5]。
実行後、Query OK
と表示されれば成功です。また、以下のコマンドを実行してDatabase内にmoodle(または上のコマンドで設定したデータベース名)が含まれていれば成功です。
show databases;
ユーザの作成
moodleがデータベースを使用するためのユーザを作成します。
実行するコマンドは以下です。
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'password';
password
の部分は適当なものに置き換えます。
上のコマンドはlocalhost
からアクセスできる、パスワードがpassword
のユーザ:moodleuser
を作成するもの[6]です。
実行後、Query OK
と表示されれば成功です。また、以下のコマンドを実行してUser内にmoodleuser(または上のコマンドで設定したユーザ名)が含まれていれば成功です。
SELECT user FROM mysql.user;
ユーザ権限の変更
上で作成したユーザへmoodle
データベースの操作権限を与えます。
実行するコマンドは以下です。
GRANT ALL ON moodle.* TO 'moodleuser'@'localhost';
これは、moodleusrにmoodleデータベースへのすべての操作権限を与えるコマンド[7]です。
実行後、Query OK
と表示されれば成功です。また、以下のコマンドを実行してGrants for moodleuser@localhost内に上のコマンドで設定した権限が含まれていれば成功です。
SHOW GRANTS FOR 'moodleuser'@'localhost';
以上でMariaDBの設定は終了です。以下のコマンドを実行してMariaDBへの接続を終了します。
EXIT;
Apacheのセットアップ
Apacheのインストール
Apacheをインストールします。
sudo apt install -y apache2
正しくインストールできていれば以下のコマンドが動作するはずです。
systemctl status apache2
apache2.serviceのActive
がactive (running)
となっていることを確認します。
PHPのセットアップ
PHPのインストール
詳しいことは公式ドキュメントに載っています。
PHPとその拡張機能をインストールします。sudo apt install -y php php-mysql php-curl php-xmlrpc php-soap php-intl php-xml php-zip php-mbstring php-gd php-opcache php-bcmath php-json php-ldap php-exif php-fileinfo
インストール後、以下のコマンドを実行してPHPのバージョンが表示されれば成功です。
php -v
PHPの設定
PHPの設定ファイルである/etc/php/<version>/apache2/php.ini
を変更します。今回インストールしたPHPは7.4.33なので以下のコマンドでファイルを開きます。
sudo nano /etc/php/7.4/apache2/php.ini
以下のように書き換えてください。
max_input_vars = 5000
post_max_size = 50M
upload_max_filesize = 50M
max_execution_time = 300
PHPの再読み込み
Apache2をリロードして、PHPを読み込み直します。
sudo systemctl restart apache2
Moodleのセットアップ
詳しいことは公式ドキュメントに載っています。
Moodleのクローン
git://git.moodle.org/moodle.gitから、Gitを用いてリポジトリをクローンします。今回はMoodle4.1を使用します。
cd /var/www/html && sudo git clone -b MOODLE_401_STABLE git://git.moodle.org/moodle.git
ファイルの保護
クローンしたmoodleファイルのアクセス権限を変更します。
sudo chown -R root /var/www/html/moodle && sudo chmod -R 0755 /var/www/html/moodle
データディレクトリの作成
Moodleが扱うすべてのファイルを保存するディレクトリを作成します。このディレクトリは、Web経由で直接アクセスできるべきではありません。
sudo mkdir /var/www/moodledata && sudo chmod 0777 /var/www/moodledata
Moodleのインストール
Moodleのインストールをwww-data
ユーザとして行います。
sudo chown www-data /var/www/html/moodle
cd /var/www/html/moodle/admin/cli
sudo -u www-data /usr/bin/php install.php
type value, press Enter to use default value (en)
:
使用言語を聞かれます。
日本語を使用するので、ja
と入力してEnterキーを押す。
データディレクトリパーミッション
データディレクトリのアクセス権限を聞かれます。
デフォルトで問題ないので何も入力せずにEnterキーを押す。
ウェブアドレス
Moodleにアクセスするためのアドレスを入力してEnterキーを押す。
ここではhttp://<ローカルipアドレス>/moodle
としました。
データディレクトリ
上で作成したデータディレクトリ(/var/www/moodledata
)を入力してEnterキーを押す。
データベースドライバ
MariaDBを使用するので、mariadb
と入力してEnterキーを押す。
データベースホスト
MoodleとMariaDBを同じホストで実行するので何も入力せずにEnterキーを押す。
データベース名
上で作成したMoodle用データベースの名前を入力してEnterキーを押す。
テーブル接頭辞
デフォルト値で問題ないので何も入力せずにEnterキーを押す。
データベースポート
デフォルト値で問題ないので何も入力せずにEnterキーを押す。
Unixソケット
デフォルト値で問題ないので何も入力せずにEnterキーを押す。
データベースユーザ
上で作成したユーザ名(moodleuser
)を入力してEnterキーを押す。
データベースパスワード
上で作成したユーザのパスワード(password
)を入力してEnterキーを押す。
長いサイト名
フロントページに表示されるサイト名を入力してEnterキーを押す。
サイト省略名
長いサイト名の省略形を入力してEnterキーを押す。
管理者アカウントユーザ名
デフォルト値で問題ないので何も入力せずにEnterキーを押す。
新しい管理者パスワード
管理者アカウントのパスワードを考えて入力し、Enterキーを押す。
新しい管理ユーザメールアドレス
デフォルト値で問題ないので何も入力せずにEnterキーを押す。
サポートメールアドレス
デフォルト値で問題ないので何も入力せずにEnterキーを押す。
アップグレードキー
デフォルト値で問題ないので何も入力せずにEnterキーを押す。
著作権表示
表示内容を理解してからy
を入力しEnterキーを押す。
インストールが完了したらmoodleディレクトリのオーナーをrootに戻します。
chown -R root /var/www/html/moodle
Apacheを再起動します。
sudo systemctl restart apache2
http://<ローカルipアドレス>/moodle
でMoodleへアクセスできるようになりました。管理者アカウントでログインし、メールアドレスを登録します。
Cron
Moodleでは、メールの送信やバックアップなどのバックグラウンド処理の実行を定期的に行う必要があります。そこでCronを用いて定期実行処理を自動化します。
sudo crontab -u www-data -e
crontabファイルが開いたら、以下の内容を追加します。
* * * * * /usr/bin/php /var/www/html/moodle/admin/cli/cron.php >/dev/null
Moodleの設定
Moodleのサイト上で変更した設定をまとめます。
一般/サイトセキュリティ設定
- ユーザにログインを強制する: Yes
- パスワード変更後、ログアウトする: Yes
- パスワード変更後、ウェブサービスアクセストークンを削除する: Yes
- 必須フィールドの厳密な妥当性確認: Yes
ユーザ/ユーザデフォルトプレファレンス
- メールアドレス可視性: 秘匿する
プラグイン/認証管理
- ゲストログインボタン: 非表示
まとめ
以上の設定で最低限Moodleを利用できるようになったはずです。
Discussion