VPS(Ubuntu20.4)においてMoodle + STACK環境を構築するメモ
研究室の同期に数学ソフトウェアを使った教育について研究している人がいる.今回,MoodleとSTACKというソフトウェアの環境構築を頼まれたので協力した.今後彼が一人で構築できるようにドキュメントを残しておきたい.
Moodleのインストール
Moodleは学習管理システム(Learning Management System, LMS)である.
Step-by-step Installation Guide for Ubuntu - MoodleDocs
インストールは基本的には上記のガイドにしたがって進んでいけばよいが,ところどころ引っかかるところがあったので注意点を書いておく.
Step1 Install Ubuntu
VPSにUbuntu20.04をインストールして起動する.さくらVPSのコンソールにおいて,US配列キーボードで:が入力できない不具合がある.そのため,VPSに備え付きのコンソールを使用するならばβ版のシリアルコンソールを使う必要がある.
Step2 Install Apache/MySQL/PHP
Apache/MySQL/PHPをインストールする.この環境をLinux, Apache, MySQL, PHPの頭文字をとってLAMP環境という.それぞれインストールしたらその都度動作確認をしておくとよい.
また,Moodleのドキュメントのコマンドはそのままでは動かない.以下のコマンドでaptにリポジトリを登録してから.各種ソフトをインストールする.
sudo add-apt-repository 'ppa:ondrej/php' sudo apt-get update sudo apt install apache2 mysql-client mysql-server php7.4 libapache2-mod-php7.4
PHP
PHPをインストールしたら以下のようなファイルをphpinfo.phpとして作成し,/var/www/htmlに保存する.
<?php phpinfo(); ?>
http://IP.Address/phpinfo.phpにアクセスしてApacheと共に使われるPHPのバージョンが意図したものであるかを確認しておく.今回は7.4.16.

PHPのバージョンをupdate-alternativeで指定している場合でも異なるバージョンのPHPが使われる場合があるので注意する.
また,PHPのモジュールをインストールした場合などは
sudo service apache2 restart
でApacheの再起動をかけないと反映されない.
MySQLのインストール
今回のMySQLのバージョンは8.0.23-0ubuntu0.20.04.1.mysql_secure_installationによるmysqlのインストールで聞かれる事項はこちらの記事を参考にする.
MySQL 5.7 をインストールしたら最初に行うセットアップ |
Step 3: Install Additional Software
PHP8.x系が使いたければphp7.4-mbstringなどのバージョン番号をphp8.0-mbstringに変更してaptでインストールするとよい.何か足りないモジュールがあれば大抵php7.4-xmlなどのハイフン以下をモジュール名にすれば大抵インストールできる.何かインストールしたらsudo service apache2 restartを忘れずに行なう.
Step 4: Download Moodle
gitによりMoodleをクローンする.今回のインストールでは最も新しいリリースであるMOODLE_311_STABLEを導入した.バージョンは3.11.
sudo git clone git://git.moodle.org/moodle.git cd moodle sudo git branch -a sudo git branch --track MOODLE_311_STABLE origin/MOODLE_311_STABLE sudo git checkout MOODLE_311_STABLE
Step 5: Copy local repository to /var/www/html/
指示に従うだけ.
Step 6: Setup MySQL Server
/etc/mysql/mysql.conf.d/mysqld.cnfを編集しMySQLの設定をおこなうとある.しかし,mysqld.cnf内にドキュメントに記載された項目がなかったので特に変更しなかった.
Step 7: Complete Setup
http://IP.Address/moodleを開くとmoodleのインストールが始まる.いくつかの項目を入れてインストールしていくと,パーミッションの設定の影響かconfig.phpが生成されなかったと出る.
そこで表示されたコードをコピーし,config.phpを自分で作成する.コードにコメントとして書いてあるが,PHPの閉じタグがないが問題ない.自分で閉じタグをつけてしまうと動かなくなってしまうので注意する.
PHP: PHP タグ - Manual
STACKのインストール
STACKは数学などの自動採点システム.Moodleのプラグインとして動作する.バックエンドにMaxima(数式処理システム),gnuplotをもち,これらと通信することで採点などを行う.今回のバージョンは4.3.
Installation instructions. - STACK Docs
こちらもドキュメントの流れに沿って設定していく.
Step1
MathJaxに関するMoodleの設定を行なう.STACKのドキュメントにあるように,3つの項目をDashboard > Site administration > Plugins > Filters > MathJaxに追加する.

