WordPressでサーバ移行時にデータベース上のドメインを書き換える方法
WordPressでサーバを引っ越しする時や、開発環境から本番環境へ移行する際は、
データベース内の旧ドメインを新ドメインに書き換える必要があります。
その方法をまとめてみました。
今まで行っていた方法としては、
phpMyAdminから下記のようにSQL文を打ち込みドメインを一括変換していました。
1 2 3 4 | UPDATE wp_options SET option_value=REPLACE(option_value,"旧ドメイン","新ドメイン"); UPDATE wp_posts SET post_content=REPLACE(post_content,"旧ドメイン","新ドメイン"); UPDATE wp_posts SET guid=REPLACE(guid,"旧ドメイン","新ドメイン"); UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,"旧ドメイン","新ドメイン"); |
ところが、岡本さんのブログ「WordPress のDB上のサイトURLを一気に変換」によると、
wp_options や wp_postmeta には、シリアライズされたデータが入っており、
そのまま変換するとまずいよと書かれてありました。
確認さんからは「動かないプラグインがでてくるばあいがありますよー」との事でした。
実際にダンプしたMySQLのデータを見て見ると、
1 | s:22:"http://www.example.com" |
のように、s: の後ろに文字列の長さが記述されているのが分かります。
これがシリアライズされたデータです。
そこで岡本さんブログに書かれている手順で書き換えを行ってみたのですが、
私の操作方法が悪いのかうまく書き換えらえれず Warning がでてしまい、
色々と検索し調べてみると、
Codex の Moving WordPress に別の方法での書き換え方法が書いてありました。
そのサイトをみると、Search and Replace for WordPress Databases Script というスクリプトが公開されているので、それを使用し書き換えを行うようです。
では順をおって、その書き換え方法をまとめてみたいと思います。
例として、開発環境(テストサーバ) → 本番環境 への移行で進めてみます。
※開発環境(テストサーバ)のデータベースのバックアップ(エクスポート)、および、本番環境のデータベースの復元(インポート)は完了している前提の流れです。
まずはじめに
まずはじめに開発環境(テストサーバ)からWebデータを手元にダウンロードし、
そのデータを本番環境へアップロードしておきます。
※まだ本番環境へのデータベースの復元(インポート)が終わっていなければ、この時点で終わらせておきましょう。
手順1
ダウンロードしたファイルに(WordPressインストールディレクトリ直下に)、
wp-config.php というファイルがあるのでそれをエディターで開き、
データベース情報を本番環境のものに書き換えます。
例) 下の 「*****」 を本番環境のものに変更します。
1 2 3 4 | define('DB_NAME', '*****'); define('DB_USER', '*****'); define('DB_PASSWORD', '*****'); define('DB_HOST', '*****'); |
手順2
Search and Replace for WordPress Databases Script にアクセスし、
「Download Search Replace DB v 2.1.0」をクリックしファイルをダウンロードします。
ダウンロードしたファイルを解凍すると searchreplacedb2.php となるので、
そのファイルを 本番環境のWordPressインストールディレクトリにアップロードします。
手順3
続いて、先ほど本番環境へアップしたファイルにアクセスします。
例)ルート直下にWordPressをインストールしている場合
http://www.example.com/searchreplacedb2.php
アクセスすると下記画面が表示されますので、【Submit】ボタンで次に進みます。
手順4
wp-config.phpに記述されているデータベース情報が画面が表示されますので、
間違いがなければ【Submit DB details】ボタンで次に進みます。
手順5
どのテーブルを対象とするかを選びます。
【Continue】ボタンで次に進みます。
手順6
Search for (case sensitive string): には旧ドメインを入力し、
Replace with: には新ドメイン(置き換えるドメイン)を入力し、
【Submit Search string】ボタンで次に進みます。
手順7
正常に書き換えが終われば、Completedの画面が表示され完了です。
手順8
最後にWordPressのインストールディレクトリに設置した
searchreplacedb2.php を削除し作業は完了です。
難しい知識もいらないので初心者の方でも出来るかと思います。
またコマンド入力が不要なので共用サーバでもいけそうですね!
追記1:
WordBench千葉でスピーチさせて頂いたスライドをアップしています。合わせてご覧ください。
テスト環境から本番環境へ、URLが異なる環境にWordPressを移行する方法
追記2:分かりにくかった所を少し加筆しました。(2013/07/16)
相談にのっていただいた @horike37 さん、@gatespace_k さんに感謝です!
【動作環境】 WordPerss3.4.2、WordPress3.5、WordPress3.5.1、WordPress3.5.2、WordPress3.6、WordPress3.6.1、WordPress3.7、WordPress3.7.1、WordPress3.8、WordPress3.8.1、WordPress3.8.2、WordPress3.9、WordPress3.9.1、WordPress3.9.2、WordPress4.0、WordPress4.0.1、WordPress4.1、WordPress4.1.1、WordPress4.1.2、WordPress4.1.3、WordPress4.1.4、WordPress4.2、WordPress4.2.1
【参考サイト】 http://codex.wordpress.org/Moving_WordPress
【参考サイト】 http://dogmap.jp/2012/09/20/wordpress-replace-siteurl/
山本様はじめまして。
サーバー移行関連の検索からこちらの記事を拝見させて頂きました。
ご多忙の所大変申し訳ありませんが、質問させて頂いてよろしいでしょうか。
MTブログのサーバ移行を計画し、その際同時にWPへ変更することにしました。
ローカルでブログ内容をWPに移植後、新サーバーにアップすればよいとだけ考えておりましたが、こちらの記事のような問題があることを知りました。
お聞きしたいのですが、
ローカル環境のWPで作成したブログデータをエクスポートし、
↓
エディタ等でローカルのURL部分を運用中のドメインURLに変更、
↓
新サーバーでローカルと同じ環境を作って編集済みデータをインポート、
↓
サーバーの移行手続きをする。
といった流れだけでは駄目ということでしょうか?
新サーバーへの移行、並びにMTからWPへの変更、の場合でもこちらの記事のような作業が必要になりますでしょうか?
サーバー移行ははじめてのこととなります。
ご多忙中お手間とらせてしまい大変申し訳ありませんが、アドバイス頂けましたら大変助かります。
よろしくお願いいたします。