タイトルの通りですが、WordPressでサイトを作る際テスト環境から本番環境へ(URLが変わる環境へ)移行する際の注意点とその方法をまとめておきたいと思います。
様々なサイトでその方法が解説されていますが、実際自分はこれを理解するのに少し時間がかかりました。そもそも当時はWordPressの構造のことなどさっぱりわかっていなかったので、今思えばうまくいかなかったのは当然ですが。。。
この先ここではなるべくわかりやすく解説できればと思います。
1. 基本的理解
必要ない場合は「2. 実装編!スクリプトを使う。」まで読み飛ばして下さい。
2022年4月8日
記事内容を最新の情報に修正しました。
まずWordPressは何でできているのかを理解しよう
まずWordPressはMySQLと呼ばれるデータベースに様々なデータが記録され、PHPというプログラムを使って、実際にサイトとして表示させています。デフォルトのデータベース構造について知りたい方はこちらの記事も参照
WordPressのデータベースの構造について理解しておこう
サイト移行時のポイント
上でWordPressが何でできているのかについて触れたとおり、テンプレートとデータベースによってサイトが構成されています。ということは移行時には
- WordPressのファイル一式の移動
- データベースの移動
これができれば理論上は移行が可能ということになりますね。
WordPressのファイル一式のダウンロード
WordPressのファイル一式は、環境によってどのように設置しているか多少違いはありますが、設定しているドメインのディレクトリ内にあるものを全てコピーすればよろしいかと思います。
流れとしては、
- 該当のファイル一式をパソコン(ローカル)に保存
- 新しい環境に①でダウンロードしたファイルを全てアップロード
ドメイン直下には通常、wp-contentやwp-adminというフォルダ、wp-config.phpなどといったファイルが入っています。
※ただし、WordPressのインストール先を違うディレクトリにしている場合は、設置場所が異なるかもしれません。↓下記のような場合です。
サイトのURL:https://example.com
WordPress本体のURL:https://example.com/wp
このようにインストール先が違う場合は注意してくださいね。
ファイルをコピーするだけか。何だ。簡単じゃん。と思われるかもしれませんが、今回は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をそのまま置き換えるだけではだめということです。
理由は、上で書いたシリアライズされた文字列がURLの前に付属しているから。
例えば、example.comをexample-main.comにテキストエディタなどでURLのみを書き換えた場合はどうなるか考えてみましょう。
example.com
を example-main.com
にテキストエディタで必殺「一括変換」!
すると。。。
↓
↓
↓
変更前
s:19:”https://example.com”;
変更後(間違っているパターン)
s:19:”https://example-main.com”;
当然こうなりますよね。冒頭のs:19:
が書き換わりません。
でも本当はこうならなければいけないんです。
s:24:”https://example-main.com”;
そう。URLの文字数が違う場合はシリアライズされた番号も変わってくるので、単純にURLを置き換えるだけでは不十分ということです。
じゃあどうすればいいのか?
ここから実践編です。
2. 実装編!スクリプトを使う。
ではシリアライズされたURLを置き換えるにはどうすればいいのか?
シリアライズされたURLもキレイに置き換えてくれるスクリプトを使用すればいい
世の中には素晴らしい方がネット上に便利なファイルを公開しているものです。
今回のWordPress用のデータベースを一括変換してくれるスクリプトがあるので、それを実行するだけなのでここだけ覚えておきましょう。
なんだか難しそう…と思われるかもしれませんが、やることは簡単です。ここから順を追って説明していきたいと思います。
1. サイトデータ(ファイル一式)をダウンロード
まずは、WordPressのファイル一式をすべてダウンロードしましょう。
保存先は、パソコンのデスクトップなどでもいいですし、わかりやすいところに一時的にダウンロードしておきます。
2. データベースの移設
次にデータベースをダウンロードします。
1でダウンロードしたファイル一式とは全く別の場所にある別のものと考えてください。
現在のサーバーからmyPHPadminを使ってデータベースをダウンロードします。(ここではエックスサーバーを例にしています。)
myPHPadminのログイン画面があらわれるので、データベースのユーザー名、パスワードを入力してログインする。
2-1. データベースをエクスポート
myPHPadminで該当のデータベースを選択して、エクスポートタブを開きます。
- ダウンロードするテーブルを選択(初期で全部選択されている)
- デフォルトでは「DROP TABLE / VIEW / PROCEDURE / FUNCTIONを追加」にチェックが入っていないのでこちらにチェックをいれる。
- 「ファイルに保存する」にチェックを入れる(圧縮するかどうかはファイル容量によって決めて下さい。小さい場合は”なし”でも問題無いと思います。)
- 実行する(ファイルがダウンロードされる。)
エクスポートの際の注意点としては、記事数が何千、何万とある場合は容量が大きい可能性があるので、データベースを分けてエクスポートするなどの注意点があります。重いファイルはダウンロードはできたとしても、アップロードできないことが多いので、容量が大きくなりがちな”wp_posts”辺りは別にした方がいいかもしれません。
2-2. データベースを新しい環境にインポート
先ほどダウンロードしたSQLファイルを新しい環境にアップロードします。
この際、先に管理画面からデータベースを新しく作っておいてくださいね。
インポートから先ほどのファイルを選択し、実行するを押せばファイルのインポートは完了です。
3. wp-configの内容を置き換える
最初に(1で)ダウンロードしたファイル一式の「wp-config.php」というファイルを新しいデータベースの情報に書き換えます。
データベースの情報はそれぞれ設定によって違うので、自信のサーバー内で確認して下さい。
サーバーの管理画面などで確認できると思います。
4. 本番環境にアップロード
1.でダウンロードしたファイル一式を新しいサーバー(もしくはディレクトリ)にアップロードします。
ここまでの状態で、新しいサイトのURLにアクセスすればトップページは表示することができるので、試しにアクセスしてみて表示されるかどうかを確認シておいて下さい。wp-config.phpの記述に誤りがある場合はデータベース接続エラーになったりするのでその際はwp-config内のデータベース情報を再度確認してみてください。
ちなみに他のページに行こうとすると、旧ドメイン(テスト環境のドメイン)に飛ばされるので、ここではトップページのみ確認ということで。
これはデータベース内の情報が古いドメインのままだから、そうなってしまいます。
このあと、データベース内の情報を書き換える工程に入ります。
5. データベース内のURLを変換するプログラムを実行 ※ここが重要
さて、ここまでくればあと一息です。データベースの情報を書き換えるという今回のお題にやっと辿り着いたわけです。
といってもここからのやり方はとても簡単で、Search Replace DBという配布されているプログラムをダウンロードして実行するだけ!
では実際にやってみましょう。
Search Replace DBというシリアライズされたデータベースを変換してくれるスクリプトを無料ダウンロードすることができるので、これを使用します。
Search Replace DBのダウンロード
まずは公式サイトにアクセスします。
Database Search and Replace Script in PHP
下の方にスクロールするとフォームがあるので、必要事項を入力して送信します。
「Suggested donation」では寄付額を選択します。寄付しない場合は「Other or nothing」を選択します。
フォームに入力したメールアドレス宛にメールが届くので、そこに記載されているリンクから、プラグラムファイル(ZIPファイル)をダウンロードします。
Search Replace DBのインストール
ZIPファイルを解凍すると「Search-Replace-DB-master」というフォルダが現れるので、それをWordPressのインストールフォルダにアップロードします。
wp-config.php
と同じディレクトリに設置することで、使用できるようになります。
設置後、ブラウザから移行後のサイトURLの末尾に/Search-Replace-DB-master
を入力してアクセスすると、下記のような設定画面が表示されます。
https://自分のドメイン/Search-Replace-DB-master
を入力してアクセス
データベースのURLを書き換える方法
以下、Search Replace DBを使用して、データベースに記録されたURLを書き換えるための手順になります。
1.データベースの接続確認
データベースの情報を入力して[Test Connection]から、データベースへに接続ができるか確認を行います。
database name | データベース名 |
---|---|
username | データベースのユーザー名 |
pass | データベースのパスワード |
host | データベースのホスト名 |
port | ポート番号(省略可能) ※通常、MySQLのポート番号には3306が使用されています。 |
これらの値は、wp-config.php
に記載されています。
緑色で「Success. You are connected.」と表示されれば接続成功です。
2.書き換えるURLを入力
書き換えたいURLの情報を入力します。「replace」に変更前のURLを入力「with」に変更後のURLを入力します。
この際注意するのが、URLの最後はスラッシュ( / )を入れないようにすること
3.書き換えのテスト
書き換えるURLを入力したら、確認のためのテストを行います。
[Do a safe test run]をクリックすると、おそらく下記のような注意書きが記載されます。
Incomplete or ill-typed serialization data:: This is usually caused by a plugin storing classes as a serialised string which other PHP classes can’t then access. It is not possible to unserialise this data because the PHP can’t access this class. P.S. It’s most commonly a Yoast plugin that causes this error.
これは、SEOプラグイン(Yoast)のデータは置換されませんといった、注意喚起のメッセージで、Yoastを入れていない場合でも表示されます。
その下にはシミュレーション結果が表示されます。
変更されるテーブルには「view changes」が表示されるので、それをクリックすると、どのように置換されるのかを確認できます。
4.書き換えの実行
置換テストの内容を確認して、問題がなければ[Search and Replace]をクリックして、URLの置換を実行します。
このとき「本当に置換の実行の準備は整っていますか? データベースのバックアップを取ってください!」といったアラートが表示されるので確認しておきましょう。
[OK]をクリックすると置換が実行され、URLの書き換えは完了となります。
うまくいっていれば、新しいURLでサイトが動くようになっているはずです。
スクリプトの削除
作業が完了したら、このプログラムは削除しておきましょう。なぜなら、この情報を知っている人で悪意ある人がデータベースを書き換えてしまう可能性もあるからです。
[delete me]をクリックしてスクリプトの削除を実行します。
これでスクリプトは削除されましたが、念のため、FTPから「Search-Replace-DB-master」ディレクトリごと削除しておきましょう。
まとめ
ふう。説明する内容が多すぎてだいぶ長い記事になってしまいました。正直疲れた。
でもこの手順を覚えさえすれば、テスト環境から本番環境にWordPressを移行するのもそんなに難しくはない。と思って頂けるかと思います。
制作に関わる方や、ローカルでサイトを作っている方は、覚えておいて損はない内容かと思いますので、保存しておいてはいかがでしょうか。
ちなみにローカルでWordPressサイトを構築してみたい方は下記の記事が参考になるかもしれません。
[…] などさっぱりわかっていなかったので、今思えばうまくいかなかったのは当然ですが。 。 [紹介元] テストから本番へ!WordPressでURLが変わる場合のデータベース修正マニュアル : bridge […]
[…] 3. WordPress:テストから本番へ!WordPressでURLが変わる場合のデータベース修正マニュアル この記事をRTする […]
[…] ⇒テストから本番へ!WordPressでURLが変わる場合のデータベース修正マニュアル […]
[…] となどさっぱりわかっていなかったので、今思えばうまくいかなかったのは当然ですが。 。 [紹介元] テストから本番へ!WordPressでURLが変わる場合のデータベース修正マニュアル : bridge […]
[…] テストから本番へ!WordPressでURLが変わる場合のデータベース修正マニュアル […]
[…] ベース上のURLの書き換えがうまいこといかずにリンクが切れたりすることがあるみたいです。(※参考サイト:テストから本番へ!WordPressでURLが変わる場合のデータベース修正マニュアル) […]
[…] https://bge.jp/wordpress-rename-manual/ […]