WordPressのサーバー&ドメイン移転

とうとう独自ドメイン&別サーバーで運用することにしました!
というわけで、何らかの事情でWordPressのホスティングサーバーを変えたいときの為の覚え書き。ちょっと調べた限りでは、サーバー移転の場合の方法はあっても「サーバーとドメイン両方変更」の場合の情報がなかったので。(あまりないケースだとは思いますが。)

WordPressにはログのインポート/エクスポート機能がありますが、それだと記事のパーマリンクやタグ、プラグインの情報などが移動できないので、データベースごとごっそりと移動させます。

広告

サーバーのみ変える場合の手順は以下の通り。(phpMyAdminを使っています。)

  1. 旧サーバーでデータベースを全て選択してファイルでエクスポート
  2. 新サーバーにWordPressをインストールして動作確認
  3. 新サーバーのデータベースを空にする
  4. 1のSQLデータをインポート
  5. プラグイン、テーマ、アップロードデータの移行

ドメインごと変える場合はちょっと手順が増えます。

  1. 旧サーバーでデータベースをwp-optionsテーブル以外全て選択してファイルでエクスポート
  2. 1のファイルを一括置換で旧ドメインから新ドメインに書き換える
  3. /home/***/htmlなどサーバー内のパスも書き換える
  4. 新サーバーにWordPressをインストールして動作確認
  5. 新サーバーのデータベースをwp-optionsのみ残して空にする
  6. 1のSQLデータをインポート
  7. プラグイン、テーマ、アップロードデータの移行

2のドメインおよびパスの書き換えを忘れると、投稿に使った画像が表示されませんし、うまく動作しません。
エクスポートの際、「wp_3_options」を除外すること、「長いInsert文」のチェックを外すこと、「ファイルに保存する」にチェックを入れることを忘れないでください。
wp_3_optionsを含めるとどうもうまくいかないようなので、ここだけエクスポート/インポートの手順から外します。(ドメインを書き換えてもうまくいかなかった)
なので移行後にブログの説明やパーマリンク設定などを手動で設定し直す必要があります。

あとはテーマやアップロードした画像などのデータの移行ですね。
SSHでシェルコマンドが使えるサーバーの場合は、SCPでそのまま受け渡しすると便利です。

[hoge@server]$ scp -r ./plugins/ hoge@new.server.info:/home/hoge/blog/wp-content/
[hoge@server]$ scp -r ./themes/ hoge@new.server.info:/home/hoge/blog/wp-content/
[hoge@server]$ scp -r ./uploads/ hoge@new.server.info:/home/hoge/blog/wp-content/

wp-contentごと移しちゃってもいいかも知れません。

シェルが使えない場合は、FTPクライアントで頑張ってダウンロード→アップロードしてください。
以上です!

About: dacelo


20 thoughts on “WordPressのサーバー&ドメイン移転”

  1. とうとう独自ドメイン&別サーバーで運用することにしました!
    というわけで、何らかの事情でWordPressのホスティングサーバーを変えたいときの為の覚え書き。ちょっと調べた限りでは、サーバー移転の場合の方法はあっても「サーバーとドメイン両方変更」の場合の情報がなかったので。(あまりないケースだとは思いますが。)
    WordPressにはログのインポート/エクスポート機能がありますが、それだと記事のパーマリンクやタグ、プラグインの情報などが移動できないので、データベースごとごっそりと移動させます。

  2. Pingback: かくれわおん
  3. なんかwp_optionsも置き換えで弄るとだめみたいに書いてたからwp_optionはエクスポートの対象から外して試してみたらうまく行った… / WordPressのサーバー&ドメイン移転 | WordPress | 『Weblogy』 http://bit.ly/gif4EG

  4. Pingback: junichi_y
  5. 突然の訪問申しわけ御座いません。

    この記事を見せて頂いて、質問させていただきます。

    サーバーとドメイン両方変更というのを記事をたどってやってみたのですが、最後の最後に管理画面にログインできなくなってしまいました。

    PASSもIDも不明となってしまったので、データベースのwp_usersから変更したつもりだったのが、変更した後のユーザー名、PASSを入力してもエラーは「無効なユーザー名です。」と出るばかりで、
    PASSを忘れた場合のメールアドレスもDBに登録してあるものを入力しても違いますとでるので、八方ふさがりです。

    もしかして
    /home/***/htmlなどサーバー内のパスも書き換える
    という部分がわからなくてやってないのが問題かと思うのですが、これはどのように書き換えればよいのでしょう?

    突然の質問で申しわけ御座いませんが、返答を宜しくお願い致します。

    1. それはさぞお困りでしょうね。
      wp_usersのユーザー情報は、パスワードはMD5で暗号化してあるし、wp_user_metaのテーブルとも連動しているから、そこだけ変更しても、WordPressの正式なユーザー情報として認識されないのではないかと思います。

      ではこんな解決策はどうでしょうか。
      まず、今あるDB一式を、DBごとリネームするか、ダンプしてDLして保存しておきます。
      次に、新しいWordPressをまっさらな状態から普通にインストールします。
      そしたら、
      wp_commentmeta , wp_comments , wp_postmeta , wp_posts , wp_terms , wp_term_relationships , wp_term_taxonomy
      以上7つのテーブルを、保存してあったものと差し替えます。
      これで、新しいWordPressで、これまでの記事が表示されるはずです。
      ユーザー情報は、新しくインストールしたときのものを使う、ということですね。

  6. ご返答ありがとうございます。

    お陰様で上手く行きました。

    元のデータがwp_・・・というのが移動先はwp2_・・・という形で
    テーブル名に食い違いがあったのを修正したところ、全部稼働するようになりました!

    ご親切にありがとうございました!

  7. Pingback: PGMY.URI

Leave a Reply

Your email address will not be published. Required fields are marked *