作者:上村崇 フリーランスのIT系エンジニア
twitter:@uemera facebook:uemura

xpwikiをEUCからUTF8環境へ移行した [#xoopscube]


 

XOOPSで作っている野球チーム「神戸グフ」のホームページ環境を、EUCからUTF8に移行しました。

以前、このtoyao.netもEUCからUTF8環境に移行したことがあったので、その手順をもとに移行しました。

あのときはxpwikiで書いたページがそんなに多くなかったので、xpwikiの移行については文章を手で文字コード変換して新しくページを登録しなおすなどしましたが、今回の野球のホームページはxpwikiで作ったページが大量にあるので、とても手作業で移行できません。

 

そこでなんとかツールなどを駆使して自動で変換して移行することを試みました。

でも、あまり資料ないですね… 仕方がないので自分で試行錯誤して移行した手順を残しておきます。

 

xpwiki自体は、EUCにもUTF8にも対応しています。ですので、モジュールの一般設定などの管理項目は、通常のXOOPSのEUC→UTF8移行手順で解決できます。

問題なのはwikiで書かれた各ページの移行です。

 

  • wikiのコンテンツはDBに格納されておらず、ページはファイル単位で管理されているので、
       移行時にはファイルの中身をすべてUTF8に変換する必要がある。
  • 上記wiki用のファイルにつけられたファイル名は、EUC文字列をエンコードした記号だらけのファイル名であり、
       このファイル名をUTF8文字列からエンコードしたファイル名に変更しないといけない 。
  • ファイル名はxpwikiのテーブルにて管理されているので、テーブルデータも洗い替えなければならない。

このような超めんどくさい事情があるので、移行がかなり面倒です。

手順が無い中で調べながらやったのもあり、私自身も移行にかなりの時間がかかりました。

 

 

以下、手順です。

環境:debian linux / xoops cube 2.1.7 / xpwiki 4.02.26 / PukiWiki Plus rev1726

 

image

 

1. pukiwiki plusのサイトから、UTF8コンバートツールをGETする

   data2utf8.php というEUC→UTF8コンバート用のスクリプトがPukiWiki Plusのパッケージに同梱されています。

   このスクリプトをxpwikiでも利用できます。

   スクリプトの使い方はここを参照してください。

   ツールを実行させると、データが上書きされてしまいますので、EUC時点でのファイル群をバックアップしておくことをお勧めします。

   ツールの説明に、「DATA_HOMEの定義」とか書いてありますが、要は変換対象のデータがある場所を適切に設定してあげる

   必要があるということでしょう。

 

2. data2utf8.php を実行する

    コマンドラインから実行すれば良いでしょう。ブラウザから実行させることもできるようですが、その際はディレクトリの書込み権限などが

    適切に設定されている必要があります。

    このツールを実行することで、移行対象以下のファイル群のファイル名やファイルの中身がUTF-8に置き換わります。

 

3. 移行先環境でxpwikiを新規インストールする

    移行元のxpwiki環境をそのまま使いまわすことも出来るかも知れませんが、テーブルにEUC環境時代のファイル名とかデータが

    残ってしまうのではないかと思うので、この際新しくxpwikiを入れなおした方がいいと思います。

    環境設定はすべてリセットされてしまうので、必要に応じて書き留めておきます。

 

4. 新xpwiki環境に、UTF8コンバートしたフォルダ群を上書きコピーする

    移行対象は上記の図のとおり、attach/, backup/, cache/, counter/, diff/, trackback/, wiki/ ですが、

    最新のデータさえあったらいい、参照カウント数とかもゼロにリセットされていいということなら、attach/ と wiki/ の2つだけで良い

    みたいです。

    移行したフォルダ/ファイルは、apacheユーザで読み書き可能なように、ディレクトリは777,ファイルは666とかにしとく必要あり。

 

5. xpwiki管理メニューで「データベースシンクロ」を実行する

    エラーなく完了すればOKです。移行したファイル群がテーブルに登録され、wikiページの一覧から見られるようになります。

    もしエラーが出るようなら、フォルダ/ファイル権限がおかしくないかとか疑ってみてください。

    一度に移行するのではなく、移行対象のファイルをちびちびコピーしてはシンクロする、という方法で問題のファイルを調べることも

    できます。

    なお、データ移行を行う前の段階で、xpwikiインストール直後にシンクロした場合は、デフォルトで用意さているページ(ヘルプなど)が

    自動的にwiki/の下とかに生成されるようです。

    この状態から移行データをコピーすると、シンクロで作ったファイルが上書きされてしまいますので、場合によっては不具合が出る

    かも知れません。

    私の場合は、移行データのうち、自分で新規作成したページだけを抽出して移行しました。

 

 

ちなみに、日本語の添付ファイル名は上記の移行をしても文字化けしてしまいました。

なんかうまい方法があるのかも知れませんが、そんなにたくさんの数はなかったので、手で書き換えて対応しました。

 

 

<参考>

Re: xpWikiの、正しい御引越しの方法 – xpWiki – フォーラム – XOOPSマニア
http://xoops.hypweb.net/modules/forum/index.php?post_id=8374

 

 

ブログもwordpressMe 0.50 から XpressME Integration Kit 2.2.1に移行しました。

こちらはデータをいったんMovable Type形式でエクスポートしてからインポートするという手順で簡単に移行できました。

<参考>

Xoops Users Group Japan – WordPress ME (xoops版) → MTエクスポート (Re: WordPress ME 管理者権限・・)
http://www.xugj.org/modules/QandA/index.php?post_id=5561

関連記事


WebScoreRevolutin V2.00リリース
月日が経つのは早いものですねぇ。半年ぶりのリリースとなってしまいました。   本当は今年のシーズンが始まる4月までには出したかったのですけど、予想外に(!?)常勤の仕事が決まるなどして、開発する時間が減ってしま …

バックアップは大事です!レンタルサーバーのバックアップとってますか?
  とあるお客様から、レンタルサーバーのバックアップ(DBとディレクトリ)の要件があったので、サーバー上で動くPerlスクリプトを作って定時にバックアップする仕組みを作りました。   するとホームペー …

XOOPSのモジュールを複製するにあたっての個人的なまとめ
拙作の野球スコアブックモジュールWebScoreRevolutionはV1.31まではシングルモジュールとしてのみ動作し、モジュールの複製には対応しておりませんでした。   しかしこのたび、モジュール複製可能な …

XPressME Integration Kit Ver2.2.0リリース
  XOOPSのWodPressモジュールXPressMEのV2.2.0がリリースされました。 早速アップデートし、WordPressも2.9.0にバージョンアップしました。   先月、WP Supe …

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です