テストから本番へ!WordPressでURLが変わる場合のデータベース修正マニュアル
タイトルの通りですが、WordPressでサイトを作る際テスト環境から本番環境へ(URLが変わる環境へ)移行する際の注意点とその方法をまとめておきたいと思います。
様々なサイトでその方法が解説されていますが、実際自分はこれを理解するのに少し時間がかかりました。そもそも当時はWordPressの構造のことなどさっぱりわかっていなかったので、今思えばうまくいかなかったのは当然ですが。。。
この先ここではなるべくわかりやすく解説できればと思います。
もくじ
1. 基本的理解
必要ない場合は「2. 実装編!スクリプトを使う。」まで読み飛ばして下さい。
まずWordPressは何でできているのかを理解しよう
まずWordPressはMySQLと呼ばれるデータベースに様々なデータが記録され、PHPというプログラムを使って、実際にサイトとして表示させています。
サイト移行時のポイント
上でWordPressが何でできているのかについて触れたとおり、テンプレートとデータベースによってサイトが構成されています。ということは移行時には
- テンプレートファイル一式の移動
- データベースの移動
これができれば理論上は移行が可能ということになりますね。
何。簡単じゃん。という風に思われるかもしれませんが、今回はURLが変わる場合を想定してしています。
URLが変わる場合、気をつけたいポイントがあるのでその部分にも触れておきましょう。
サイトURLが変わる場合に注意したいポイント
ローカル環境やテスト環境でサイトを作成する際、本番とサイトのURLが違うということはよくあります。(リニューアルなど本番環境で制作できないことってありますよねー)
サイトのURLに関する情報はほとんどがデータベース内に保存されていて、簡単にいえばデータベース内のURLを書き換えてやればよいということになります。
ただし、このURL部分の変更(書き換え)よくつまづく部分なので注意なんです。
データベース内のURLをそのまま置き換えるだけではウィジェットやプラグインが動かなくなることもある
URLをテキストエディタなどで書き換えるだけではwidgetやプラグインが正常に動作しなくなる場合があります。
その理由は下で述べる「シリアライズ」という言葉が関係しています。
データベース内のURLはシリアライズされている
s:18:”http://example.com”;
データベース内のURLを見てみると上のサンプルのような形でURLの前に s:● というのが付与されているのがわかる。
これはURLの文字数を表してる部分であり、URLによって数字の部分が変化するのでURLを置き換えるだけだと、シリアライズの部分とURLの文字数の整合性がとれなくなって不具合がでるということになりかねない。
ここではURLの文字数がURLに付随しているということを覚えておこう。
よって、データベースをそのまま書き換えるだけではだめ。
理由は、上で書いたシリアライズされた文字列がURLの前に付属しているから。
例えば、example.comをexample-main.comにテキストエディタなどで一括で書き換えた場合はどうなるのか?
example.com を example-main.comにテキストエディタの一括変換で変更してみる。すると。。。
変更前
s:18:”http://example.com”;
変更後(間違っているパターン)
s:18:”http://example-main.com”;
当然こうなりますよね。s:18: というのは書き換わりません。
でも本当はこうならなければいけないんです。
s:23:”http://example-main.com”;
そう。URLの文字数が違う場合はシリアライズされた番号も変わってくるので、単純にURLを置き換えるだけでは不十分ということになるんです。
じゃあどうすればいいのか?ここから実践編です。
2. 実装編!スクリプトを使う。
ではシリアライズされたURLを置き換えるにはどうすればいいのか?
シリアライズされたURLもキレイに置き換えてくれるスクリプトを使用すればいい
世の中には素晴らしい方がネット上に便利なファイルを公開しているものです。
今回のWordPress用のデータベースを一括変換してくれるスクリプトがあるので、それを実行するだけなのでここだけ覚えておきましょう。
なんだか難しそう…と思われるかもしれませんが、やることは簡単です。ここから順を追って説明していきたいと思います。
1. データベースの移設
現在のサーバーからmyPHPadminを使ってデータベースをダウンロードします。(ここではエックスサーバーを例にしています。)
myPHPadminのログイン画面があらわれるので、データベースのユーザー名、パスワードを入力してログインする。
1. サイトデータ一式をダウンロード
WordPressのファイル一式をすべてダウンロードしましょう。
2-1. データベースをエクスポート
myPHPadminで該当のデータベースを選択して、エクスポートタブを開きます。
- ダウンロードするテーブルを選択(初期で全部選択されている)
- デフォルトでは「DROP TABLE / VIEW / PROCEDURE / FUNCTIONを追加」にチェックが入っていないのでこちらにチェックをいれる。
- 「ファイルに保存する」にチェックを入れる(圧縮するかどうかはファイル容量によって決めて下さい。小さい場合は”なし”でも問題無いと思います。)
- 実行する(ファイルがダウンロードされる。)
- データベース容量が大きい場合の注意点
エクスポートの際の注意点としては、記事数が何千、何万とある場合は容量が大きい可能性があるので、データベースを分けてエクスポートするなどの注意点があります。重いファイルはダウンロードはできたとしても、アップロードできないことが多いので、容量が大きくなりがちな”wp_posts”辺りは別にした方がいいかもしれません。
2-2. データベースを新しい環境にインポート
先ほどダウンロードしたSQLファイルを新しい環境にアップロードします。
この際、先に管理画面からデータベースを新しく作っておいてくださいね。
インポートから先ほどのファイルを選択し、実行するを押せばファイルのインポートは完了です。
3. wp-configの内容を置き換える
最初にダウンロードしたファイル一式の「wp-config.php」というファイルを新しいデータベースの情報に書き換えます。
データベースの情報はそれぞれ設定によって違うので、自信のサーバー内で確認して下さい。
4. 本番環境にアップロード
1.でダウンロードしたファイル一式を新しいサーバー(もしくはディレクトリ)にアップロードします。
ここまでの状態で、新しいサイトのURLにアクセスすればトップページは表示することができるので、試しにアクセスしてみて表示されるかどうかを確認シておいて下さい。wp-config.phpの記述に誤りがある場合はデータベース接続エラーになったりするのでその際はwp-config内のデータベース情報を再度確認してみてください。
ちなみに他のページに行こうとすると、旧ドメイン(テスト環境のドメイン)に飛ばされるので、ここではトップページのみ確認ということで。
これはデータベース内の情報が古いドメインのままだから、そうなってしまいます。
このあと、データベース内の情報を書き換える工程に入ります。
5. データベース内のURLを変換するプログラムを実行※ここが重要
さて、ここまでくればあと一息です。データベースの情報を書き換えるという今回のお題にやっと辿り着いたわけです。
といってもここからのやり方はとても簡単で、searchreplacedb2.phpという配布されているプログラムをダウンロードして実行するだけ!
では実際にやってみましょう。
searchreplacedb2.phpというシリアライズされたデータベースを変換してくれるスクリプトを無料ダウンロードすることができるので、これを使用します。
searchreplacedb2.phpダウンロード
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
3.0 BETAと2.1.0STABLEの2種類がありますが、自分はいつも2.1.0を使用していて、今のところ問題は発生していないのでそちらで解説します。
ZIPファイルがダウンロードできるので、それを解凍。すると「searchreplacedb2.php」というPHPファイルが現れるのでそれをWordPressのインストールフォルダにアップロードする。
そして新サイトのURLでアクセスし、そのURLの後ろに、searchreplacedb2.phpをつけた状態でアクセスする。
http://自分のドメイン/searchreplacedb2.php
すると下記のような画面となるので、そのまま「Submit」を押す。
次に変更するデータベースの情報が表示されるので間違いないか確認して「Submit DB details」を押す
次にテーブルを選択する画面になる。基本的にはすべての情報を書き換えるはずなので、そのまま全選択した状態で「Continue」を押す。
おした時にポップアップウインドウが出てきますが、ただの確認なのでOKで問題ない。
次に書き換えたいURLの情報を入力する欄が出てくるので、変更前のURLと変更後のURLを入力する。
- この際注意するのが、URLの最後はスラッシュ( / )を入れないようにすること
このあと「Complete(完了)」という画面になるので、これでデータベースのURL書き換えは完了となる。
これでURLの書き換えは完了となります。うまくいっていれば、新しいURLでサイトが動くようになっているはずです。
変換用ファイルは削除しておこう
先ほどサーバーにアップしたsearchreplacedb2.phpというファイルは、使用後は必ず削除しておきましょう。
理由は簡単で、この情報をしっている人で悪意ある人がデータベースを書き換えてしまう可能性もあるからです。
そのままにしておくととっても危険なので、「searchreplacedb2.php」は必ず削除してください。
まとめ
ふう。説明する内容が多すぎてだいぶ長い記事になってしまいました。正直疲れた。
でもこの手順を覚えさえすれば、テスト環境から本番環境にWordPressを移行するのもそんなに難しくはない。と思って頂けるかと思います。
制作に関わる方や、ローカルでサイトを作っている方は、覚えておいて損はない内容かと思いますので、保存しておいてはいかがでしょうか。
ちなみにローカルでWordPressサイトを構築してみたい方は下記の記事が参考になるかもしれません。