この記事を書く人と信憑性
家富正幸(いえとみまさゆき)
現役のWordPressエンジニア(エンジニア歴16年)
大規模から小規模までのWordPressテーマ開発実績数は800件以上
現場で培ったノウハウを元に、WordPressの環境コピーについて執筆していきます。
はじめに
WordPressをコピーしたい時は意外に多く、
例えば
- サイトのドメインが変わった
- サイトの設置先URLが変わった
- 全く同一環境のテストサイトがほしくなった
- 開発のためローカルマシン上に全く同じ環境がほしくなった
など、特に開発に携わっている方であれば、多々遭遇したことがあると思います。
最近では「Duplicator」という、WordPress環境の移行に特化したプラグインがあり、そちらを使うことで簡単に移行できたりするのですが、環境依存が多いプラグインでもあり、サーバーによっては利用出来ないことが多々あります。
そんな時のために、今日は移設に関する一連の流れを書いていきます。
STEP1. コピー元環境からファイルを取得する
まずコピー元環境からWordPressのファイル一式をコピーしましょう。
バックアップの手順と同様ですが、今回は「環境のまるごとコピー」なので、WordPressの本体を含めてまるっとコピーしてしまいます。
念のために記載しますが、WordPressが設置されているディレクトリに他のファイルが紛れ込んでいる場合などに、不要なものをコピーしてしまう可能性もあります。
下記にWordPressが利用しているファイル・ディレクトリを記載しますので、コピーの際には参考にしてみてください。
- wp-admin/
- wp-content/
- wp-includes/
- index.php
- license.txt
- readme.html
- wp-activate.php
- wp-blog-header.php
- wp-comments-post.php
- wp-config.php
- wp-config-sample.php
- wp-cron.php
- wp-links-opml.php
- wp-load.php
- wp-login.php
- wp-mail.php
- wp-settings.php
- wp-signup.php
- wp-trackback.php
- xmlrpc.php
基本的には上記のファイル・フォルダをFTPでダウンロードするか、同一サーバー上でのコピーであれば、copy コマンドなどで一括して複製してしまいましょう。
FTP接続時の文字コードは必ず「UTF-8」で行うようにしてください。
WordPressは全ての文字コードを「UTF-8」で管理しているため、メディアファイルなどに日本語が含まれると、ダウンロードの際に文字化けが発生し、正常に環境コピーができなくなってしまう恐れがあります。
またこれは私が体験した問題で、念のために記載しておくのですが、Macを利用されている場合UTF-8を使ってダウンロードしたのに、日本語の処理に問題があり「Finder上では同一の文字に見えるのに、実際には文字コードが異なっていて、違う文字である」
というやっかいな問題が発生することがあります。
私は開発環境をMacで構築していますので、この現象にMacのFTPソフトである「Transmit」「YummyFTP」の2つで遭遇したことがあります。
回避策としてはParallels上に構築したWindows10で、「Filezilla」を利用することでした。
Mac版もFilezillaは存在しますが、文字コード的な処理がどのようになっているか、こちらは確認が出来ていませんので、もし上記のような状況が発生した場合には、Windows上の環境で試してみると上手くいく場合があります。
STEP2. コピー元環境からデータベースのデータを取得する
次にデータベースをバックアップしてしまいましょう。
サーバーにPHPMyAdmin等がインストールされていれば、そちらにアクセスし、WordPressが利用しているテーブルを、全て「エクスポート」してください。
この際の文字コードはやはり「UTF-8」、出力の形式は「SQL」でエクスポートしましょう。
もしサーバー上にPHPMyAdminが無い場合も、心配はご無用です。
バックアップの回でも紹介した、ミニマルなMySQL管理ツール「Adminer」を利用しましょう。
こちらのファイルを1つサーバーにアップするだけで、PHPMyAdminとほぼ同様のことができてしまいます。
エクスポートも同様に可能なので、サクッとSQLファイルをダウンロードしてください。
STEP3. コピー先環境にファイルをアップする
ファイル、データベースがバックアップできたので、次に設置の段階に入ります。
まずはファイルを一式を、移設先のサーバー/環境にアップしましょう。
これは説明するまでもありませんが、復元の回でも触れており、何度も申し上げますが、FTP接続を行う場合には「UTF-8」で接続してアップロードして下さい。
STEP4. コピー先環境にデータベースの内容を復元する
次にデータベースの内容を復元しましょう。こちらももはや説明は不要ですね。
移設先のサーバーにPHPMyAdminがあればそちらを使い、無ければ上述の「Adminer」を設置し、対象のテーブルにSQLファイルをインポートしてください。
STEP5. データベースの内容を書き換える
WordPressはデータベースの中に設置先のURLを保持していて、こちらを書き換えないと、旧ドメイン/URLにリダイレクトされてしまい、いつまでたっても確認が出来ません。
PHPMyAdminやAdminer等のツールでは、データベースのレコードが1件毎に編集できるので、こちらで編集してしまうのが気軽に思えますが、この方法は絶対にやらないようにしましょう。
理由としては、WordPressはPHPの「配列」というデータを、シリアライズという方法を使って「そのまま」データベースに、保存する処理を行っている箇所があります。
この「シリアライズ」されたデータは非常にもろく、1文字テキストが増えたり減ったりしただけで、データが不正になっているとみなされ、復元できなくなってしまうことがあります。
そうなってしまうと、また元のデータベースを書き戻すところからやりなおし!
といったことになりかねませんので、「シリアライズ」についてよくご理解している方以外は、手作業で調整するのは出来るだけ避けましょう。
WordPress界隈には優秀な技術者が多く、上記のことを簡単に行ってくれるツールがあります。
「Search Replace DB」という、WordPressのデータベース書き換えに特化したPHPスクリプトです。
このスクリプトを使うことで、本当に簡単に、WordPressのURL情報を、任意の内容に書き換えることができます。
シリアライズされたデータも、ちゃんと復元できるように調整して、書き換えてくれるので安心です。
書き換えの詳細な手順については、過去に私が別ブログにて投稿しておりますので、下記のURLからご参照ください。
http://inspire-tech.jp/2013/10/wordpress-search-replace-db/
STEP6. ログイン確認
データベースの書き換えが完了したら、最後にログインを確認しましょう。
新しいドメイン上で正しくログインができれば、環境コピーは完了です。
念のため管理画面にログインしたら、設定から「パーマリンク」構造を更新し、htaccessを再度生成するようにしましょう。
その後各ページが404になっていないかなど、必ずチェックするようにしてください。
さいごに
いかがだったでしょうか?
要は環境コピーとは「バックアップ」「復元」なので、両方の詳細がわかれば簡単に行うことが出来ます。
ローカル環境などに環境コピーをすることで、WordPressのバージョンアップが問題無いかの確認など、簡単に行うことが可能になります。
非常に利便性が高いので、環境複製にお困りの方は是非試してみて下さい。
ただし、文字コードの設定を間違えたり、データベースの書き換えに失敗してしまうと、正しく環境がコピーできないので、その点には出来るだけ注意してください。