WordPressのローカル環境に本番環境のデータを持ってくる
前回、WordPressのローカル環境を構築しました。
前回の記事:WordPressのローカル環境構築ツールLocal by Flywheelが便利すぎる!
今のままでは全くの初期状態なので、本番と同期させたいのですが……、
結構自力といいますか、git pull
して npm i
ターンッ! で終わったりしないようです。
今回は、本番のデータをローカルに持ってくるためにやったことをまとめておきます。
ちなみに、PCはMac、サーバーはスタードメインの無料サーバー、WordPressのローカル環境構築はLocal by Flywheelを利用しています。
本番とローカルの差分確認
まず、本番とローカルの差分を確認してみました。
打ったコマンドについて
打ったコマンドは以下のとおりです。
$ diff -rq ローカルサイトのパス 本番サイトのパス
ローカルサイトのパスは、Local by Flywheelを使っていて、保存先を変えていない場合は、下記のようになっているはずです。
~/Local\ Sites/ローカルサイトの名前/app/public/
本番サイトのパスは、サーバーにアクセスして、ルートフォルダ以下のものを全てローカルにダウンロードしてきたものを保存した場所になります。
コマンドについて補足しておくと、
-r
オプションは、サブディレクトリを再帰的に比較、
-q
オプションは、ファイルに差異があるかどうかだけを比較し、同一の場合出力しない、というものになります。
差分結果について
差分は思っていたよりもずっと少なかったです。
検出できないものやダウンロードできていないファイルなどがあるのでしょうか……。
とりあえず、ちゃんと比較できたということにすると、結果は以下のとおり。
◆ 本番にしかないファイル
- /favicon.ico
- /wp-content/languages/plugins
- /wp-content/languages/themes
- /wp-content/plugins/akismet
- /wp-content/plugins/contact-form-7
- /wp-content/plugins/hello.php
- /wp-content/themes/twentyfifteen
- /wp-content/uploads/画像ファイル
基本的には、手動でインストールしたテーマとプラグイン、ファビコンと記事に使った画像のみですね。
◆ ローカルにしかないファイル
- /local-phpinfo.php
php情報がずらっと表示されるページでした。
◆ 差分のあったファイル
- /.htaccess
- /license.txt
- /readme.html
- /wp-config-sample.php
- /wp-config.php
- /wp-includes/images/crystal/license.txt
- /wp-includes/js/codemirror/csslint.js
- /wp-includes/js/dist/blocks.js
- /wp-includes/js/dist/date.js
- /wp-includes/js/jquery/jquery-migrate.js
- /wp-includes/version.php
差分を見ていきましたが、基本的にはこのまま(同一のものにしない)でよさそうです。
本番のファイルをローカルにコピー
差分を確認したところ、ローカルにないプラグインとテーマ、アップロードした画像(+ファビコン)を本番からコピーしてきて、ローカルに入れれば良さそうです。
下記のファイル(フォルダ)になりそうですね。
- /favicon.ico
- /wp-content/languages/plugins/
- /wp-content/languages/themes/
- /wp-content/plugins/
- /wp-content/themes/
- /wp-content/uploads/
ローカルサイトのパスは、Local by Flywheelを使っていて、保存先を変えていない場合は、下記の場所ですね。
~/Local\ Sites/ローカルサイトの名前/app/public/
テーマとプラグインの有効化
ローカルにコピーしただけでは変わらないので、WordPressのダッシュボードにログインして、テーマとプラグインを有効化します。
記事や固定ページなどのインポートとエクスポート
記事や固定ページのデータはデータベースに保存されているものなので、ファイルをコピーしてもローカルには保存されません。
sqlコマンドは使わず、WordPressのエクスポート・インポート機能を使って、データを入れたいと思います。
まず、本番のWordPressのダッシュボードにログインし、「ツール > エクスポート 」ページから、「エクスポートファイルをダウンロード」します。
続いて、ローカルのWordPressのダッシュボードにログインし、「ツール > インポート 」ページに移動します。
「 WordPress > 今すぐインストール 」でインポーターをインポートし(ややこしい)、「インポーターの実行」をクリックします。
「WordPress のインポート」ページに遷移するので、「ファイル選択」ボタンから、先ほどエクスポートしたxmlファイルを選択し、「ファイルをアップロードしてインポート」をクリックします。
ウィジェットの変更
ウィジェットの変更は反映されていなかったので、ローカルのウィジェットも変更します。
ここは手動で設定するしかなさそうです。
確認
ローカルサイトを確認してみると、ちゃんと本番と同様の状態になっていました。
これにて完了です!
さいごに
しかしこれ、投稿するといちいちインポート・エクスポートしなければいけない感じなのでしょうか……?
もっと簡単に同期できる方法、調べてみようと思います。