Moodle 1.5/EUC-JP/Postgres をバージョンアップする方法(作業内容編)
以下の内容は僕専用の備忘録です。掲載直後はバグ、書き間違い、
忘れていることも多数あると思いますので、わかっている人以外は真似をしないでください。
また、間違いなどがありましたら、御指摘大大大大大歓迎です。
経緯などは前の記事に記しました。ここでは作業内容をまとめておきます。
●移行直前の状況
- FreeBSD-5 STABLE
- Apache 2.2
- Postgresql-8.2 (DB は 7.4 のファイルが無理矢理突っ込まれている。)
- DBは、psql -l でみると、SQL_ASCII で構築されている。
- PHP-5.x
- Moodle 1.5.x (EUC-JP)
●1.5→1.6 の作業手順
- 別のホストに Moodle 1.6 を入れる準備をする。
- FreeBSD
- Postgresql-8.1.x を入れる。 8.2以上では Moodle がエラーを出すので注意。
# su
# cd /usr/ports/databases/postgresql81-server
# make install
# mkdir -p /home/DB/data
# chown -R pgsql /home/DB
# echo postgresql_class=\"postgres\" >> /etc/rc.conf
# echo postgresql_data=\"/home/DB/data\" >> /etc/rc.conf
# echo postgresql_initdb_flags=\"--encoding=UTF8 --lc-collate=C \" >> /etc/rc.conf
# echo postgresql_enable=\"YES\" >> /etc/rc.conf
# /usr/local/etc/rc.d/postgresql initdb
- DBの雛型を構築する。p-a-s-u-w-a-d-o の部分は、自分で好きなものにしてください。
# su - pgsql
% psql -c "create user moodleuser createdb;" template1
% psql -c "alter user moodleuser password 'p-a-s-u-w-a-d-o';" template1
% psql -c "create database moodle16;" -U moodleuser template1
% psql -c "alter user moodleuser nocreatedb;" template1
% psql -l (←確認コマンド)
% exit
- 次に Apache 2.2 と PHP-5.x さらに php5-extensions を入れる。Postgres の前に入っていた場合は、 make config をして作りなおして、 Postgres 用のモジュールを追加しておく。
- 作業用に nkf, iconv, convmv の3つをすべて入れておく。
- Moodle 1.6 を入れる
- http://download.moodle.org/ から Moodle 1.6をダウンロード。
- こんな感じで解く。(以下では /home/WWW がwebサイトのルートになると仮定しています。)また moodle-16dataというディレクトリを準備しておく。
# cd /home/WWW/WORK
# tar xzfvBp /DOKOKA/moodle-weekly-16.tgz
# mv moodle moodle-16
# chown -R www moodle-16
# mv moodle-16 ..
# cd /home/MOODLEDATA
# mkdir moodle-16data
# chown www moodle-16data
- http:///web.site-no-URL.example.jp/moodle-16/ にアクセスして、設定する。
- 途中の設定:データディレクトリ(/home/MOODLEDATA/moodle-16data)、DBの名称(moodle16)、DBユーザー名(moodleuser)、DB接続パスワード(p-a-s-u-w-a-d-o)には気をつける。
- インストールが済んだら、最初に一度だけフロントページでバックアップ作業をして、作業用ディレクトリを作っておく。
- Moodle 1.5からコースをすべて移行させる
- Moodle 1.5でコースごとにバックアップを作る。
- (★) (a) Moodle 1.6の 作業用ディレクトリに、さきほどのバックアップを解く。
- (b) moodle.xml の文字コードを直す
- (c) 非ASCII文字のファイル名をもつファイルの名前を変更する。
- (d) 再び zip に固める。
- (e) 固めたファイルを Moodle 1.6 の moodledata/1/backupdata/ におく。(★★)
- Moodle1.6の「リストア」メニューを利用して、さきほどのバックアップをリストアする。
(うまくいかないときは、ログのリストアなどいくつかのリストアをあきらめてください。) - この作業を、移行させたいすべてのコースについて繰り返す。
以下、★のあと★★までのコマンドヒストリー。
a# mkdir ~/WORK
a# cd WORK
a# unzip dokokano-dir/backup-hogehoge.zip
b# mv moodle.xml ../moodle.xml.latin1eucjp
b# cat ../moodle.xml.latin1eucjp\
| iconv -f UTF-8 -t latin1\
| nkf -x -I -m0 -e\
| iconv -f EUC-JP -t UTF-8\
> moodle.xml
c# convmv -r -f latin1 -t utf-8 .
(↑で作業内容を確認してから、これ↓で反映)
c# convmv -r -f latin1 -t utf-8 . --notest
d# zip -r ../backup-hogenew.zip .
d# rm -fr c* g* m* u* ../moodle.xml.latin1eucjp
e# cd /home/MOODLEDATA/moodle-16data/1/backupdata
e# mv ~/backup-hogenew.zip .
●1.6→1.9の作業手順
- Moodle 1.9 用のDBを、1.6用のDBの複製で作る。(元のDBが移行中に壊れるとヤバイので…)
# su - pgsql
% pg_dump -Ft moodle16 > moodle16.tar
% psql -c "alter user moodleuser createdb;" template1
% psql -c "create database moodle19 with template template0;" -U moodleuser template1
% psql -l
% psql -c "alter user moodleuser nocreatedb;" template1
% pg_restore -d moodle19 < moodle16.tar
# exit
- Moodle 1.9 を用意する。
- http://download.moodle.org/ から Moodle 1.9をダウンロード。
- こんな感じで解く。また moodle-19dataというディレクトリを準備し、1.6の内容を複製しておく。
# cd /home/WWW/WORK
# tar xzfvBp /DOKOKA/moodle-weekly-19.tgz
# mv moodle moodle-19
# chown -R www moodle-19
# mv moodle-19 ..
# cd /home/MOODLEDATA
# mkdir moodle-19data
# chown www moodle-19data
# rsync -avH ./moodle-16data/ ./moodle19data/
- http:///web.site-no-URL.example.jp/moodle-19/ にアクセスして、設定する。
この際に、データディレクトリや、DB名は、新しいものを指定する。 - 教師用フォーラムなども含めてほぼ全部が変換・移行される。
| 固定リンク
この記事へのコメントは終了しました。
コメント