レンタルサーバーで作成したWordPressのサイトをローカル環境へ移行する方法

レンタルサーバー環境に作成したWordPressのサイトをローカル環境へ移行する方法についてまとめています。ローカル環境はXAMPP/MAMP/DS216j(NAS)を使った環境を想定しています。レンタルサーバーはさくらインターネットを想定しています。

レンタルサーバーの環境をローカル環境へ移行するとサーバー環境が正常にバックアップできたかどうかを確認できますし、またサイトのカスタマイズなど試したい修正をサーバー環境に影響することなくローカル環境で実施することができます。ここではまるっと全ての環境をレンタルサーバーからローカル環境へ移行する方法についてまとめています。

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

レンタルサーバーのサーバコントロールパネルにログインし、データベースの設定から管理ツールログインをクリックしphpMyAdminログイン画面を表示します。

さくらphpMyAdmin

さくらphpMyAdminログイン

phpMyAdminへログイン後、エクスポート対象データベースのエクスポートタブを選択し「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENTを追加」をチェックし、画面下にある「実行」ボタンを押します。

さくらDBエクスポート

「[データベース名].sql」ファイルをダウンロードして保存します。

レンタルサーバーからWordPressファイルをダウンロード

ターミナルでサーバーにログインします。

接続方法について、WindowsではTeraTerm、Macではターミナルなどを使って行います。「レンタルサーバーへSSH接続する方法」を参考にしてください。

対象WordPressディレクトリを圧縮

ダウンロードの対象ディレクトリ配下をすべてZIP形式に圧縮します。

zip -r [圧縮ファイル名] [対象WordPressディレクトリ]

zipコマンドのオプション

-e 圧縮ファイルにパスワードを付けます。
-r ディレクトリを再帰的に圧縮します。
-u 圧縮されているファイル内のファイルを更新します。
-z アーカイブにコメントを追加します。
-@ 対話的に圧縮するファイルを指定します。

FTPクライアントアプリを使用して、圧縮したファイルをローカルにダウンロードします。

アプリについては「FTPクライアントアプリの使い方」を参考にしてください。ここではWinSCP、FileZillaを紹介しています。

ダウンロードしたファイルを展開後、Webルートディレクトリに格納します。

参考にXAMPP/MAMP/DS216j(NAS)それぞれWebルートのデフォルトは以下です。
・XAMPP→「C:\xampp\htdocs」(Windows)
・MAMP→「/Applications/MAMP/htdocs」(Mac)
・DS216j→「web共有ディレクトリ」(NAS)

ローカル環境でデータベースを新規作成

データベースの作成はコマンドを使用する方法と、phpMyAdmin操作画面から作成する方法の2種類説明します。コマンドの使用は慣れると早くできますが、どちらでも同じように作成できるのでやり易い方を選んでください。

作成するデータベース名はサーバー環境と同じにした方が混乱なく環境を作成できます。

コマンドを使用したデータベースの新規作成

コマンドを実行するために、Windowsの場合はコマンドプロンプトを管理者モードで起動、Macの場合はターミナルを起動します。

XAMPP/MAMPを起動し、 MySQL、Apacheを起動します。

MySQLにログインします。

mysql -u root -p

データベースを新規作成し権限付与します。

create database [データベース名] character set utf8;
grant all on [データベース名].* to '[ユーザー名]'@'localhost' identified by '[パスワード]';

XAMPP/MAMP/DS216jからデータベースの新規作成

XAMPP/MAMP/DS216jからMySQLのphpMyAdminコンソールを起動しログインします。

XAMPPの場合は起動画面のAdminボタンかlocalhostのルートで表示されるトップページの上部にphpMyAdminへのリンクがあります。

XAMPP_phpMyAdmin

XAMPP_phpMyAdminWeb

MAMPの場合は起動画面からWebStartページを開いて、ページ上部のツールメニューからphpMyAdminへのリンクがあります。

MAMP_WebStart

MAMPのphpMyAdmin開く

phpMyAdminログイン

DS216jの場合はDSMからphpMyAdminコンソールを起動します。

ログインしたら上部メニューにあるデータベースを選択し、「データベースを作成する」に新規作成するデータベース名(サーバーで使用しているデータベース名を推奨)を入力し、「照合順序」はutf8_general_ciを選択して作成ボタンを入力します。phpMyAdminDB作成

ローカル環境のデータベースにレンタルサーバーのデータベースをインポート

phpMyAdmin画面左サイドメニューから先ほど作成したデータベースを選択します。

phpMyAdmin画面上部メニューにある「インポート」を選択し、「ファイルを選択」ボタンを押して先ほどエクスポートしたレンタルサーバーのデータベースファイル(.sql)を選択しファイルの文字セットでuft-8を設定してページ下部にある実行ボタンを押します。

