« | Home | »

2012.02.17

Movabletypeを別サーバーに移動/コピー

Movable typeの最新版は、MT-5.xだが、今でも3.35を使っている。
理由は、MT-3.xの時代に散々カスタマイズを施し、TextのFormatterなどもこのブログの記事のようにコマンドラインの記述に都合が良いように書き直して、Pluginとして使っているからである。さらには、数人の友人がブログページを開いているので、MMIが変わると戸惑うことを恐れるからである。
さて、自宅内で運用しているサーバーが壊れたことを考え、別の予備サーバーを立ち上げ色々なサービスの設定を行っているが、ブログを移設するのに手間取ったので、下記にその顛末を書いておく。

1. ディレクトリーのコピー

(1) mt.cgiの入っているディレクトリーならびにブログの公開ディレクトリーをrsyncなどを使って全て
予備サーバーにコピーする。
(2) CGIPathの変更
mt-config.cgiに書かれているCGIPathを予備サーバーのURLに変更する。

例: CGIPath http://abc.myhome.jp  → CGIPath http://xyz.myhome.jp

2. 元のサーバーでブログのDBをdump

# mysqldump --default-character-set=binary -u USER -pPASS BLOGDB > abcblogdb

USER, PASS, BLOGDBは、設定した正しい値を入れること。

  • 予備サーバーでリストア
  •  (1) 元のサーバーでdumpしたDBデーターをftpなどで予備サーバーにコピーする。
     (2) sedを使ってURL名を変更

  • 10MB近いデーター量で、数分要した。
  • # sed -e "s/abc.myhome.jp/xyz.myhome.jp/g" abcblogdb > xyzblogdb

    (3) DBのリストア

    # mysql -u USER -pPASS BLOGDB <  xyzbogdb

    ERROR 2006 (HY000) at line 66: MySQL server has gone awayとエラーになる。
    66行目でエラーというので66行目を見ると、
    LOCK TABLES `mt_author` WRITE; となっている。
    ここで、LOCK TABLESとなっているのが悪いのかと思って、UNLOCK TABLESにsedを使って書き換えてみたが、今度は別のエラーになって、構文のエラーなのでマニュアルをよく読めと言ってくる。
    ここでお手上げかと思ったが、Netで色々調べたら、mysqlの転送の最大パケット数が不足していることが分かった。
    エラーになった行に、たまたまLOCK TABLESの語句があったので、これが原因かと思って混乱してしまった。ともかく、以下のようにpacket数を修正した。

    # vi /etc/my.cnf
    ・
    [mysqld]
    ・
    max_allowed_packet = 1M → 32Mに修正した

    ちなみに、[mysqldump]のセクションでは、max_allowed_packet = 16M となっていた。
    mysqlを再スタート

    # /usr/local/etc/rc.d/mysql-server restart

    ここで、再度DBのリストア

    # mysql -u USER -pPASS BLOGDB <  xyzbogdb

    今度はエラーなく無事終了した。

    3.ブログの再構築

    mt.cgiをブラウザで開いて、ユーザー名。パスワードを元のサーバーで用いていたのを使いログインし、複数のブログを順次開いて、公開パスが予備サーバに対応したものになっていることを確認し、サイトの再構築を行う。
    blogurl.jpg
    これで、無事終了である。書くと複雑のようだが、分かってしまうと沢山のページを有するブログであっても短時間で引越しができる。

    コメント

    コメントはありません

    コメントフィードを購読する

    コメント投稿





    コメント本文に次の(X)HTMLタグを使えます:
    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

    *

    日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)