Step 2. Install gnuplot and Maxima
Maxima
Maximaをインストールする.MaximaはCommon Lispで書かれた数式処理システム(Mathematicaのようなシステム)である.
sudo apt install maxima
バージョンは5.36.1.aptでインストールするだけで使えた.
ソースからビルドする場合sbcl(Common Lispの処理系の一つ)が必要だが,これもaptでインストールすることができる.詳しくは以下のドキュメントを参照のこと.
Compiling Maxima from source. - STACK Docs
Step 3. Add some additional question behaviours
いくつかのファイルをダウンロードし,Moodleのフォルダ内に配置する.
これはドキュメントの記載の通り,Moodleのルートディレクトリでgit cloneするだけでよい.
git clone https://github.com/maths/moodle-qbehaviour_dfexplicitvaildate.git question/behaviour/dfexplicitvaildate git clone https://github.com/maths/moodle-qbehaviour_dfcbmexplicitvaildate.git question/behaviour/dfcbmexplicitvaildate git clone https://github.com/maths/moodle-qbehaviour_adaptivemultipart.git question/behaviour/adaptivemultipart
Step 4. Add the STACK question type
Moodle上でドキュメントに記載のSTACKの設定を行い,Moodleのルートに入って書かれているファイルをgit cloneで落とせばよい.
git clone https://github.com/maths/moodle-qtype_stack.git question/type/stack
Step 5. Post-install confirmation.
Dashboard > Site administration > Plugins > Question Types > STACK
からhealthcheck script(動作確認スクリプト)を動かす.
また,動作確認用の問題データを用意してもらったので,これをMoodle上でインポートするとSTACKがうまく動いているか確認することができる.
https://gist.github.com/soma-arc/727cc4aae272315c2843e16b09591599
おわり
MoodleとStackに関してはこういった書籍がある.
MoodleとPHPのバージョンまわりでうまくいかないことが多いので気を付けたい.サーバーサイドはあまりわかっていなくて大変だったのだけれどやはり動くものが見れた時は面白い.
追記 - プラグインのインストール
Moodleの管理画面からプラグインを入れることができる。ただし、パーミッションの設定がうまくされていないとインストールすることはできない.
Apacheはwww-dataというグループのwww-dataというユーザでファイルを操作する.www-dataにディレクトリに対する書き込み権限がないとMoodle上でプラグインの追加ができない.
権限の設定は以下の通り
sudo chgrp -R www-data /var/www/html/moodle sudo chmod g+w -R /var/www/html/moodle sudo service apache2 restart
(参考 UbuntuのWordPressの更新が上手く行かないときの対応 | 有限工房)
その後、Moodleの管理画面から サイト管理 > プラグイン > プラグインをインストールする を選択し、以下の画面からプラグインを入れる.
今回は次のプラグインをインストールする.
Moodle plugins directory: Ordering
プラグインの入ったzipファイルをサイトからダウンロードし、上記の画面からインストールすれば終わり.
プラグインの導入には別の方法もある。次のページを参考のこと.
プラグインをインストールする - MoodleDocs
追記 - Moodleのアップグレード
Moodleを更新した.メジャーアップデートではないので特に躓くところはないはず.
アップグレード - MoodleDocs
こちらを参考に更新を行う.今回の環境はテスト運用であったので、メンテナンスモードにはしなかった.
cd /var/www/html sudo cp -r moodle moodle.backup cd moodle sudo git stash save sudo git pull sudo cp ../moodle.backup/config.php ./
一応バックアップを取った後、リポジトリを更新し、config.phpだけバックアップからもってくる.
ブラウザから管理者アカウントでMoodleにアクセスし、サイト管理 > 通知に移動すると自動的に更新が始まる.
何もなければ完了.