レンタルサーバ上にある本番サイトを、ローカル環境のwordpress上に複製サイトとして再構築するための方法と手順をメモします。
実行環境
Macbookpro, Mac OS X ver10.6.8、MAMP + wordpressという環境で試しました。MAMPの設定は以下のようにデフォルトのままです。
方法概要
ローカル環境に本番サイトを再構築するためには以下のステップが必要になります。
- ステップ1:本番サイトのデータベースをエクスポートする
- ステップ2:本番サイトのwordpressフォルダを丸ごとローカル環境にコピー
- ステップ3:ステップ1でエクスポートしたデータベースファイル内のURLをローカル環境用に置換する
- ステップ4:ローカル環境のphpMyAdminで新しいデータベースを作成
- ステップ5:ステップ3でURLを置換したデータベースファイルをステップ4で作成したデータベースへインポート
- ステップ6:wp-config.phpを修正
以降で各ステップについて説明します。
本番環境でやること
ステップ1:本番サイトのデータベースをエクスポートする
本番サイトのデータベースのエクスポートは、本番サイトが設置されているサーバのphpMyAdminから行います。
使用しているレンタルサーバによってphpMyAdminへのアクセス方法は異なりますが、いずれにせよphpMyAdminにアクセスすると、以下のようなログイン画面が出るはずです。
ログイン画面でユーザ名とパスワードを入力すると、以下のような画面が出ます。そして以下の画面の左側の赤線枠部分のように、作成済みのデータベース名が表示されています。下の場合は「databaseA」、「infomation_schema」が作成済みのデータベースになります。
そして、上の画面左側の赤線枠内の本番サイトが使用しているデータベース名(ここではdatabaseAとします)をクリックすると、以下の画面になります。以下の画面内の下の方にある、「すべてチェックする」をクリックし、その後「チェックしたものを」をクリックします。
すると、以下のように、「エクスポート」という選択肢が表示されるので、「エクスポート」をクリックします。
すると、以下のようにエクスポートの設定画面になり、最後に「実行する」をクリックすると、databaseA.sqlというファイルのダウンロードが始まります。これは、databaseAの中身が記述されたsqlファイル(拡張子が.sqlのファイルです。)です。ちなみにこの画面の設定は何も変更しませんでした。
以上で本番サイトのデータベースのエクスポートは完了です。後ほど、このエクスポートしたデータベースをローカル環境の複製サイト用にインポートします。
ステップ2:本番サイトのwordpressフォルダを丸ごとローカル環境にコピー
具体的には、本番サイトのwordpressフォルダ(wp-admin、wp-content、wp-includesフォルダが置いてあるフォルダのことです。)をローカルのドキュメントルートである「/Application/MAMP/htdocs/」に丸ごとコピーします。このとき、すでにローカル環境にwordpressがインストール済みであり、ドキュメントルートであるhtdocsにwordpressフォルダが存在する場合は、フォルダ名を別の名前に変えてhtdocsに置きます。ここでは、以下のように、「wordpress_B」という名前に変えてhtdocsに置きました。
私はこのコピー作業を「cyberduck」を用いて行いました。FTPだけでなく、SFTPやSCPを使ったファイル転送、ディレクトリごとの転送も可能で、とても便利です。不具合などもなく重宝しています。おすすめです。
以上で本番環境での作業は完了です。
ローカル環境でやること
ステップ3:ステップ1でエクスポートしたデータベース(databaseA.sql)内のURLをローカル環境用に置換する
ステップ1でエクスポートしたデータベースファイルである「databaseA.sql」を適当なエディタで開きます。私は「Sublime Text2」というエディタを使用しました。
そしてsqlファイル内に、本番サイトのURL「https://www.virment.com」が記述されている部分が多数見つかると思います。このURLをローカル環境のURL「http://localhost:8888/wordpress_B」に置換します。ここで、ローカル環境のURLはドキュメントルートに置いたフォルダ名である「wordpress_B」に合わせて下さい。
ただし、本番サイトのURLとして、「https://virment.com」が記述されている場合があるので、エクスポートしたデータベースファイル内の本番サイトのURLらしきものを全て忘れずにローカル環境用に置換するよう気をつけて下さい。
なおこの置換作業にはsublime text2を使用しました。
ステップ4:ローカル環境のphpMyAdminで新しいデータベースを作成
ここで作成するデータベースが、本番サイトのデータベースであるdatabaseAのインポート先になります。
ローカルのphpMyAdminにログインすると以下のような画面になります。この画面の赤線枠部分の「データベース」をクリックします。
すると、以下の画面のように「データベースを作成する」という項目があるので、そこに適当な名前を入力して「作成」をクリックします。以下の場合は「databaseB」というデータベースが新しく作成されます。
以上でローカル環境に再構築する複製サイト用データベースの作成は完了です。ここで新しく作成した「databaseB」にステップ1でエクスポートしたdatabaseAをインポートします。
ステップ5:ステップ3でURLを置換したデータベースファイルdatabaseA.sqlをステップ4で作成したデータベースdatabaseBへインポート
ステップ3でURLを置換したデータベースファイル「databaseA.sql」をステップ4で作成した「databaseB」へインポートします。
まずはローカルのphpmyadminの左側に表示されている「databaseB」をクリックします。
その後、以下の画面上方の赤線枠内の「インポート」をクリックすると、インポート画面になります。そしてインポート画面では、以下のように「アップロードファイル:ファイルを選択 選択されていません」と表示されている部分があります。ここで、「ファイルを選択」をクリックして、databaseA.sqlを選択します。選択後、最後に同じ画面の一番下に「実行」というボタンがあるので、これをクリックすればインポートは完了です。
ステップ6:「wordpress_B」フォルダ内にあるwp-config.phpを修正
具体的には、wordpress_Bフォルダ内にあるwp-config.php内のデータベース名、データベースユーザ名、ユーザパスワード、ホストネームを以下のように修正します。
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'databaseB'); ←ここのデータベース名を「databaseB」に変更
/** MySQL database username */
define('DB_USER', 'root'); ←データベースユーザ名を変更
/** MySQL database password */
define('DB_PASSWORD', 'root'); ←パスワードを変更
/** MySQL hostname */
define('DB_HOST', 'localhost'); ←ローカル環境用に「localhost」に変更
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
データベース名を本番サイトのデータベースをインポートした「databaseB」に変更します。また、データベースユーザ名とそのパスワードをローカル環境のphpMyAdminと同じものに変更します。なお、デフォルトではこれらはどちらとも「root」である可能性が高いです。
以上で本番サイトをローカル環境に再構築できていると思います。確認のために、ブラウザ上で「http://localhost:8888/wordpress_B」にアクセスしてみて下さい。これで本番サイトと同じサイトが表示されていれば成功です。また、同様に「http://localhost:8888/wordpress_B/wp-login.php」にアクセスすれば、管理画面に入れます。ちなみに、http://localhost:8888/wordpressにアクセスすれば、すでにローカル環境に存在していたサイトにアクセスできるはずです。
なので、この方法ならばローカル環境に複数のサイトを再構築できます。もし、ローカル環境に、すでに存在するサイトとは別のサイトを新しく追加したい場合は、ローカル環境のwordpressに複数のテストサイトを構築して管理する方法が参考になるかもしれませんので参照下さい。
また、もし以上の方法でうまくいかない場合は、以下が参考になるかもしれません。
うまくいかない場合
wordpressの管理画面は表示できるが、複製サイトを開くと本番サイトにリダイレクトされてしまう
この場合は、wp-config.php内に以下の2行を追記することで解決できます。
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
define ('WP_SITEURL', 'http://localhost:8888/wordpress_B/'); ←これを追記
define ('WP_HOME', 'http://localhost:8888/wordpress_B/'); ←これを追記
wordpress_Bの部分は、各自が付けたwordpressフォルダの名前に置き換えて下さい。
ローカル環境に再構築した複製サイトのトップページ以外のページが表示されない
この場合は、wordpressフォルダ内にある「.htaccess」の編集が必要な可能性が高いです。例えば、wordpress_B内にある「.htaccess」は以下のようになっていました。(実際には、他の記述もありますが、そこはローカル環境においては関係ないので載せていません。また修正する必要もないです。)そしてこのままでは、「http://localhost:8888/wordpress_B」にアクセスしてトップページは開けるものの、他のページに移動すると「Not Found」と表示されてしまいました。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
そこで、以下のように「.htaccess」を修正しました。その結果、問題なくトップページ以外も表示されるようになりました。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress_B/ ←ここを修正
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress_B/index.php [L] ←ここを修正
</IfModule>
# END WordPress
つまり、上のように「RewriteBase」と「RewriteRule」で指定しているURLの部分を、複製サイトのwordpressフォルダである「wordpress_B」のURLに変更することで解決できます。
ちなみに、.htaccessには他の記述もあると思いますが、ローカル環境で動かす分にはそれらの記述はコメントアウトしても大丈夫だと思います。もちろん自己責任でお願い致します。
また、以上の「.htaccess」はデフォルトの場合だとFinder上には表示されません。よって、編集する場合は、ターミナルからコマンドで編集するか、もしくは他のエディタから開いて編集する必要があります。例えば、私が使っているSublime Text2だと、「.htaccess」も開くことができ、おすすめです。
SPONSORED LINK
色々なサイトを拝見しましたが、こちらの説明が一番わかりやすかったです。個別ページが表示できずに一度ハマったのですが、説明通りに.htaccessを作成したところ解決しました。ありがとうございました。
ところでこの記述にですが「WP_SITEURL」の部分に「’」が抜けているかと……。修正していただけるとよりよいのではないかと思います。
define (WP_SITEURL, ‘http://localhost:8888/wordpress_B/’); ←これを追記
それでは!
コメント頂きありがとうございました。少しでもお役に立てたのなら良かったです。また、ご指摘頂いた部分を修正致しました。ご指摘ありがとうございました。今後も何かありましたらコメント頂ければと思います。よろしくお願い致します。
本場サーバからMAMP環境へデータを移行したのですが、トップページ以外のページが全て本番サイトにリダイレクトされるのでこちらを参考にさせていただき、2行追加した所無事治りました!どこにも乗ってない情報なので助かりました。ありがとうございました!