Codeworks Notes

 2020-05-26

 2020-05-28

Wordpress

WordPressのミラーを作る方法

概要

テストやデバッグを行うのにミラーサイトが必要な時の複製手順。

方法

ファイルパーミッションまで完全に一致したミラーを作るのに簡単そうな方法を2通り挙げます。

サイトデータの総サイズ 512MB 未満のとき

All-in-One-WP-Migration というプラグインを使います。サイトに使用されているすべてのデータとデータベースを全て圧縮したバックアップファイルを作ることができ、コピー先の WordPress 側の All-in-One-WP-Migration にファイルを読み込ませて復元します。難しい設定は要らない。

ただし、ファイルサイズが 512MB を超える場合は有料 ( $69 ) 版のプラグインを購入するか、以下の手順を行う。

サイトデータの総サイズ 512MB 以上のとき

All-in-One-WP-Migration が使用できないので、BackWPup というバックアッププラグインを使い、手動でファイル配置とデータベース更新を行う。

BackWPup を使った方法(詳細)

example.com から mirror.example.com に移す手順。
WordPress は example.com/wordpress/ にインストールされているとする。

事前準備

バックアップ先の受け入れ準備を行う

  • mirror.example.com を有効にし、アクセスできるようにする
  • mirror.example.com/wordpress/ フォルダを作成する。
  • もしすでに mirror.example.com/wordpress/ が存在する場合は中身を空にしておく。
  • 空の MySQL データベースを 1 つ作成しておく。

BackWPupでバックアップを作成する

インストールが済んだらダッシュボードの左ペインに「 BackWPup 」が現れるので、新規ジョブを作成し、ファイルとデータベースのバックアップ設定を作ります。
ファイルは .tar.gz 形式、データベースは .sql 形式で保存するように設定したらバックアップを作成します。

このときバックアップ作成時にエラーが起きてバックアップが作れないときは、「 BackWPup が自動実行されない 」の記事を参考にしてください。

バックアップファイルをアップロードする

バックアップされたデータはコピー元の /wordpress/wp-content/uploads/backwpup-******-backups/ に格納されています。これを一旦ダウンロードします。

その後、ファイル名を backwpup.tar.gz などにリネームしておくと、あとから展開するときに打ち間違いを防げます。

backwpup.tar.gz を mirror.example.com/wordpress/ にアップロードします。

バックアップファイルを展開する

ターミナルでサーバーへ SSH 接続してください。
以下は操作の一例です。

$ ssh account-id@servername.jp -p ポート番号
Enter passphrase for key '/Users/xxxx/.ssh/id_rsa':

$ ls -sl
合計 0
0 drwx------  5 account-id members  55  3月 24 04:06 Maildir
0 drwxr-xr-x  3 account-id members  82  6月 17  2015 backup
0 drwxr-xr-x  2 account-id members   6  9月 18  2016 css
0 drwxr-xr-x  2 account-id members   6 11月 17  2014 ssl
0 drwx--x--x 10 account-id members 171  1月 25  2020 example.com

$ cd example.com/public_html/mirror/wordpress
$ tar zxvf backwpup.tar.gz
$ exit

backwpup.tar.gz を展開することで、コピー元のファイル・フォルダ構成と同じ状態になります。

ターミナルが利用できない場合はバックアップデータを ZIP 形式で作成し、FTP ソフトでアップロードしてもかまいません。が、サーバーとは 1 ファイルごとのやり取りになるので処理に時間がかかる場合があります。

wp-config.php を修正する

コピー先で使用するデータベースを読み込むように設定します。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'database_name');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'user_name');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'db_password');

/** MySQL のホスト名 */
define('DB_HOST', 'mysql_servername.jp');

データベースを復元する

SQLファイルのインポート

バックアップされたデータベースは backwpup.tar.gz の中に入っていますので、ファイル「 account-id_wp.sql 」を取り出しておき、phpMyAdmin でコピー先に使われているデータベースにアクセスして SQL ファイルをインポートします。

クエリ文を使ったデータベースの修正

phpMyAdmin でコピー先のデータベースを参照します。
SQL タブから以下のクエリ文を実行すると、ドメインが全てミラーサイトのものに置きかわります。

UPDATE `wp_posts` SET guid=REPLACE (guid,'example.com','mirror.example.com');
UPDATE `wp_posts` SET post_content=REPLACE (post_content,'example.com','mirror.example.com');
UPDATE `wp_options` SET option_value=REPLACE (option_value,'example.com','mirror.example.com');
UPDATE `wp_postmeta` SET meta_value=REPLACE (meta_value,'example.com','mirror.example.com');
UPDATE `wp_posts` SET post_title=REPLACE (post_title,'example.com','mirror.example.com');

完了

ブラウザからミラーサイトにアクセスし、そっくりなサイトが表示されているか、URL が正しくミラーサイトのものになっているか確認してください。

その後、Wordpress にログインし、動かしていると本番サイトと干渉するようなプラグインは停止します。

また、完全なサイト移行でこの手順を行った場合は 301 リダイレクトの設定を行い、Google などの検索エンジンにサイトが移転されたという情報を与えるようにしましょう。