レンタルサーバー上のWordpressをローカル環境にコピー(移行)する

前回は、XAMPPコントロールパネルから行うApacheの初期設定について説明しました。

ここでは、レンタルサーバーで運用中のWordpressサイトをローカル環境にそっくりそのままコピー(移行)する方法について説明していきます。

 

レンタルサーバーで運用しているWordpressをローカル環境に移行するのは以下のようなメリットがあります。

1. Wordpress のカスタマイズをローカル環境で行える

2. バックアップ&リストアが正常に行えるかどうか確認できる

 

Wordpressは管理画面から直接カスタマイズすることができますが、ちょっとしたミスをすればサイトに不具合が発生したり、サイト自体が見れなくなったり、最悪の場合、管理画面にアクセスできなくなることもあります。

アクセス数が少ないサイトならそれほど問題にはなりませんが、アクセス数が多いサイトでの設定ミスは死活問題です。このようなトラブルを未然に防ぐために、レンタルサーバーで運用している状態と全く同じ環境をローカル環境に構築し、ローカルでテストして問題なければ現用サーバーにも適用するという手順を踏むべきです。

 

レンタルサーバーで運用中のWordpressをローカル環境に移行する方法は2つあります。

ローカル環境にWordpressを自動インストールし、データベースと必要なデータファイルのみコピーする

もうひとつの方法は、

ローカル環境にWordpressを自動インストールせず、データベースとデータファイルをそっくりそのままコピーする

ここで説明するのは後者の方。

どちらの方法にもそれぞれメリット・デメリットがあり、一概にどちらの方法が優れているとはいえないのですが、前者のWordpressの自動インストールで移行を行う場合、Wordpressのバージョンをアップデートするには適した方法ですが、Wordpressを通常は編集しないファイルまでカスタマイズしてしまっている場合にはおすすめできません。

というのも、Wordpressを自動インストール、もしくはアップデートした際に自動的に上書きされてしまうファイルが出てくるので、その際に発生しうる不具合をひとつひとつ修正していかなければならないからです。

逆に後者の場合は、すでに構築されたデータベースとデータファイルをそのままコピー(移行)するだけなので不具合が発生する可能性が極めて少なく、前者よりも再構築が簡単というメリットがあります。

ただし、後者の場合でも条件が揃わなければかえって手間がかかる可能性もあるので、以下ではその方法を手順を追って説明していきます。なお、Wordpressやサーバーに関する基本的な知識は持っているものとして話をすすめさせていただきます。

 

1. レンタルサーバーで運用中のWordpressをダウンロードする

最初に現在、レンタルサーバーで運用しているWordpressをそっくりそのままダウンロードします。

ダウロード方法は、FFFTPのようなFTPクライアントソフトでミラーリングダウンロードしても構いませんが、それだとダウンロードに結構時間がかかってしまうので、レンタルサーバーにSSHログインができる環境であれば、WordpressをフォルダごとZIP圧縮し、アーカイブで固めたファイルをダウンロードしたほうが速くて正確です。

以下は、ZIPで圧縮する際のコマンド例です。wordpressディレクトリを wordpress.zip という名前で圧縮します。-r はディレクトリごと圧縮するオプションです。

# zip -r wordpress.zip wordpress/

なお、当方はレンタルサーバーにエックスサーバーを利用していますが、エックスサーバーはSSHログインが可能です。Teraterm、PuTTYなどのターミナルソフトを使ってログインを試みてください。

 

2. ダウンロードしたWordpress をローカル環境にコピーする

Wordpressをダウンロードし終わったら、そのファイルをドキュメントルートにコピーしてください。

当方の環境では、C:\home をドキュメントルートとしており、その下にサブドメイン、サイトごとに階層を作ってフォルダ分けしています。

実際にコピーしたPATHは、C:\home\lenovo\photossy.com\wp です。

 

3. MySQLの初期設定(rootパスワード設定、ユーザーとDB作成)

次に、ローカル環境のMySQLの初期設定を行います。

XAMPPからMySQLをインストールしたばかりの状態だと rootパスワードが設定されていません。まずは以下のコマンドで rootパスワードを設定しましょう。

