version 1.0.xからversion 1.1.xへの移行方法


はじめに

ここでは、SKIP1.0系(1.0.x)から、1.1系(1.1.x)への移行方法について説明します。
移行の方針は、
  1. 稼動している1.0系環境とは、別に1.1系環境を作ります
  2. 1.0系環境から1.1系環境へと、反映します。
  3. 移行するデータは 、基本コピーもしくは手動での変更で行うため、1.0系環境を残すことができます(※MySQLデータベースを除く)
とします。

バックアップ

  1. 稼働している1.0系のWebサーバを停止します。
  2. MySQLデータベースは、必ずバックアップを取ってください。
  3. ※1.0系環境で運用しているモードとconfig/database.ymlの設定より、バックアップ対象を確認してください。
  4. 共有ファイルおよびブログ/掲示板画像ファイルのバックアップを取得してください。
    ※config/initial_settings.ymlの設定より、共有ファイルおよびブログ/掲示板画像ファイルのバックアップ対象を確認してください。

事前準備

  1. 公式サイトから skip-1.1.0.tar.gzをダウンロードします。
  2. 1.0系とは別のディレクトリに解凍しておきます。これを1.1系環境とします。
  3. 1.1系環境のRAILS_ROOTで、作業を行うものとします。
  4. 必要なgemsをインストールします。(※既にインストール済みの場合は不要)
             $ sudo gem install gettext -v1.93.0
             $ sudo gem install json -v1.1.4
             $ sudo gem install fastercsv
             $ sudo gem install ruby-openid
             $ sudo gem install rails --version 2.1.2
             $ sudo gem install mysql


設定ファイルを移行する


初期設定ファイルをコピー

initial_settings.ymlを、サンプルからコピーして作成します。

    $ cp config/initial_settings.yml.sample config/initial_settings.yml

common_menus.ymlを、サンプルからコピーして作成します。

    $ cp config/common_menus.yml.sample config/common_menus.yml

初期設定ファイルを変更する

1.0系での設定ファイルより、1.1系での設定ファイルに設定値を反映します。

1.1系で新規に追加・変更された項目は、以下の通りです。必要に応じて設定を行ってください。
  • ファイルの保存先・バッチのログ出力先に関する設定
    • image_path: 掲示板の添付画像が共有ファイルに統合されたので設定としてはなくなった(データ移行の際に値の設定が必要)
    • cache_path: 全文検索用cacheファイルの出力先
  • アカウントに関する設定
    • user_code_minimum_length: ユーザ名の最小文字数を指定
  • 全文検索に関する設定
    • cache: キャッシュに関する設定
  • OpenID Providerの動作に関する設定(利用する場合はこちらを参考に設定してください。)
    • 利用しない場合は、以下のように設定してください。
    • white_listの下の1行を削除して、white_list:の右に1文字スペースを空けて[](角括弧)を入力してください。
  white_list: []
  ax_props:
    -
      - email
      - http://axschema.org/contact/email
      - email
  • 連携アプリに関する設定
    ※設定は初期値のままで結構です。

ブログ/掲示版の添付画像を移行する

ブログ/掲示版の添付画像をコピーします。
例えば、SKIP1.0系およびSKIP1.1系のデフォルト設定では以下のようになります。

    $ cp -R #{SKIP1.0系のRAILS_ROOT}/tmp/image_file_path #{SKIP1.1系のRAILS_ROOT}/tmp/image_file_path

initial_settings.ymlで、ブログ/掲示板の添付画像の保存先を示すimage_pathの設定を移行先のパスに変更し、
追記してください。この設定がない場合データ移行が行なわれません。

  share_file_path: tmp/share_file_path                              # 共有ファイルの保存ディレクトリ
  image_path: tmp/image_file_path        # 移行先のディレクトリを設定する
  batch_log_path:                                                   # バッチ実行時のログ出力先(指定がなければ log/batch.log)

共有ファイルを移行する

共有ファイルをコピーします。
例えば、SKIP1.0系およびSKIP1.1系のデフォルト設定では以下のようになります。

    $ cp -R #{SKIP1.0系のRAILS_ROOT}/tmp/share_file_path #{SKIP1.1系のRAILS_ROOT}/tmp/share_file_path

