« Moodle 1.5/EUC-JP/Postgres をバージョンアップする方法(経緯と奮闘編) | トップページ | FreeBSD に Moodle 1.9 を新規インストール »

2009年1月19日 (月)

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 の作業手順
  1. 別のホストに 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つをすべて入れておく。
  2. 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)には気をつける。
    • インストールが済んだら、最初に一度だけフロントページでバックアップ作業をして、作業用ディレクトリを作っておく。
  3. 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の作業手順
  1. 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
  2. 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名は、新しいものを指定する。
    • 教師用フォーラムなども含めてほぼ全部が変換・移行される。

|

« Moodle 1.5/EUC-JP/Postgres をバージョンアップする方法(経緯と奮闘編) | トップページ | FreeBSD に Moodle 1.9 を新規インストール »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Moodle 1.5/EUC-JP/Postgres をバージョンアップする方法(作業内容編):

« Moodle 1.5/EUC-JP/Postgres をバージョンアップする方法(経緯と奮闘編) | トップページ | FreeBSD に Moodle 1.9 を新規インストール »