サーバの引っ越し完了

今まで借りていたXREA+ のサーバはPHP4.4.8・MySQL4.0.26だったのですが、今まで使えていたISBN変換プラグインがAmazonの仕様変更のために動かなかくなったりして、前々からサーバの引っ越しを考えていたのですが、踏ん切りがつかず(というか面倒くさくて)そのままにしていました。

しかし、今受講している大学院の授業で自分のサーバを供出することになり、「じゃあPHP5とMySQL5.1系統の方が良いだろう」と考え、一念発起してサーバを借り換えることにしました。

サーバは変えた(s60.xrea.com→s312.xrea.com)けど、ドメインDNSの設定も同時に変更したので、アドレスとかに変更はありません。PHPのバージョンが4.4.8から5.2.5に、MySQLは4.0.26から5.1.22-rcに変わりました。問題なく読めて記事を書けるので、ひとまず成功。

MySQLは4.0以前と4.1以降に文字コードの扱いに差があるらしく、なんか大変らしい。PORTAL SHIT!さんの所では自信がない限りMySQL5.xにはバージョンアップしない方がいいとまで書いています。

それでもなんとか以下の記事を参考にして、移行するめどが立ちました。

というわけで、自分が移行した手順を以下に記しておきます。もしかしたら他の人の参考になるかも。

1. 旧サーバのファイルをそっくりダウンロード
2. そのファイルを新サーバへそっくりアップロード
3. 新サーバのファイルのアクセス権を調整

1.から2.までした後で気づいたのですが、XREAのサーバにはサーバ間コピーという便利な便利な機能があり、これを使えばローカルに一旦保存する手間が省けたようです。XREA同士で移動するだけなんだから、最初からこうしとけば良かった・・・。

ちなみに3.の作業は、主にwikiサイトのディレクトリに行いました。色んなファイルを誰でも編集可能にしなけりゃならんのに、アクセス権が「777(もしくは707)」じゃないのはおかしいでしょ。

4. P_BLOGのソースコードを編集

MySQLの文字化けに対処するため、P_BLOGのほうをいじります。

  • include/fnc_base.inc.php 63 行目
  • SETUP/contents/default.inc.php 235 行目
  • SETUP/contents/step3.inc.php 29行目
  • var/vars-sample-rss/SETUP/DB_INSTALL.php 65 行目

上4つのファイルの各場所(mysql_connectしている次の行です)に、以下の一文を追加します。

mysql_query("SET NAMES eucjpms");
5. 旧サーバのデータベースを「保存」

「保存」というのはXREA特有の名称なのかな?上のコマンドを実行すると、トップディレクトリに「mysql.dump」というファイルが生成されます。これがバックアップファイルというわけ。これを一旦ローカルにダウンロードします(1.?3.の手順と同じで、サーバ間コピーすればこの手間はいらないかも)。

6. 新サーバでデータベースを「復元」

mysql.dumpを新サーバにアップロードして、「復元」機能を用いると、データベースが元のように展開され、旧サーバと同じ環境になります。

・・・はずなのですが、どうも展開されない。PhpMyAdminで確認すると、どうも「p_anama」「p_bin」「p_bin_data」の3テーブルしか復元されてない。なんでやねん。

7. P_BLOGのSETUP画面へ

なんかここらへんでどうでも良くなって、P_BLOGの設定の方に移ってしまう。インストールの手順(今回はアップデート)は無事終了。

で、PhpMyAdminを再度確認すると、(付加機能であるISBNを除いた)9つのデータベースのテーブルがちゃんと作られている。でも中身は空っぽ(そりゃそうだ)。どうしよう。

8. 旧サーバのデータベースのテーブルをエクスポート

ここで、なんか面倒くさいけどテーブル毎にデータベースのバックアップをとることに。PhpMyAdminから任意のテーブルを指定して「エクスポート」する。ここではzip形式で圧縮、EUCエンコードへ変換を忘れずに。

9. 新サーバへデータベースのテーブルをインポート

前述のバックアップを、テーブル毎に復元していく。ファイルの文字セットは eucjpms にセット。こっちではエンコーディングの変換は行わなかったはず。

「なんかインポートできないんだけど」的なエラーが出たら、多分元々のテーブルに既にデータが存在しているのが原因なので、「空にする」で中身を空っぽにしてからインポートする。逆にテーブルさえ無いとインポートする場所が無いので、そんな場合は新たにテーブルを生成してそのなかにインポートする。

異常の手順を踏んでデータベースを移行しました。なお、これはあくまでB4たかしが行った手順を示しただけであって、他の人の参考にするにはちょっと不安です。あくまで自己責任で行ってください。『この記事を参考にしたけど上手く行かねーぞ!』と文句言われても困ります。こちらからは「頑張れ!」としか声をかけられません。

さて、こんな苦労をかけて移行したわけですが、結局のところISBN変換プラグインは正常に働いてくれません。エラーばっかり出てしまう・・・。正確には、「一番最初に表示した時は情報が出るけど、リロードすると表示されない」という状態です。

最初はエラーが出力されず、本文に挿入した位置に、こんな風に普通に表示される。これは(プラグイン制作者の、そして執筆者=B4たかし)意図取りだ:


(お徳用ボックス) サントリー 天然水南アルプス 500ml×24本

  • 発売日 :
  • メーカー : サントリー
  • 評価 :
  • 価格 : ¥ 2,832

あれ、一昨日はもっと冒頭にエラーがずらっと並んでいたんだけれど、今試したら普通だ。

そしてリロードしてみると、冒頭にエラーが出力され、amazonへのリンクが全く出ない。なぜだっ!


Notice: unserialize() [function.unserialize]: Error at offset 10672 of 11313 bytes in /virtual/b4takashi/public_html/p_blog/include/user_include/plugins/plg_isbn.inc.php on line 118

Notice: Undefined variable: debug in /virtual/b4takashi/public_html/p_blog/include/user_include/plugins/plg_isbn.inc.php on line 120

Warning: Invalid argument supplied for foreach() in /virtual/b4takashi/public_html/p_blog/include/user_include/plugins/plg_isbn.inc.php on line 265

文字化けとか表示が崩れる、もしくは最初っから何にも画面に出ないならわかるんだけど、なぜ最初に表示させた時だけ現れるんだ・・・。Accesskey IDとSecret Access Keyも入力したのに。ここでも正常に動作しているようだから、こっちのファイルの設定がおかしいのかなあ・・・?どこが行けないって言うんだ。

そんなわけで、現在のところこのb4logは退化もしていませんが進化もしていない状況です。