Top > Install Log > CentOS6 > Moodle
AND OR

Moodleのバージョンアップ

必要なソフトウェアの確認

今回は、Moodle 1.9ベース(1.9.19)から 2.Xベース(Moodle 2.6.2)にバージョンアップした。

したがって、通常のクリーンインストールとは多少異なる。

必要となるソフトウェア(PHP、MySQLなど)のバージョンについては、 Moodleのドキュメントを参考にする。もちろん手順も。

なお、1.9ベースから2.Xベースへのアップグレードはできない。 一度、2.2ベースへアップグレードした後、目的のバージョンへアップグレードすることになる。

後から追加でインストールしたプラグインなどがあると、 うまくアップグレードできない場合もある。 結局は、ユーザ情報のみ移行することにした。既存のコースはすべて削除し、追加したプラグインは(使用するデータベース上のテーブルとも)削除した。プラグイン関係の操作は、必ず管理メニューから行うこと。

また、長い間ログインしていないユーザ、キャッシュやテンポラリディレクトリの内容、も削除しておく。

Apacheの設定

(すでに設定済みだが)/etc/httpd/conf/httpd.conf に設定を追加しておく。 だいたい、「DirectoryIndex」の行の下あたりで良いと思う。

…
AcceptPathInfo on ←追加
…

PHPの設定

/etc/php.ini に、 メモリ制限やファイルのアップロードサイズを大きめで設定しておく。 とくに「memory_limit」は、うんと大きいほうが良いと思う。 アップグレードの途中で、PHPが使用するメモリが足りなくなり、 アップグレード作業が進まないことが何回もあった…Apacheのログはよく見ておこう…(白井先生@鈴鹿工業高専の記事が参考になる

memory_limit = 256M
upload_max_filesize = 20M
post_max_size = 20M

設定できたら、Apacheを再起動。

# service httpd restart

データベースのコピー

アップグレード対象のMoodleのデータベースをコピーしておく…

…のではなくて(苦笑)、 1.9ベースのMoodleを残すことにしていたので、 アップグレード用に元のデータベースをコピーする。

今回は、phpMyAdminでお手軽にコピーを作った。 なお、Moodle用のユーザを作るのを忘れないこと(phpMyAdminの場合はユーザごとにデータベースへの権限を割り当てる)。

ついでに、Moodleのデータディレクトリもコピーしておくのを忘れないようにしよう。

Moodle 2.2へのアップグレード

まず、アップグレード作業の起点となる、Moodle 2.2へアップグレードする。 今回は公式サイトのパッケージのみ使用する。 なお、2.2ベースは「2.2.11」が最終のリリースとなっている。

# wget "http://download.moodle.org/download.php/stable22/moodle-2.2.11.tgz"

あとは、通常のMoodleのインストールと同じ。 ただし、使用するデータベースやデータディレクトリは、 コピーしたものを使用するように指定する。

アップグレード作業の途中で止まるようなら、URLを編集して、 「http://……/admin/install.php」(?)にアクセスし直すことで、 止まったところから再開させることができる場合がある。

Moodle 2.2から2.6までの道

ここまで問題なく済めば、あとはMoodle 2.6ベースへアップグレードすれば完了…

…とはいかなかった。なぜか。
実際の作業中には気がつかなかったが、上記のPHPに割り当てたメモリサイズの問題があったのだと思う。

しかたないので、2.2から2.3へ、2.3から2.5へ、2.5から2.6へと段階的にアップグレードしていった。非常に面倒だった(涙)

あと、今回のサーバでもデータベース(MySQL)はレプリケーションを設定しているが、 途中でデータベースのログにエラーが残っていた。 それに対応するために、次の設定を「/etc/my.cnf」に追加した。

…
binlog_format=row
…

Moodle 2.6へのアップグレード

今回の目的のバージョンである、2.6.2へアップグレード。

基本的には、作業はこれまでと同じ。 最後のほうで作成される config.php に対して、 日本語名のファイルに対応させるための設定として、 次の2行を追加しておく。

# vi /var/www/html/moodle/config.php
...
$CFG->unicodedb = true;
$CFG->unicodecleanfilename = true;
...

また、日本語フォントの設定、地図データの入手も忘れずに。

プラグインなどの自動更新のエラーへの対策

Moodleは2.4ベースから、プラグインの自動更新ができるようになっている(2.6では本体も自動更新が可能)。

ただ、その機能を使おうとすると、次のようなエラーが表示される場合がある。

利用可能なアップデートデータを取得できません - 不明なcURLエラーです。  

その場合には、Moodleのサイトの電子証明書が必要となる。 詳しくはMoodle Docのこちらこちらに記載があるが、簡単にいうと、 「http://curl.haxx.se/ca/cacert.pem」からダウンロードした、 電子証明書のファイル「cacert.pem」を、 データディレクトリ内に「moodleorgca.crt」というファイル名で保存しておく。

今回は2.4へのアップグレードの段階で、上記ファイルを用意した。

MyISAMからInnoDBへの変換

MoodleでMySQLを利用する上で、 Moodle2.Xベースからは、データベース形式としてInnoDBを推奨しており、 アップグレードをしているときでも、そのようなメッセージが表示される。

そこで、2.6に移行したのを機に、 データベースのフォーマットも変換した。 Moodleにはスクリプトが用意されており、 次のURLから動作させることができる。

http://hogehoge/moodle/admin/tool/innodb/

実際には1つだけテーブルが変換できなかったので、 そのテーブルだけ phpMyAdmin で変換した。

cronの設定

5分おきにMoodleにアクセスし統計情報を処理するスクリプトを作る。Moodle DocにもUnixでのcronの設定について記述がある。

# vi /etc/cron.hourly/moodle-chk.sh

内容は、例えば次のような感じ。

for a in 0 5 10 15 20 25 30 35 40 45 50 55; do
        wget -q -O /dev/null http://localhost/moodle/admin/cron.php
        sleep 300
done

最後に、ファイルのパーミッションを設定。

# chmod 755 /etc/cron.hourly/moodle-chk.sh

参考URL


リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Tue, 01 Apr 2014 18:28:26 JST (3671d)