こんにちわ、家富です。
WordPressをコピーしたい時は意外に多く、
例えば
- サイトのドメインが変わった
- サイトの設置先URLが変わった
- 全く同一環境のテストサイトがほしくなった
- 開発のためローカルマシン上に全く同じ環境がほしくなった
など、特に開発に携わっている方であれば、
多々遭遇したことがあると思います。
そこで今回は、その2つを応用した「WordPressの環境コピー」について、
お話をさせていただきます。
最近では「Duplicator」という、
WordPress環境の移行に特化したプラグインがあり、
そちらを使うことで簡単に移行できたりするのですが、
環境依存がおおいプラグインでもあり、
サーバーによっては利用出来ないことが多々あります。
そんなときのために、
今日は移設に関する一連の流れを書きたいと思います。
コピー元環境からファイルを取得する
まずコピー元環境から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 コマンドなどで
一括して複製してしまいましょう。
ここで注意するべきことが1つ、
バックアップの際にも記載したのですが、
FTP接続時の文字コードは必ず「UTF-8」で行うようにしてください。
WordPressは全ての文字コードを「UTF-8」で管理しているため、
メディアファイルなどに日本語が含まれると、
ダウンロードの際に文字化けが発生し、
正常に環境コピーができなくなってしまう恐れがあります。
またこれは私が体験した問題で、
念のために記載しておくのですが、
Macを利用されている場合UTF-8を使ってダウンロードしたのに、
日本語の処理に問題があり
「Finder上では同一の文字に見えるのに、
実際には文字コードが異なっていて、違う文字である」
というやっかいな問題が発生することがあります。
私は開発環境をMacで構築していますので、
この現象にMacのFTPソフトである「Transmit」「YummyFTP」の
2つで遭遇したことがあります。
回避策としてはParallels上に構築したWindows10で、
「Filezilla」を利用することでした。
Mac版もFilezillaは存在しますが、
文字コード的な処理がどのようになっているか、
こちらは確認が出来ていませんので、
もし上記のような状況が発生した場合には、
Windows上の環境で試してみると上手くいく場合があります。
コピー元環境からデータベースのデータを取得する
次にデータベースをバックアップしてしまいましょう。
サーバーにPHPMyAdmin等がインストールされていれば、
そちらにアクセスし、WordPressが利用しているテーブルを、
全て「エクスポート」してください。
この際の文字コードはやはり「UTF-8」、
出力の形式は「SQL」でエクスポートしましょう。
もしサーバー上にPHPMyAdminが無い場合も、
心配はご無用です。
バックアップの回でも紹介した、
ミニマルなMySQL管理ツール「Adminer」を利用しましょう。
こちらのファイルを1つサーバーにアップするだけで、
PHPMyAdminとほぼ同様のことができてしまいます。
エクスポートも同様に可能なので、
サクッとSQLファイルをダウンロードしてください。
コピー先環境にファイルをアップする
ファイル、データベースがバックアップできたので、
次に設置の段階に入ります。
まずはファイルを一式を、
移設先のサーバー/環境にアップしましょう。
これは説明するまでもありませんが、
復元の回でも触れており、
何度も口を酸っぱくして申し上げますが、
FTP接続を行う場合には「UTF-8」で接続してアップロードして下さい。
コピー先環境にデータベースの内容を復元する
次にデータベースの内容を復元しましょう。
こちらももはや説明は不要ですね。
移設先のサーバーにPHPMyAdminがあればそちらを使い、
無ければ上述の「Adminer」を設置し、
対象のテーブルにSQLファイルをインポートしてください。
データベースの内容を書き換える
復元の回でも申し上げていますが、
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/
ログイン確認
データベースの書き換えが完了したら、
最後にログインを確認しましょう。
新しいドメイン上で正しくログインができれば、
環境コピーは完了です。
念のため管理画面にログインしたら、
設定から「パーマリンク」構造を更新し、
htaccessを再度生成するようにしましょう。
その後各ページが404になっていないかなど、
必ずチェックするようにしてください。
さいごに
いかがだったでしょうか?
要は環境コピーとは「バックアップ」「復元」なので、
両方の詳細がわかれば簡単に行うことが出来ます。
ローカル環境などに環境コピーをすることで、
WordPressのバージョンアップが問題無いかの確認など、
簡単に行うことが可能になります。
非常に利便性が高いので、
環境複製にお困りの方は是非試してみて下さい。
ただし、文字コードの設定を間違えたり、
データベースの書き換えに失敗してしまうと、
正しく環境がコピーできないので、
その点には出来るだけ注意してください。