Mindtouch Deki wiki の環境移行とバージョンアップ (8.08 -> 9.02)

Written by @dr_taka_n at 2009/05/11 22:58 [, ]

忘れないうちにメモを残しておく。

にて Lyons のインストールのメモを書いていたのだが、これに続いて、旧環境 v.8.08 からの移行作業も行っていた。 その時のメモになる。

Mindtouch Deki wiki v.8.08 の環境移行と、v.9.02 へのバージョンアップを合わせて行った。 環境移行には、Mindtouch Deki の Web/App サーバの別サーバへの移行と DB の別サーバへの移行も含んでいる。

本来であれば、環境移行とバージョンアップは別で行いたかったのだが、諸々の理由で同時実施となった。。

この手順の前提は、v.9.02 をクリーンインストールを終えていることになる。v.9.02 のインストールについては、上記のインストール時のメモを参照。

移行作業

以下の手順で行っている。

  1. 旧環境のバックアップ
    • 添付ファイル
    • 設定ファイル
    • DB 内のデータ
  2. 旧環境バックアップファイルの新環境への移行
    • 添付ファイル
    • 設定ファイル
      結局、特に特別な設定を行っていた訳ではなかったので、新環境にクリーンインストールされた環境をそのまま使った。
    • DB 内のデータ

1. 旧環境のバックアップ

旧環境における作業。

添付ファイル

Mindtouch Deki Wiki にてアップロードされた添付ファイルのバックアップする。

# mkdir /tmp/deki_backup
# cd /var/www/dekiwiki/attachments
# tar cvzpf /tmp/deki_backup/deki-attachments.tar.gz ./attachments
設定ファイル

dekiwiki サーバ、Web サーバで利用される設定ファイルのバックアップ。

# cp -p /var/www/dekiwiki/LocalSettings.php /tmp/deki_backup/
# cp -p /etc/dekiwiki/mindtouch.deki.startup.xml /tmp/deki_backup/
# cp -p /etc/dekiwiki/mindtouch.host.conf /tmp/deki_backup/
DB のデータ
# mysqldump -u<user> -p<password> wikidb > /tmp/deki_backup/wikidb.sql

もし、Mindtouch Deki wiki で使用する DB のデフォルトの名称を変えている場合には、 wikidb のところを該当する名称に置き換える。

バックアップを行なった /tmp/deki_backup 配下のファイルを新サーバに移しておく。

2. 旧環境バックアップファイルの新環境への移行

ここからは、新環境のサーバでの作業。

添付ファイル

旧環境でバックアップしたファイルを新環境にそのままコピーする。

# cd /tmp/deki_backup
# tar xvzpf deki-attachments.tar.gz -C /var/www/dekiwiki/
設定ファイル

特に特別な設定を行っていた訳ではなかったので、新環境にクリーンインストールされた環境をそのまま使った。

DB のデータ

v.9.02 のクリーンインストール時に生成されている wikidb を一旦削除し、生成し直す。

mysql> drop database wikidb;
Query OK, 33 rows affected (0.00 sec)

mysql> create database wikidb;
Query OK, 1 row affected (0.00 sec)

バックアップしていた旧環境の dump をロードする。

# mysql -u<user> -p<password> wikidb < wikidb.sql

DB の情報をアップデートしておく。

# cd /var/www/dekiwiki/maintenance/
# php update-db.php

以上となる。

移行、バージョンアップ後に発生した問題とその対応

以下の4点の問題があった。

  1. コンテンツの編集画面にて「Unknow toolbar item “MindTouchDeki_AttachImage”」が表示される
  2. Syntax Highlighter が正しく表示されない
  3. ページの移動機能が使用できない
  4. 検索にひっかからない

1. コンテンツの編集画面にて「Unknow toolbar item “MindTouchDeki_AttachImage”」が表示される

コンテンツ(ページ)の編集を行う際に、「Unknow toolbar item “MindTouchDeki_AttachImage”」というメッセージが表示され、 確かにツールバーの機能が全て使えない状態となっている。ファイルのアップロードもできない。

これは、Firefox のみでの事象だった。IE では問題ない。

issue として上がっていた。

対応方法としては、

  • Firefox のキャッシュをクリアする or
  • Mindtouch のコントロールパネル側での対応
    • [ツール]->[コントロールパネル]->[メンテナンス&履歴] の「キャッシュ管理」にて、「サーバ UI キャッシュのクラアー」の「即時クリア」を実施する。

となる。 後者のサーバ側での対応は完全ではないようで、サーバ側でキャッシュクリアしても問題が残っている場合には、クライアント側でキャッシュをクリアしろと言っている。

2. Syntax Highlighter が正しく表示されない

Syntax Highlighter を使用している箇所が表示エラーになる。また、Extension にも表示が出てこなくなっている。 [システム設定]->[エクステンション]で確認したところ、Syntax Highlighter のエクステンションが停止状態となっている。

dekiwiki サーバのログには、

