カテゴリー: Moodle

Moodle

  • Moodleサイト移行

    ホスト名の変更を行う手順メモ

    1. メンテナンスモードにする
      sudo php moodle/admin/cli/maintenance.php --enable
    2. バックアップ
      • データベース
      • HTML
      • moodledata
    3. レガシーメンテナンスモードにする
      sudo php moodle/admin/cli/maintenance.php --disable
      sudo php moodle/admin/cli/maintenance.php --enableold
    4. サイト移行ツール(admin/tool/replace)へのアクセス
    5. メンテナンスモードを解除

    移行中「動作環境」「サーバチェック」で max_input_vars が足りないとワーニングが表示された。修正するために php.ini を編集したものの有効にならなかった。fpm を使用している場合には /etc/php-fpm/ 以下を設定すること。

  • MoodleのSCORM reportを解析向けにカスタマイズ

    仮名化しているIDをさらに処理しやすい形にすること、時刻を計算機で扱いやすい形にすること、各オブジェクトの経過時間を表示することなどを実現したい

    構想から1年半、ようやくできた。今どきではあるがSCORMで教材を提供している場合、それなりのトラッキング情報が得られる。しかしながら、MoodleのSCORMモジュールのレポート機能は解析を目的としたデータを出力することを目的とはしていないため、データクレンジングが必要となる。このカスタマイズで多くを学ぶことができ本当に楽しい。 (さらに…)

  • Moodleのログを解析向けに出力するカスタマイズ:mod_quiz編

    mod_quizにこだわって分析したい場合のカスタマイズをまとめておく。端的にはこの記事の続編である。今回からはUNIX VMを準備するのはやめ、Ubuntu on Windows10で開発環境を構築している。XAMPとかVMWare Playerをインストールする必要がなくなり素晴らしい。対象は、mod/quiz/review.php, mod/quiz/report/{attemptsreport_table,attemptsreport}.phpである。
    前提として、もしPHPスクリプトでどのようなクエリを発行しているのか知りたければ、各スクリプト冒頭のrequire群の後に以下を追加すればよい(だいたい後悔するのがオチである)。相変わらずたいしたことはやっていない。

    [code]$DB->set_debug(true);[/code]

    (さらに…)

  • MySQLアップグレード後dumpができていなかった

    mysqldump を実行すると、

    [code]
    mysqldump: Couldn’t execute ‘SHOW VARIABLES LIKE ‘gtid\_mode”: Table ‘performance_schema.session_variables’ doesn’t exist (1146)
    [/code]

    となってしまう。毎日取っているはずのバックアップが意味のない状態に…。データ構造のアップグレードを行うべし。

    [code]
    sudo mysql_upgrade -u root -p
    [/code]

    これで大丈夫と思い再起動すると、

    [code]
    mysqldump: Error: Binlogging on server not active
    [/code]

    と奈落の底へ。バイナリロギングを有効にするため、my.cnfを

    [code]
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    sync_binlog = 1
    [/code]

    とし、/var/log/mysql を掘ってパーミッションを適切にしましょう!

  • Moodleのオンラインユーザ数を可視化

    学認連携Moodleの繁忙期を前に、オンラインユーザ数を可視化することを思いついた。もちろんMoodle内部にそのような仕掛けはあるが、可視化ページの「Logged in Users」をMoodleのオンラインユーザ数と勘違いされている場合があったため、rraに記録し可視化するのが有用であると考えた。

    オンラインユーザ数を取得するスクリプトの作成

    [code]
    #blocks/online_users/block_online_users.phpを参考にした
    #/bin/sh
    pass=’your password’
    db=’your database’
    output=`/usr/bin/mysql -s -umdluser -p$pass $db -e "SELECT count(u.id) FROM mdl_user u WHERE u.lastaccess > unix_timestamp(now()) – 300 AND u.lastaccess <= now() AND u.deleted = 0"`
    echo $output
    [/code]

    これを実行し単独の数値が出力されるか確認する。確認できたら、データインプットメソッドへの登録、データテンプレートの作成、データソースの登録、グラフテンプレートの登録と進めれば良い。おやじさんのページがひじょうに参考になりました。

    結果は以下の通り。まだまだ改善の余地はあるが何とか間に合いました。

    security-learning のオンラインユーザ数
    security-learning のオンラインユーザ数

  • 「倫倫姫アップデート2015: 学認連携Moodleの利用拡大と運用の改善」が大学ICT推進協議会2015年度年次大会優秀論文賞を受賞しました

    情報倫理eラーニング教材の開発と運用における改善をまとめたものが評価されました。ありがとうございます。開発と運用にご尽力いただいている皆様、利用機関の皆様にこの場をお借りして深く感謝いたします。今後も継続的な改善を進めて行く所存です。

    1 題 目
    倫倫姫アップデート2015: 学認連携Moodleの利用拡大と運用の改善

    2 著 者
    上田浩(京都大学/国立情報学研究所),中村素典(国立情報学研究所)

    3 選考理由
    著者らは,情報倫理教育のためのコンテンツである「倫倫姫」を学認連携Moodle上で継続的に運用してきている。本論文では,コンテンツのアップデートと運用する際に問題となった点の改善点について報告している。コンテンツについては,教育の実効性を高めるため,Moodleの利用制限 (Conditional Activities) 機能を用いて総合テストのみ受講することを不可能とするよう改良した。また,教材構造を改良し,関責任者が受講記録を確認するときのシステム負荷の低減を実現した。教育の実効性と運用の効率性を高めるための有益な情報を提供しており,高く評価できる。

  • ibdata1肥大化解消

    学認連携Moodleのibdata1は11GBになっている。よく言われることだが、InnoDBはOSがどのていどのファイルを扱えるか認識できない。肥大化が困るのは、ファイルシステムを食い潰すことであり、最適化したとしても縮小することはない。一度ダンプからリストアするしかない。また、ファイルごとに.idbを作成する「innodb_file_per_table」が効果があるとされており、my.cnfに

    [code]
    innodb_data_file_path = ibdata1:1G
    innodb_file_per_table
    [/code]

    を記述するという2009年の記事が見られるが、MySQLマニュアルを見ると、MySQL 5.6からこれがデフォルトになるそうだ。つまり、自動的にテーブルごとの.ibdを作成してくれるということである。先日のシステムメンテナンスで学認連携MoodleはMySQL 5.7にバージョンアップした。学認連携Moodleのデータディレクトリを見てみると、

    [code]
    -rw-r—– 1 mysql mysql 8720 3月 8 04:19 mdl_workshop_aggregations.frm
    -rw-r—– 1 mysql mysql 147456 3月 8 04:20 mdl_workshop_aggregations.ibd
    -rw-r—– 1 mysql mysql 9260 3月 8 04:19 mdl_workshop_assessments.frm
    -rw-r—– 1 mysql mysql 147456 3月 8 04:20 mdl_workshop_assessments.ibd
    -rw-r—– 1 mysql mysql 9222 3月 8 04:19 mdl_workshop_assessments_old.frm
    -rw-r—– 1 mysql mysql 163840 3月 8 04:20 mdl_workshop_assessments_old.ibd
    [/code]

    のように、ダンプをリストアする作業を行っていないのもかかわらず、夜中のmysqlcheck時に自動的にこのようになっているようだ。つまりmy.cnfは一切変更する必要はない。

    「innodb_data_file_path = ibdata1:1G」について、このサイズを越えたらどうなるのか見当がつかないので、明示的な固定サイズは止めることにした。しかしながら今のままの肥大を続けるのは良くないので、データベースのダンプをリストアする作業は必要である。この結果、ibdata1は11Gから79Mとなり、消費メモリが劇的に減少した。

    security-learning のメモリ使用状況。メンテナンス後は空きメモリが劇的に増加している。
    security-learning のメモリ使用状況。メンテナンス後は空きメモリが劇的に増加している。

    作業手順は次の通り。この記事の流れが非常に参考になった。
    (さらに…)

  • SCORM受験削除の効果

    学認連携Moodleのメンテナンスの真っ最中である。今回のメンテナンスの目的の一つは、肥大したSCORM関係のデータを削除すること。MoodleはSCORM関連のデータをシステム全体のデータベースとして持っている。たとえば、

    [code]
    | mdl_scorm | 25 |
    | mdl_scorm_aicc_session | 0 |
    | mdl_scorm_scoes | 516 |
    | mdl_scorm_scoes_data | 4043 |
    | mdl_scorm_scoes_track | 8530377 |
    [/code]

    mdl_scorm_scores_track にSCORMのトラッキングデータがあるものと思われる(参照:mysqlでテーブルのレコード数を確認する方法)。これを「全てのSCORM受験を削除」する。3/1 21:26に削除を開始した。

    security-learningのロードアベレージ。開始から4時間以上高負荷状態が続いていることが分かる。
    security-learningのロードアベレージ。開始から4時間以上高負荷状態が続いていることが分かる。

    削除開始からしばらくした時の状態。増えているが一時的なトランザクションのためであろうと推察する。

    [code]
    | mdl_scorm | 25 |
    | mdl_scorm_aicc_session | 0 |
    | mdl_scorm_scoes | 516 |
    | mdl_scorm_scoes_data | 4040 |
    | mdl_scorm_scoes_track | 8855805 |
    [/code]

    削除後

    [code]
    | mdl_scorm | 25 |
    | mdl_scorm_aicc_session | 0 |
    | mdl_scorm_scoes | 454 |
    | mdl_scorm_scoes_data | 3345 |
    | mdl_scorm_scoes_track | 171273 |
    [/code]

    およそ1/50に削減できたことになる。なお、4コアサーバで同様の操作を行ったときは最後のクエリ投入まで16分で完了した(実行時間は不明)が、security-learning(2コア)ではクエリの投入だけで47分、実際の実行に4時間以上かかっていると推定され、データベースはスケールアップが効果的ということを実感した。

  • Moodleのメンテナンスモード

    予告することができるのを今さらながら初めて知った。cronなどで1日前(つまり1440分前)から予告しておいてメンテナンスモードにすることもできる。該当のMoodle Docsはこちら
    [code]
    if ($options[‘help’]) {
    $help =
    "Maintenance mode settings.
    Current status displayed if not option specified.

    Options:
    –enable Enable CLI maintenance mode
    –enablelater=MINUTES Number of minutes before entering CLI maintenance mode
    –enableold Enable legacy half-maintenance mode
    –disable Disable maintenance mode
    -h, –help Print out this help

    Example:
    \$ sudo -u www-data /usr/bin/php admin/cli/maintenance.php
    "; //TODO: localize – to be translated later when everything is finished

    echo $help;
    die;
    }
    [/code]

  • 「表計算ソフトで学ぶ微分方程式」が2015年度ベスト・ムードル・オープン・コース賞を受賞しました

    表計算ソフトで学ぶ微分方程式」が佳作を受賞しました。ありがとうございます。恐らく、語学のコースばかりでは良くないという判断が働いて、数少ない理系コースとしてスポットを当てていただいたのだと思います。今後も語学以外の分野におけるLMS利用を進めて行く所存です。

    しかしながら、この賞を「上田浩(京都大学)」として受賞するのはためらいがあります。このコースは私が2007〜2011年度群馬大学教養教育で開講していた科目であり、バックアップを5年ぶりにパブリッシュしたものだからです。残念ながら京都大学では私の力不足で、全く同様の科目を開講できていません。ここに群馬大学で「表計算ソフトで学ぶ微分方程式」を受講し、貴重なフィードバックをくださった群馬大学の学生諸君に心から感謝します。学生諸君は大学院など次の道に進んでいるでしょう。

    Don Hinkelman先生と
    Don Hinkelman 先生と

    写真はThom Rawson (@tallthom) 先生が撮ってくださいました。Thom先生ありがとうございます。