コマンドプロンプトを起動し、c:\xampp\mysql\bin のPATHまで移動してください。*** の箇所にはrootパスワードを入力してください。

> cd c:\xamppmysql\bin
> SET PASSWORD FOR root=PASSWORD('*********');

上で設定したパスワードで、MySQLにログインします。

> mysql -u root -p
Enter password: *********

ログインできたらまずは空のデータベースを作成します。この時作成するデータベースの名前は、レンタルサーバーで使用していたものと同じデータベース名にします。ここでは 「xxx_photo」というDB名で作成します。

mysql > create database xxx_photo;
Query OK, 1 row affected (0.00 sec)

次に、上記で作成した「xxx_photo」というデータベースを操作する権限のあるDBユーザーを作成します。ここでもレンタルサーバーで使用していたDBユーザーと同じ名前にしてください。

ここではhogehogeというDBユーザーを作成します。

mysql > Grant all privileges on xxx_photo.*
mysql > To 'hogehoge@localhost'
mysql > identified by '*********';

赤文字の「xxx_photo」はデータベース名、hogehogeはDBユーザー名、***の箇所には hogehoge というDBユーザーのパスワードを入力してください。

hogehoge の後ろの「@localhost」は、ローカル環境でのみそのデータベースにアクセスできることを意味しています。

以上でMySQLの初期設定は完了です。

 

4. レンタルサーバーのデータベースをエクスポートする

次に、レンタルサーバーのデータベースをエクスポートします。

通常、レンタルサーバーには phpMyAdminがインストールされているはずなので、そこからGUI画面でエクスポートします。以下では、レンタルサーバーにエックスサーバーを使っていることを前提で説明していきます。

まず、エックスサーバーのサーバーパネルからサーバーID、パスワードを入力して管理画面にログインしてください。次に管理画面左側で対象ドメインを選択し、「設定対象ドメインの変更」をクリック、操作したいドメインに切り替えます。

次に「DATABASE」のところで「phpmyadmin(MySQL5)」をクリックします。

 

phpMyAdminの管理画面に入るには、MySQLのDBユーザー名パスワードの入力が求められます。「ユーザー名」は上記で作成したDBユーザー名とパスワードを入力してください。エックスサーバーのサーバーパネルにログインする際のサーバーIDとは異なりますので注意してください。

phpMyAdminの管理画面にログインしたら、左フレームからエクスポートしたいデータベースをクリックします。

 

エクスポート」をクリックします。

 

DROP TABLE / VIEW / PROCEDURE / FUNCTIONを追加」、「ファイルに保存する」の2箇所にチェックを入れて、「実行する」をクリックします。

すると、「名前をつけて保存」のダイアログが現れるので、任意の名前を「.sql」という拡張子を付けてデータベースファイルを保存しておきます。

 

以上でデータベースのエクスポートは完了です。

 

5. エクスポートしたデータベースをインポートする

次に、上記でエクスポートしたデータベースをローカル環境にインポートします。

XAMPPコントロールパネルからMySQLの「admin」をクリックし、ローカル環境のphpMyAdminの画面を開いてください。

 

ローカル環境の phpMyAdmin の左側フレームに上記で作成した空のデータベース名があるはずなので、それをクリックします。すると右側にテーブルが表示されますが、データベースは空の状態のはずなのでテーブルのデータはひとつもない状態となっています。

次に、右側上部タブの「インポート」をクリックします。

 

「インポートするファイル」から「ファイルを選択」をクリック。レンタルサーバー上でエクスポートしたSQLファイル(.sql の拡張子)を指定して、「実行」をクリックします。

 

インポートに成功すると、左側フレームに以下図のようなデータベーステーブルが表示されます。ここまでできたらインポートは完了です。

ローカル環境で作成したDBユーザー名とレンタルサーバー上で使っていたDBユーザー名が異なっていたりするとなんらかのエラーが表示されることもありますので、その際は再度、設定を見直してみてください。

 

 

6. データベースファイルのドメイン名を書き換える

さて、これが最後の作業になります。