データベースインポート

※以下メッセージが表示されてインポート出来ない場合

「インポートするデータを受信できませんでした。ファイル名が送信されていないか、ファイルサイズが PHP の設定で許可された最大値を超えています。FAQ 1.16 をご覧ください。」

このエラーが表示されたときはphp.iniの設定にあるファイルの最大値を変更すると解消できます。

・php.ini を開く

XAMPPの場合は「C:\xampp\php」配下にあります。

MAMPの場合は「/Apptiolications/MAMP/bin/php/phpx.x.x/conf」配下にあります。MAMPは複数のphp環境がインストールされるので、アプリで設定しているphpバージョン配下のphp.iniを修正してください。

・「; Maximum allowed size for uploaded files.」行以下の値を2Mから10MB等に変更

upload_max_filesize = 10M (初期値は2MBに設定されています。MAMPは32MBに設定されているのでこのエラーは表示されないかもしれません。)

・XAMPPもしくはMAMPのMySQL、Apache 再起動して再度インポートを実行してください。

レンタルサーバーからダウンロードしたWordPressフォルダにあるwp-config.phpファイルを修正

ダウンロードしたWordPressフォルダの中にあるwp-config.phpをローカル環境用に修正します。

/** WordPress のためのデータベース名 */
define('DB_NAME', 'wordpress');           ←作成したデータベース名を入力
/** MySQL データベースのユーザー名 */
define('DB_USER', 'root');                ←rootを入力
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'xxxxxxxx');    ←rootのパスワードを入力
/** MySQL のホスト名 */
define('DB_HOST', 'localhost');           ←localhostを入力

※レンタルサーバーとローカル環境のディレクトリ構成が違う場合は、.htaccessファイルも修正して下さい。このファイルはWordPressで構築したWebサイトのルートにあります。

例えば、レンタルサーバーはhttp://hogehoge.comをルートとしてWebサイトが表示されていると、ファイル内は以下の記載になっています。

# 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

これをローカル環境に移行する際に、「http://localhost/wordpress」をルートとして構築する場合は以下のように変更します。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/  ←変更箇所
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]  ←変更箇所
</IfModule>
# END WordPress
※移行した後にアクセスがうまくいかない時は、このファイルを修正し忘れていることがよくあります。ご自身の構築環境に合わせて「.htaccess」ファイルを修正してください。

本番URLをローカルURLに書き換え

スクリプトを使用しインポートしたデータベース内の本番URLをローカルURLに書き換えます。

以下のサイトにアクセスし「DOWNLOAD V3.1.0」を押下し「Search-Replace-DB-master.zip」をダウンロードします。

Search and Replace for WordPress Databases Script

データベース置換1

zipファイルを解凍すると「Search-Replace-DB-master」フォルダが格納されているので、こちらを「wp-config.php」と同階層にフォルダごと配置してください。

置換スクリプト置き場

ブラウザで「http://localhost/WordPressディレクトリ名/ Search-Replace-DB-master/index.php」にアクセスすると以下の画面が表示されます。

データベース置換2

画面上部replace項目に検索ワードを入力し、with項目に置換したいワードを入力します。databese項目はwp-config.phpの項目を自動で入力されています。

すべて入力できたら、actions項目の「dry run」ボタンを押してまず試験的に実行します。すると以下のような画面が表示されます。

データベース置換3

検索したテーブルと行の一覧が表示され、変更候補がリンク付きで表示されます。リンクをクリックすると変更箇所の詳細を表示することができます。

確認して問題なければ「live run」ボタンを押して実際の置換を実行します。実行後は置換結果として上記と同じ画面が表示されます。

ドメイン名を変更するとき文字列の最後に”/”を入れずに置換したほうがスムースに全て置換できます(例:「http://localhost」)。データベースのwp_optionsにはWordPressサイトのホームアドレスが格納されていて、文字列最後に”/”がないためです。WordPressにログインできなくて「あれ?」と思いがちなので気を付けてください。また、「http://」なしのドメイン名だけで置換するとメールアドレスなどで使用しているドメイン名も「localhost」となるので、まずはURLで置換してから確認したほうがいいでしょう。ローカル環境をレンタルサーバーへ移行する際も同じです。

ローカル環境にログインしてWordPressの動作を確認

Webブラウザから「http://localhost/WordPressフォルダ名」にアクセスし、全ての固定ページ、投稿ページ、メニューなどに使われているリンクが正常に動作するか確認してください。

問題なく動作すればすべて完了です。お疲れ様でした。

関連:

Vagrant+VCCWの使い方を考える

シェアする