ownCloudから始まったレンタルサーバの再活用。
昔ちょっと書いたりしていたBlogをもう一度やってみようかと思い至る。他にも何か面白いものがあれば挑戦してみても良いかも。なにしろ、100GBのサーバが… いやちょっと待て。
新しいアプリを入れようと思うとMySQLのバージョンが必ずネックになる。ownCloudなら利用状況的にデータベースアクセスは少ないはずだが、他のアプリをSQLiteで運用するのは得策とは思えない。
ここはやはり、MySQLのバージョンアップしか。
必要なのは準備と勇気。
もうちょっと真面目に言うと、事前調査とトラぶった時の許容範囲を決めておくこと。
前提条件:
- レンタルサーバ上でできるのは、MySQL4の削除(利用中止)とMySQL5の新規設置(利用開始)。重複した運用は不可能。
- MySQL4上のデータはEUC-JP形式。このままが望ましいが、最悪はテキストファイルをすべてUTF-8に変換。
- 移行対象データはXoopsCube分のみ。その他については諦めても良い。
そう、XoopsCube以外だと、MovableTypeのデータは残っているものの、コンテンツは固定化しているし、コメントもトラックバックも受け付けないようにしているから削除してしまってOK。MovableTypeのバージョンも古くてセキュリティ問題があるらしいから、いっそcgi本体も全削除してしまうことにする。
さて、互換性問題を確認していこう。
まず文字コードだが、レンタルサーバでMySQL5.5のデータベース新規作成ではEUC-JPを指定することが可能だ。MySQL5.1ではUTF-8がメインになっていて、EUC-JPを扱おうとすると問題が発生する、てなことを聞いていたんだけれど、これならいけるんじゃないかと妙に自信が高まる。
もし文字コードを変更しなければならないとなると対策は2つに一つ。
- フルにUTF-8で動くようにする。XoopsCubeのlanguageファイルを補完する必要が恐らくある。
- データベースとのやり取り部分をハックし、入出力直前に文字コード変換を入れる。直接データベースを叩くようなコーディング部分があったりすると結構なことになる。
次にSQLの構文だが、「TYPE = MyISAM」を「ENGINE = MyISAM」に変更する必要があるとのこと。これはテーブル作成時のみに影響するので、一回対応すれば良いわけだ。
では旧MySQLからデータをダンプすることとしよう。これもいくつか方法がある。
- サーバにログインしてmysqldumpを使う。これだと全テーブルが出力されてしまい、XoopsCube分を切り出すのが面倒だ。バックアップ用としてダンプはするものの、移行用に使うのはできれば避けたい。
- phpMyAdminならWeb画面からの操作ができる。XoopsCube用のテーブルを選択するのがやや面倒臭い。それでもやってみると、データベースが大き過ぎるのか見た目で変なものが落ちてきた。
- XoopsCube用のモジュールMyX_BackUpを使う。自作モジュールで動作には自信があるものの、タイムアウトになる心配はある。実際にはタイムアウトは起きず、結局これを採用とした。
ダンプしたSQL文をエディタにかけ、「TYPE = MyISAM」を「ENGINE = MyISAM」に置換する。
MyX_BackUpの場合はモジュール別にファイルができるのでやや面倒だが(作者が言うな)、エディタで全ファイルを開き、一気にすべて置換して出来上がり。
そしてここで最大の勇気を発揮し、コントロールパネルからMySQL4の旧データベースを削除する。間髪を入れず、MySQL5.5のデータベースをEUC-JPを指定して新規作成。XoopsCubeの設定ファイルである「mainfile.php」のデータベース接続用パラメータを編集。
いよいよ新規データベースへのデータ反映、インポートの段だ。
ownCloudをインストールした際にPHPの別バージョンを動くようにしていたところをデフォルトに戻す。これをやらないとMySQL5.5には接続できないのだから、ここは手順として事前に認識済み。そしてphpMyAdminでインポートと思いきや、ファイルサイズに上限があったり、色々とある設定項目がよく解らない。
だったら、MyX_BackUpでやった方が内容を知っているだけ何かあっても対処し易いだろう。取り敢えずXoopsCubeのデータは何もない状態なので、まずはMyX_BackUpの管理画面に入れれば良いとしてシステム関連のSQLをアップしておく。
さあ、XoopsCubeにログインできるかな? できる。
管理画面に入れるかな? 入れる。
FTPでしかる場所にSQLファイルを転送しておき、MyX_BackUpで「復元…」を実行する。順調に仕上がったようでここまで問題無し。
そしてここで問題発生。
XoopsCubeがエラーを吐きまくる。思考錯誤の末、XoopsCube用にPHP5.3バイナリを置くということで対応。PHPバージョンは5.2(旧システム)→5.4(稼働せず)→5.3という馬鹿みたいな変遷をとげた。
管理画面辺りで微妙に動作がおかしい気もしなくもないが、十分許容範囲内。まずはこれで良しとしよう。