ここまでレンタルサーバー上でエクスポートしたSQLファイルをローカル環境にインポートするところまで完了しました。

しかし、このままではまだSQLファイルの中身がレンタルサーバー上のドメイン名のままになっているので、これをローカル環境のドメインに書き換える作業を行わなければいけません。

SQLファイルはメモ帳などのテキストエディタで開けるので、高機能エディタを使えば一括置換することが可能ですが、ここではSQLファイル内のドメイン名を一括して置換してくれるPHPスクリプトがあるのでそれを利用していきます。このスクリプトを使うメリットは、置換前に置換後の状態をプレビューできることです。

まずは、以下のサイトでそのPHPスクリプトをダウンロードしてきてください。

DATABASE SEARCH AND REPLACE SCRIPT IN PHP

 

ダウンロードが完了したら、Search-Replace-DB-master.zipを解凍します、解凍後、Search-Replace-DB-masterフォルダをそのままWordpressフォルダにコピーします。

 

次にWordpressフォルダ内にある wp-config.php を開いて、DB_HOSTをローカル環境のホスト名に書き直してください。ここでは「localhost」と指定しています。

以下、1行目がデータベース名、2行目がDBユーザ名、3行目はDBユーザーがデータベースへアクセスするためのパスワード、4行目がMySQLデータベースのホスト名です。すべての項目が正しくないとスクリプトにはアクセスできません。

define('DB_NAME', 'xxx_photo');
define('DB_USER', 'hogehoge');
define('DB_PASSWORD', '*********');
define('DB_HOST', 'localhost');

 

Apache でVirtualHost ディレクティブを設定をしている場合は、hostsファイルの編集も忘れずに。hostsは、IPアドレスとホスト名をひもづけるファイルです。Windows8 のデフォルトでは C:\Windows\System32\drivers\etc 内にあります。

以下にhostsファイルの記述例を記載します。以下では、leno-photossy がローカル環境における Wordpressのホスト名になるように設定しています。http://localhost/ でも http://leno-photossy/ でもどちらのURLでもアクセスが可能になります。

127.0.0.1     localhost
127.0.0.1     leno-photossy

なお、httpd-vhosts.conf VirtualHost設定をしている場合、1番先頭に記述されているサイトが http://localhost/ でアクセスできるサイトになります。

もし、http://localhost/ でアクセスして異なるサイトが表示される場合は、
httpd-vhosts.conf 内で該当サイトを先頭行に持ってくるようにしましょう。

 

 

話が逸れましたが、wp-config.php を編集し終えたらブラウザからスクリプトにアクセスします。

ローカル環境のWordpressのアドレスが http://localhost/ ならば、
http://localhost/Search-Replace-DB-master/ のようにアクセスすると以下図のような画面が現れます。

 

このスクリプトにアクセスできたということは、「database」の項目は全て埋まっているはずです。

あとは「search/replace」のところで置換前のアドレスを「replace」の空欄に、置換後のアドレスを「with」の後ろの空欄に入力します。入力し終えたら「dry run」をクリックして置換テストを行い、それで問題がなければ「live run」をクリックして置換を実行します。

「live run」を実行する前は必ずSQLファイルをバックアップしておくことを忘れずに。

 

これで置換作業は完了。

確認作業としてブラウザから http://localhost/ でアクセスしてサイトが正常に閲覧できるかどうかを確認して下さい。

サイト内のリンクにマウスカーソルを合わせた際、http://localhost/movie や http://localhost/art のようにレンタルサーバー上にあるサイトにリンクが飛んでいなければ置換は成功です。

 

長い道のりでしたが、これでWordpressをレンタルサーバー上からローカル環境に移行することができました。人によっては require文などでヘッダーやフッターをインクルードしている方はその辺りのアドレスの変更も必要になるかもしれません。

慣れてしまえば移行作業も非常に簡単です。ただ、一度成功するまでが結構手こずると思うので諦めずに頑張ってください。

以上で、レンタルサーバー上のWordpressをローカル環境にコピー(移行)する方法の説明は終了です。

 

 

総計 総計
昨日 昨日
今日 今日