SandY Design Studioはインボイス発行事業者です詳細

WordPress 本番サイトをそのままローカル環境に持ってくる術

Contents

はじめに

ウェブ制作では本番環境であれこれイジるのではなくやはりローカル(マイPC内だけ)でイジりたいものだ。なのでサーバーとローカル間でのお引越しが頻繁に必要になってくる。手順はまあまあ面倒だが方法論は確立している。近頃ようやくすんなり引っ越しができるようになり、ここらへんで忘れないうちに手順をまとめておこうと思う。

引っ越しというのは下記のように2種類ある。行きと帰り。

  1. 本番サーバーのサイトをローカルに引越し
  2. ローカルサイトを本番サーバーへ引越し

ここでは1の引越し方法を解説している。2については別記事があるのでそちらをご参照ください。

前提条件

  • 既存の本番サイトはさくらインターネット・スタンダードプラン
  • ローカル環境はWordPressローカル環境構築ツール Local by flywheel(以降Local) インストール済のmac
  • バックアップ系や移行支援などのWordPressのプラグインは使わない
  • データベースの書換えにSearch-Replace-DB-masterを利用

段取りとしては、WordPressのファイル群とデータベースをそれぞれ本番サーバーからLocalにコピーする2段構えとなる。

本番サーバーのWordPressファイル群をダウンロード

FTPで本番サーバー上にあるWordPressのディレクトリごとローカルPCにダウンロード。

この図はFilezillaを使用

WordPressのディレクトリというのは、wp-contentwp-adminwp-includesというフォルダやらwp-config.phpとかのファイルが有る階層の1個上のフォルダの事ね。自分はそのフォルダ名をいつもwpと付けてるので以降 wp と表記。

セキュリティ系プラグインは無効化

この際、WordPressの管理画面でキャッシュ系、バックアップ系、セキュリティ系のプラグインを無効化してからやってる。特にセキュリティ系。トラブルのもとになりそうなので。

あとそのサイトの普段のバックアップをWordPressのディレクトリ配下にとってる場合はダウンロードから除外しておくといいかも。

ファイル群をローカル環境にマージ

Localで新規サイトを作成する

メニューバーから[File]-[Add New Site]

サイト名や保存場所を決める。今回は本番サイトがsandy-jp.comなのでsandy-jp.localとする。

自分はたいていサイト名を本番ドメイン名と同じにしてる

PHP Version WebServer Database (MySQLのバージョン)はできるだけ本番サーバーのものと合わせといたほうがいいだろう。

本番サーバーと同じ(か近い)バージョンを

adminの設定を同じに

ミソとしてはこの際、WordPress UsernameWordPress Passwordは、本番サーバーのWordPressにおけるadminのユーザー名とパスワードと同じにしておくとさらにいいと思う。

UsernameとPasswordは本番サーバーと同じに

WordPressのインストール中…

ローカルサイト鋭意準備中…

インストールが終われば、SSL項のTRUSTをクリックしてSSL化しておく。

出来たらSSLのTRUSTをクリックしておく(要パソコンのパスワード)
SSL化された

本番サーバーのファイル群をLocalにマージ

出来上がったLocal by Flywheelのサイトの/app/public/wp-config.phpをちょっとよけておく。これだけは上書きされたくないので。

wp-config.php を別の場所へコピー

そのLocal by Flywheelのサイトの該当ディレクトリ/app/public/の中にさっきダウンロードしたディレクトリwpの中身をマージというかコピーと言うか置き換えというか。全部をエイッと大胆に。

wpの中身を全部localの/app/publicへコピー…ていうかこれメッチャうまい事スクショできたと思わん?
基本、置換でいいと思う

コピーが終われば先程のwp-config.phpを元の場所に戻しておく。これも上書きになる。


importは使わない

ちなみにLocal by Flywheelにはimportという機能があるのだが、うまく行った試しがないので(笑)これは使わない。

失敗しかしないLocalのインポート機能(調査対象私1人)
今日も元気にエラーに

本番サーバーのデータベースをダウンロード

phpMyAdminを開いて該当のデータベースをまるっとダウンロードする。

データベースのユーザ名とパスワードが必要

phpMyAdminにログインして、複数のデータベースがある場合はダウンロードすべきデータベースを間違えないように選択して、メニューのエクスポート。

エクスポートすべきデータベースを左ペインで選択
プラグインの入れ具合によってはテーブルが多いが(WordPressだけなら12個)気にせずエクスポート

エクスポート方法:は詳細にして全部のテーブルにチェックが入ってることを確認、のこりのいっぱいあるオプションはとりあえずデフォルトで上手くいくと信じて一番下の実行ボタンをポチっと。

とまあいつもそうやってるのだが実はエクスポートは簡易のままで大丈夫だったりする。

今回は結局設定を一切触らず(簡易のまま)に実行した。

とりあえずいきなり[実行]ボタンをしても大丈夫だと思う