2009-04-17 15:02:41,790 [4] WARN  MindTouch.Dream.DreamHostService - start: blueprint not found(http://scripts.mindtouch.com/syntax.xml)
2009-04-17 15:02:41,791 [5] ERROR DekiWikiService_default - StartService(Unable to start local service id '30' with SID 'http://scripts.mindtouch.com/syntax.xml' Error: 'unable to initialize service (blueprint not found)')
MindTouch.Dream.ResultAsyncException: async exception thrown ---> System.Exception: unable to initialize service (blueprint not found)
  at MindTouch.Dream.DreamService+<CreateServiceAsync_Helper>d__19.MoveNext () [0x00000]
  at MindTouch.Dream.Coroutine.Iterate_Helper (IEnumerator`1 coroutine, MindTouch.Dream.TaskBehavior behavior) [0x00000]
  at System.VoidClosure`2[System.Collections.Generic.IEnumerator`1[MindTouch.Dream.IYield],MindTouch.Dream.TaskBehavior].Closure () [0x00000]
  at MindTouch.Dream.Task.Execute (System.VoidHandler handler, MindTouch.Dream.TaskBehavior behavior) [0x00000] --- End of inner exception stack trace ---
  at MindTouch.Dream.ResultBase.Confirm () [0x00000]
  at MindTouch.Dream.ResultBase.Wait () [0x00000]
  at MindTouch.Dream.Result`1[MindTouch.Dream.Plug].Wait () [0x00000]
  at MindTouch.Dream.DreamService.CreateService (System.String path, System.String sid, MindTouch.Dream.XDoc config) [0x00000]
  at MindTouch.Deki.Logic.ServiceBL.StartService (MindTouch.Deki.ServiceBE service, Boolean forceRefresh, Boolean disableOnFailure, Boolean dekiStartup) [0x00000]
2009-04-17 15:02:41,792 [5] ERROR MindTouch.Dream.DreamFeatureChain - handler for POST:local://4a402562f57248d6a5f1e9b5bbd19a71/deki/site/services/30/start?dream.out.format=php&dream.in.host=10.xxx.xxx.xxx&dream.in.scheme=http&dream.in.origin=10.xxx.xxx.xxx failed (MindTouch.Deki.DekiWikiService!PostServiceIdStart)()
System.Exception: unable to initialize service (blueprint not found)
  at MindTouch.Dream.DreamService+<CreateServiceAsync_Helper>d__19.MoveNext () [0x00000]
  at MindTouch.Dream.Coroutine.Iterate_Helper (IEnumerator`1 coroutine, MindTouch.Dream.TaskBehavior behavior) [0x00000]
  at System.VoidClosure`2[System.Collections.Generic.IEnumerator`1[MindTouch.Dream.IYield],MindTouch.Dream.TaskBehavior].Closure () [0x00000]
  at MindTouch.Dream.Task.Execute (System.VoidHandler handler, MindTouch.Dream.TaskBehavior behavior) [0x00000]

というメッセージが残っている。

結論としては、Syntax Highlighter の方式が変わったらしい。。

We moved the Syntax service from the C# code into a DekiScript XML extension.

ということで。。

対応としては、

  • 停止となっている Syntax Highlighter を一旦削除する
  • [スクリプトの追加] で名前と一覧を追加する。

一覧には、

http://scripts.mindtouch.com/syntax.xml

を追加する。

Syntax Highlighter スクリプトの追加

FAQ にまとめられたようだ。

3. ページの移動機能が使用できない

ページの移動ができない。

これは、おそらく移行手順中の何らかの不手際によって発生したものではないかと思っている。 原因は、MySQL のストアドの呼び出しでエラーとなっている。 ストアドプロシージャはちゃんと登録されているのに、ストアドファンクションが何故か新環境にはない。。

幸いストアドは再構築するためのメンテナンスツールがあるので、それを利用して対応する。

  • /var/www/dekiwiki/maintenance

のツールを利用する。 環境変数をセットした後に、ストアドプロシージャとストアドファンクションの再構築を行う。

# cd /var/www/dekiwiki/maintenance
# db_wiki_user=wikiuser
# db_server=localhost
# db_name=wikidb
# db_admin_user=root
# db_admin_password=password
# MYSQL=`which mysql`
# cat archives/sprocs-*.sql | sed -e "s/{\$wgDBuser}/${db_wiki_user}/" -e "s/{\$wgDBserver}/${db_server}/" -e "s/{\$wgDBname}/${db_name}/" -e "s/{\$wgDBadminuser}/${db_admin_user}/" -e "s/{\$wgDBadminpassword}/${db_admin_password}/" | ${MYSQL} -u ${db_admin_user} -p${db_admin_password} -h ${db_server} ${db_name}
# cat archives/funcs-*.sql | sed -e "s/{\$wgDBuser}/${db_wiki_user}/" -e "s/{\$wgDBserver}/${db_server}/" -e "s/{\$wgDBname}/${db_name}/" -e "s/{\$wgDBadminuser}/${db_admin_user}/" -e "s/{\$wgDBadminpassword}/${db_admin_password}/" | ${MYSQL} -u ${db_admin_user} -p${db_admin_password} -h ${db_server} ${db_name}

上記手順は、

で確認できる。

4. 検索にひっかからない

旧環境から戻したデータが一切、検索にひっかからないのだが、 これは、トラブルではなく、やっておく必要がある作業をやっていなかっただけ。

インデックスの再構築が必要。

[ツール]->[コントロールパネル]->[メンテナンス&履歴]の[キャッシュ管理] のページにて、「検索インデックスの再構築」を行う。

以上4点をクリアし、問題なく稼動している。

blog comments powered by Disqus