b4log

ほかにはない情報が、ここにはある(かも)。

サーバの引っ越し完了

| 6件のコメント

今まで借りていた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は退化もしていませんが進化もしていない状況です。

  • 長一郎

    すごいなぁ。
    特定ソフト以外のPCのテクニカルな部分て、ちゃんとやった事無い様な気がしてきました。難しそう、、お疲れ様でした。
    来年、引っ越しを考えていて、ネット環境とかとか色々考え中だったのでタイムリーでした。

    またね●
    今度お酒しましょうよ。

  • 森井ゴンザレス

    [q1]正確には、「一番最初に表示した時は情報が出るけど、リロードすると表示されない」という状態です。[/q1]

    データベースへの情報の書き込みもしくは情報の読み取りに失敗しているようですね。文字コードが原因かも知れないです。

    このとき何かエラーメッセージは表示されますか? エラーメッセージを教えてもらえれば解決策をご呈示できるかも知れません。

  • To : 長一郎

    物理的に住所を引っ越すのは、自分が10年前に団地からマンションに引っ越してもうこりごり :-!
    というかネット上で引っ越すのも結構苦労ものだね

    久しく合ってないから、また飲みたいね?

    To : 森井ゴンザレス

    たった今試してみたところ、最初の読み込みでは問題なかったようなので、データベースからの読み込みで何か不具合が起きているのかもしれません。
    本文にエラー文を追記したので、もし解決策の糸口になれば幸いです。

  • 森井ゴンザレス

    僕自身もXREA内でサーバーを移したときに似たような経験をしました。おそらく p_log_isbn テーブルの内容が文字化けしているのだと思います。(phpMyAdmin で p_log_isbn を覗いてみると原因がはっきりすると思います。)

    結局、DB の文字コードと P_BLOG で処理を行うときの文字コードがずれているために問題が発生していたようでした。MySQL を5系に変えてからは DB も P_BLOG 本体も UTF-8 運用することにして問題を回避しました。

    これで解決するかどうかは自信がないのですが、plg_isbn.inc.php 内の mysql_query() が行われる場所にも

    [pre]mysql_query(“SET NAMES eucjpms”);[/pre]

    と記述し、一旦 p_log_isbn の内容を空にしてみるとうまく表示されるようになるかも知れません。

  • To : 森井ゴンザレス

    うーむ、照合順序を「ujis_japanese_ci」から「utf8_general」に変えたり、

    if (!$res = mysql_query($sql)) {
    mysql_query(“SET NAMES eucjpms”);

    と付け加えたり、

    if (!$res = mysql_query(“SET NAMES eucjpms”, $sql)) {

    としたりなど、いろいろ試しましたが上手く行きません :-!

    http://b4t.jp/p_blog/article.php?id=645
    この↑記事ではちゃんと(エラーが出るけど)表示される(情報が日本語を含まないため?)ので、おそらく文字コードが原因であることは確かなのですが・・・

  • Pingback: b4log()

Pingback / Trackback

  • b4log より:

    サーバの再引っ越し完了

    約1年前にPHPとMySQLのバージョンを上げるためにサーバを借り換えたのですが、今年の10月頃になってから「500 Internal Server Error」と出る機会が多くなってきました。この…

この記事のトラックバック用URL