ダウンロード時のファイル名をhonban.sqlと付けたとする。

ローカルのデータベースにインポート

データベース管理ツールAdminerを開く

LocalのDATABESEからOPEN ADMINERを開く。ADMINERはLocalのphpMyAdmin。

DATABASEタブからConnectの OPEN ADMINER
Adminerという名のMySQL用GUIアプリ

LocalのWordPress用に新しいデータベースを作成する

DBを空白にする。

DBのLocalとなっているドロップダウンリストを開くと…

一番上の空白を選択。

OSやバージョンでリストの見た目は違いがある

データベースを作成をクリック。

左欄(データベース名)を決めて入力する。ここではsandyとしよう。

中欄(文字コードの設定)だが、utf8_general_ciが正解だと思うのだが、いつも何も指定しないままやっても問題なく使えているので今回もこのまま行く。

右の保存をクリック。

[保存]クリックでデータベースが出来上がる

エクスポートしたデータベースをインポート

出来上がったDB sandyにてインポートをクリック。

さきほど本番サーバーからダウンロードしたインポートすべきファイルhonban.sqlを選んで実行

書いてあるようにインポートするファイルは1GB未満でないとエラーになる

これでインポート完了。

wp-config.phpを書き換え

さきほどよけておいて上書きし直したwp-config.php。こいつの中身のDB_NAMEをさっき作ったDB名「sandy」に変更。wp-config.phpの場所はお忘れではないと思うが以下。

Localのインストールディレクトリ/app/public/wp-config.php
<?php
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'sandy' );

/** Database username */
define( 'DB_USER', 'root' );

/** Database password */
define( 'DB_PASSWORD', 'root' );

/** Database hostname */
define( 'DB_HOST', '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', '' );

DB内に書き込まれている、サーバーのURL全部をローカルのURLに書き換える

このURL書き換えが大変な作業で人力では厳しいのだがSearch-Replace-DB-masterを使うと一気に書き換えることが出来るので安心されたし。あって良かった神ツール。

Search-Replace-DB-Masterの準備

まだSearch-Replace-DB-masterを持ってない場合はサイトにアクセスして名前とメアドを登録したらダウンロードできるのでダウンロードしてそのZIPを解凍しておく。

解凍してできたSearch-Replace-DB-masterというフォルダを/app/publicの中にコピー。

Search-Replace-DB-masterフォルダをpublicの中にコピー
この位置に来るように

そのパスにブラウザからアクセスする。今回は、

https://sandy-jp.local/Search-Replace-DB-master

というURLになる。

Search-Replace-DB-masterの設定

SerchReplace項に本番サーバーのURLとローカル環境のURLを入力。

replace欄が本番サーバーのURL、with欄がローカルサイトのURL

重要

ここでURLの最後に/を絶対に書かないこと。これを書くと肝心要なWordPress一般設定のアドレス欄2箇所をSearch-Replace-DB-masterが書き換えてくれなくて何度アクセスしても本番サーバーにリダイレクトされて永遠にローカル環境へログインできないという沼にハマる(怖)

URL末尾に/を入れちゃうとこの2つのURLがこのままに…

DatabaseDetail項に下記それぞれ入力。

  • Database name: さっきADMINERで新たに作ったDB名 sandy
  • username: root
  • pass: root
  • host: localhost
  • port: 空白

Test Connection押してSuccess. You are connected. となればDBへの接続OK。

テストランと本番ラン

Do a safe test runでテストランしてみる。

環境によってはエラーメッセージが出まくることがあるが殆どの場合気にする必要なし。この例ではYoastプラグイン使ってたら出るエラーと書いてある。確かにこのサイトではYoast Duplicate Post使ってる。

大量の真っ赤のエラーっぽいメッセージが!…もう慣れたけど

下半分にテーブル毎のデータの書き換え数(これはドライランだから書き換えてないが)が表示される。いけてそうな気がしたら、Search and Replaceボタンをポチる。

Search and Replace の上の訳は「やり直せへんけどええか?」
完了

書き換えが済んだらSearch-Replace-DB-masterはもう用無し。ここはローカル環境なので削除するなり放置するなり自由にしてOK。

出来上がり

お引越しはこれで完了。もうローカル環境のWordPressにログインできる筈。前段での設定通り本番サーバーのadminと同じユーザ名とパスワードでログイン。

最後にログイン後、設定 → パーマリンクのページで変更を保存ボタンをポチるというおまじないを念の為しておこう。

ローカル環境は間違わないように管理画面の色を変えているのだ。

いかがだっただろうか。スムースに移行できたらおめでとう。

参考サイト

ちなみにこのWordPressデータ移行のHOW TOはググればいくつもヒットするのだが、、、大半はその通りやっても上手くいかなかったりする。環境が違うせいかバージョンが古いのか…正直往生した。

そんな中、最も参考になったサイトはこちら。

お世話になりありがとうございました。

よかったらシェアしてね!
Contents