3月
27
2013

minibirdへサーバー移転。複数WPサイトを1つのDBに入れる方法

私自身困って調べて、やっと解決した問題だったので、誰かの役に立てばと思えばと思いまとめますね。

概要

CORESERVERのm◯◯からネットオウルのminibirdのサーバーに全サイト15ぐらいかな?
を移転します。15サイト中、WordPressのサイトが3サイトあり、どうせ移転するなら、DBを1つにしたいと思い、奮闘しました。サーバー移転の方法と、複数のWPを1つのデーターベースに移転する方法をご説明します。

背景

minibirdは、とってもスペックが良いの最近主にこのServerを使用しています。
今までは、CORESERVERでした。ただ、ミニバードの悪いとこは、DBが5個までしか使えないということ。

これを回避するには、1つのDBに複数のWPサイトを入れる必要があります。

コアサーバーからミニバードへのサーバー移転の方法

まずは、ミニバードで仮契約でもして、使える状態にしてください。

使えるようになったら、「ドメインの追加 」を行います。
サーバー移転をしようとしているドメインをミニバードの設定します。

簡単な方法は、WEB認証ですね。
ミニバードよりファイルを1つ落としてきて、そのファイルを移行前のサーバーにアップします。
で、認証ボタンを押すと、めでたくドメインが追加されます。

ドメインが追加されるとミニバードのサーバーにFTP接続した際に、ドメイン名のフォルダが表示されるようになります。
そのフォルダに、移転前の内容と全く同じものをアップします。

アップが完了したら、「移転前動作確認URL」 で確認してみましょう。
(私は、確認しない派なので、使いませんが(笑)

次に、ドメインのNS(ネームサーバー)をミニバードに切り替えます。
ns1.minibird.jp
ns2.minibird.jp
ns3.minibird.jp
こちらになります。

しばらく、まぁ1日も待てばDNSが切り替わりミニバードのサーバーを見に行くようになります。

通常のサイトの場合は、これで、サーバー移転は完了です。
元サーバーのファイルは、2週間ほどそのままにしておいたほうが、いいです。

複数のWPを1つのDBに移転する話

ここからが、今回の本題ですね!

コアサーバーでは、もちろんDBはそれぞれ用意して利用してましたから3つあります。ドメインも3つです。
分かりやすいようにドメインをそれぞれA B C と名前を付けますね。

さて、まずは、Aのサーバー移転からです。

上記の通り、現行ファイルを新サーバーにアップして、NSをミニバードにしてまで行なって下さい。
で、ミニバードでDBを追加し、管理ユーザーを紐付けます。

Aのwp-config.phpの中身を書き換えます。
書き換える部分は、DBホスト、 DBユーザー、DB PW、DB 名前、ちょっと下の方にある、$table_prefix  = ‘wp_’;の計5個を変更します。

ホスト名は、ミニバードのDB追加設定画面の下の方に記載されています。

ユーザー名、PW、DB名は貴方が設定した項目です。

$table_prefix  = ‘wp_’;は通常wp_になっていますが、今回1つのDBに複数のWPを入れるので分かるように変更しなくてはなりません。ここが肝です。

wp_を適当なユニークな名前に変更します。アルファベットでお願いしますw
私は、wp_cosmeXXXみたいな名前にしました。使用するドメインを表す英単語を入れるようにしています。
今回は、wp_a_にしましょう(Aドメインの場合)

次に、元サーバーのMYSQLにアクセスしてデーターベースを全部エクスポートします。
一気にまとめてすればいいですよ。

エクスポートしたSQLファイルをsakuraエディタで開きます。

今までは、各テーブル名標準の「wp_commentmeta」や「wp_comments」といったwp_何々というテーブル名になっていたと思います。(元々$table_prefixを設定されていた方は例外です。)

これを今回のwp_a_に適応させます。
やり方は簡単。

先ほどエクスポートしたSQLファイルの 「wp_commentmeta」の場合は、「wp_a_commentmeta」に置換すればいいだけです。

これを全テーブル名分だけ行います。
「wp_comments」→「wp_a_comments」と言ったふうに。必ず置換を手動ではなく機能を使って行いましょう。
打ち間違えや漏れがあると無駄に時間掛かってしまいますから。

で、全テーブル分終えたら、そのSQLを新サーバーのDBにインサートします。
そうすると上手いこと、「wp_a_なんたら」 のテーブルが出来ましたね!?

その状態で、DNSが切り替わってる場合にAドメインにアクセスするとサイトがめでたく見れるはずです!

そして管理画面を見ようとするとめでたく「このページにアクセスするための十分なアクセス権がありません。」と出てきます~>゜)~~~

これが出なかったら、ラッキーですw

出た場合は、
SQLを発行します。

UPDATE wp_a_options SET option_name = ‘wp_a_user_roles’ WHERE option_name = ‘wp_user_roles’;
UPDATE wp_a_usermeta SET meta_key = ‘wp_a_capabilities’ WHERE meta_key = ‘wp_capabilities’;
UPDATE wp_a_usermeta SET meta_key = ‘wp_a_user_level’ WHERE meta_key = ‘wp_user_level’;
UPDATE wp_a_usermeta SET meta_key = ‘wp_a_dashboard_quick_press_last_post_id’ WHERE meta_key = ‘wp_dashboard_quick_press_last_post_id’;
UPDATE wp_a_usermeta SET meta_key = ‘wp_a_user-settings’ WHERE meta_key = ‘wp_user-settings’;
UPDATE wp_a_usermeta SET meta_key = ‘wp_a_user-settings-time’ WHERE meta_key = ‘wp_user-settings-time’;

こんな感じに。上のコードコピーして、wp_a_を貴方が設定したものに置換してください。
それで実行すれば、該当箇所が置き換わります。

で、再度管理画面にアクセスすれば、ちゃんちゃんです。

ちなみに、記事ページにアクセスするとRedirect なんちゃらって出た方は、パーマリンクの設定ボタンを設定変更せずに押して下さい。

それで、各記事にアクセス出来るようになるはず。変わらなければ私にはわかりませんw

以上非常に長くなりましたが、複数のWordPressを1つDBに移転する方法でした。
Aドメインが終わったら、同様のことをBドメイン、Cドメインにも行います。
ただその時にAドメインの $table_prefixとは違う設定をB、Cに行う必要があります。必ずユニークなものにしてくださいね。

がるがん

 

つぶやきをどうぞー