WordPressのサイトをローカル環境(MAMP)に移行する方法
今回は、インターネット上で公開しているWordPressのサイトを、ローカル環境(MAMP)に移行する方法を調べていきたいと思います。
なぜこのようなことをするかというと、大幅なサイトの変更を行うときなど、あらかじめ、ローカル環境で確かめておきたいですよね?そのために、ローカル環境でもWordPressのサイトを動かせるようにしてみたいと思いました。
逆の、ローカル環境から本番環境への移行については、情報が不足しているため、おいおい改めて調べていこうと思っています。
WordPressのバックアップとデータベースのバックアップを行う
データ移行には2つの手順が必要です。
- WordPressのデータを移行する
- データベースを移行する
これを行うのに、大まかな手順は、以下の6項目となります。
- ローカル環境でのデータベース作成(移行先)
- 本番環境でのデータベースのエクスポート(移行元)
- 本番環境のWordPressデータのダウンロード(移行元)
- ローカル環境で本番環境のデータベースのインポート(移行先)
- ローカル環境にWordPressデータのコピー(移行先)
- 必要な設定の変更など(移行先)
1.ローカル環境でのデータベース作成(移行先)
「phpMyAdmin」からデータベースを作成しておきます。ここでは、名前を「moyasea_home」としています。
「作成」をクリックして、データベースを作成します。
2.本番環境でのデータベースのエクスポート(移行元)
データベースを選択し、エクスポートをクリックします。
フォーマットは「SQL」で、「実行」を押してエクスポートを行います。
3.本番環境のWordPressデータのダウンロード(移行元)
FTPソフト(自分の場合、WinSCP)を利用して、本番環境のWordPressのデータをすべてダウンロードします。
データをダウンロードしたら、「wp-config.php」を次のように編集しておきます。
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'moyasea_home' );
/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'moyasea_home' );
/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', '(秘密です)' );
/** MySQL のホスト名 */
define( 'DB_HOST', 'localhost' );
/** データベースのテーブルを作成する際のデータベースの文字セット */
define( 'DB_CHARSET', 'utf8' );
/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define( 'DB_COLLATE', '' );
4.ローカル環境で本番環境のデータベースのインポート(移行先)
「2.本番環境でのデータベースのエクスポート(移行元)」で、エクスポートしたファイルをローカル環境で作成しておいたデータベースを選択し、「実行」を押してインポートを行います。
5.ローカル環境にWordPressデータのコピー(移行先)
「3.本番環境のWordPressデータのダウンロード(移行元)」のデータをローカル環境にコピーします。
自分の環境では、MAMPを使っていて「shirakawaroom」というフォルダに入れたいので、「C:\MAMP\htdocs\shirakawaroom」下にコピーを行います。
ローカル環境のサイトURLはSSL環境下なので「https://localhost/shirakawaroom」となります。
6.必要な設定の変更など(移行先)
ローカル環境のデータベースの変更を行います
本番環境のドメイン(moyasea.stars.ne.jp)をローカル環境サイトURL(localhost/moyasea)に変更します。
変更は、「phpMyAdmin」から行います。次のSQL文を流します。
UPDATE `wp_options` SET option_value=REPLACE (option_value,'moyasea.stars.ne.jp','localhost/moyasea');
UPDATE `wp_posts` SET guid=REPLACE (guid,'moyasea.stars.ne.jp','localhost/moyasea');
UPDATE `wp_posts` SET post_content=REPLACE (post_content,'moyasea.stars.ne.jp','localhost/moyasea');
UPDATE `wp_postmeta` SET meta_value=REPLACE (meta_value,'moyasea.stars.ne.jp','localhost/moyasea');
「実行」をクリックします。
変更が完了しました。
ローカル環境のWordPress設定ファイル「wp-config.php」の変更を確認します
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'moyasea_home' );
/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'moyasea_home' );
/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', '(秘密です)' );
/** MySQL のホスト名 */
define( 'DB_HOST', 'localhost' );
/** データベースのテーブルを作成する際のデータベースの文字セット */
define( 'DB_CHARSET', 'utf8' );
/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define( 'DB_COLLATE', '' );
.htaccessの作成
#SITEGUARD_PLUGIN_SETTINGS_START
#SITEGUARD_PLUGIN_SETTINGS_END
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /moyasea/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /moyasea/index.php [L]
</IfModule>
# END WordPress
恐らく、本番環境とほぼ同じ設定で動くと思います。
ローカル環境での動作確認
アドレスバーに「https://localhost/moyasea/」と入力してアクセスをします。
で、表示が確認できて完成!と行きたいところですが、現在、表示が確認できておりません。
というか、様子を見ていると表示が非常に遅く、途中でタイムアウトになっているような感じがしました。
調べてみると、どうやら「MAMP」環境下だと重くなるといった現象が多くみられました。
「docker」環境下で行うと、速いとの意見もあったので、環境を「docker」にして、再度挑戦してみたいと思います。
引き続き、作業を進めていきたいと思っております。
「MAMP」と「docker」の両方のプラットフォームで試したところ、両方大差ないという結果に終わりました。
その変わり朗報が!
wp-config.phpに次の文言を加筆する
/* 追加 2022/05/15 */
define('WP_HOME','https://localhost/moyasea/');
define('WP_SITEURL','https://localhost/moyasea/');
このようにしたところ、速度もあがり、問題なく使うことができるようになりました。
以上、お疲れ様でした。
コメント