データベースを移行する

DB設定ファイルをコピー

SKIP1.0系のディレクトリから、DBの設定ファイルをコピーします(変更は不要です)。

    $ cp #{SKIP 1.0系のインストール先}/config/database.yml  #{SKIP1.1系のRAILS_ROOT}/config/database.yml

テーブル定義を変更する

コマンド実行する前に、MySQLのバックアップと共有ファイル、およびブログ/掲示板画像ファイルのバックアップが取得されていることを再度確認して下さい。
今回のdb:migrateの最中にブログ/掲示版画像ファイルを物理的に共有ファイルへ移動、及び共有ファイルテーブルへの登録を行います。万が一途中で失敗しても切り戻せるように確実にバックアップを取得しておいて下さい。

    $ RAILS_ENV=production rake db:migrate

データ移行の確認

マイグレーションが正常に終了後、移行に失敗しているブログ/掲示版画像ファイルがないか確認します。
#{SKIP1.1系のRAILS_ROOT}/tmp/image_file_path
/board_entries/(user_id)/ 以下にファイルが存在しないことを確認して下さい。存在しなければ正常に移行出来ています。
ファイルが存在している場合はデータ不整合により移行に失敗しているブログ/掲示版画像ファイルが存在します。log/production.logを開き、"Failure"という文字列で検索し、原因を調査して下さい。
移行に失敗しているブログ/掲示版画像ファイルが存在する場合、例えば以下のようなログが出力されます。


マイグレーションでの移行に失敗したブログ/掲示版画像ファイルは必要に応じて所有者に確認するなどしてバージョンアップ後に手動でアップロードする必要があるかもしれません。

バッチの設定を変更する

SKIP1.0系から変更があったバッチは以下の通りです。
  • batch_delete_cache.rb (新規追加)
    不要になったキャッシュファイルを削除します。定期的に実行するようにしてください。
    ※全文検索機能を利用している場合のみ設定してください。

    0 7 * * 7 ruby [RAILS_ROOT]/lib/batch_delete_cache.rb

  • batch_make_cache.rb (仕様変更)
    キャッシュファイルを生成します。実行時の引数が変更になり、cache_pathを指定する必要がなくなりました。
    ※全文検索機能を利用している場合のみ設定してください。

    10 7 * * 7 ruby [RAILS_ROOT]/lib/batch_make_cache.rb -all
    0,15,30,45 * * * ruby [RAILS_ROOT]/lib/batch_make_cache.rb


  • batch_send_cleaning_notification.rb (新規追加)
    クリーニング依頼メールを運営担当者宛に送信します。毎月実行するようにしてください。

    0 10 1 * * ruby [RAILS_ROOT]/lib/batch_send_cleaning_notification.rb

動作確認

  • 1.0系で使っていたユーザで、ログインし、マイページが表示できる
  • SKIPにログインして、移行前の添付画像付き記事が移行前と同様に表示されている
この2点が確認できれば、移行は一旦完了です。
あとは、運用しながら、設定・管理画面から変更できます。

その他カスタマイズした部分を移行する

画像設定、説明文設定の移行

設定・管理画面にて、画像設定および説明文設定の変更をしている場合は、カスタム・ディレクトリをコピーします。

    $ cp -r #{SKIP 1.0系のインストール先}/public/custom/*  #{SKIP1.1系のRAILS_ROOT}/public/custom/

faviconの移行

ファビコン画像をカスタマイズしている場合は、favicon.icoをコピーします。

    $ cp #{SKIP 1.0系のインストール先}/public/favicon.ico  #{SKIP1.1系のRAILS_ROOT}/public/custom/favicon.ico


全文検索のメタファイルを再生成する

全文検索を利用している場合は、メタファイルの形式が変更になっているため再生成が必要です。

   $ ruby #{SKIP1.1系のRAILS_ROOT}/lib/batch_make_cache.rb -all

再生成を実施していない場合は、全文検索の検索結果のタイトルが文字化けのように表示されます。