WordPress

WordPress|SSHを使ってサイトを丸ごとサクッと複製(コピー)する

WordPress のサイトのデモサイト作成、ディレクトリ移動など、WordPressを丸ごと複製したい場合が稀にあります。たとえば大きなアップデートを行う前に、サイトの最新の状態を丸ごと複製し、そこで試してから本番に反映するなど。僕もこのサイトではありませんが、失敗できない他のサイトで動作確認をするときなどに、今回紹介する方法を使ってデモサイトを作成して試しています。

バックアップ系プラグインを使用した一般的な複製方法では、バックアップしたファイルのダウンロードとアップロードに果てしない時間がかかってしまうため、それだけで大作業になります。

そこで便利なのが今回紹介するSSHを使用する方法です。ただし、SSHはレンタルサーバーの下位プランでは使用できない場合が多いため、まずはご利用のサーバーでSSHが使用可能かどうか確認ください。併せて複製した側の方にもデータベースが必要となりますので、利用中のプランで複数のデータベースが使用可能かどうかも確認しておいてください。

作業の流れ

今回は、domain.com/peascode のWordPressサイトを複製し domain.com/peascode-demo を作ることを目的とし、下記の流れで解説していきます。

  • WordPressのファイル類が格納されているディレクトリ[/www/peascode]をコピーして[/www/peascode-demo]を作成する。
  • WordPressのデータが保存されているデータベース[peascode-db] からエクスポートし、デモ用データベース[peascode-db-demo] にインポート。
  • [/www/peascode-demo] の [wp-config.php] 内のデータベース接続情報の変更と、データベース[peascode-db-demo]に登録されたサイトURLを変更。

SSHを使ってデータベースを新規作成できる「root権限」はレンタルサーバーの共有プランでは使用できないため、コントロールパネルなどから、デモ用データベース(peascode-db-demo など)を事前に作成しておいてください。

準備サーバーに接続

まずはSSHでサーバーに接続します。

ssh の後に ユーザ名@ホストアドレス or ホストIPアドレス で接続できます。ポート番号を指定する場合は -p オプションを使用します。

ssh user01@peascode.com

パスワードを聞かれるので入力して接続完了!

user01@peascode.com's password: ↲
FreeBSD 9.1-RELEASE-p24 (SAKURA33) #0: Thu Feb  5 00:03:33 JST 2015

Welcome to FreeBSD!

%

SSHの利用に関しては下記の記事で少し詳しく書いているので参考にしてください。

STEP1ファイル類のコピー

WordPressがインストールされているディレクトリを丸ごとコピーします。

その前にまずは分かりやすいようにコピーしたいディレクトリのある階層に移動します。今回コピーするディレクトリは、/www/peascode なので、/www に移動しておきます。移動するコマンドは cd です。

cd www

peascode ディレクトリを丸ごとコピーします。コピーコマンドは cp です。-a オプションは、ディレクトリ構造や所有者、パーミッションなど可能な限り保持してコピーします。

cp -a ./peascode ./peascode-demo

画像や動画など重いファイルが多数含まれる場合は、コピーに数分程度時間がかかることがあります。

ls コマンドでコピーされていることを確認します。-l オプションでパーミッションなど詳細を表示します。

ls -l ↲
drwx---r-x   5 user01  users    1024 Nov  6 21:47 peascode
drwx---r-x   5 user01  users    1024 Nov  6 21:47 peascode-demo

STEP2データベースのコピー

データベースの場合はコマンド1つでコピーとはいかないため、エクスポート&インポート で複製を実現します。そのため、複製先のテータベースは事前に用意しておいてください。

エクスポート&インポート(一括処理)

データベースのエクスポートとインポートを1行で完了する場合は下記のコマンドを使います。エンターを押すと、エクスポートとインポートそれぞれのデータベースのパスワードを聞かれます。-p の後(スペースなし)にパスワードを指定しておくことも可能です(例:-pPASSWORD)。

mysqldump -u user01 -p peascode-db --single-transaction | mysql -u user01 -p peascode-db-demo
  • 接続DBのホストが「localhost」以外の場合は、 -h host_name のオプションでホスト名を指定。
  • --single-transaction は、その時点でのスナップショットデータからダンプ。

エクスポートとインポートを別々に行う場合

ちなみにエクスポートとインポートを分けて行う場合のコマンドは下記のとおりです。db_dump.sql ファイルにエクスポートデータが保存されます。

エクスポート
mysqldump -u user01 -p peascode-db --single-transaction > db_dump.sql
インポート
mysql -u user01 -p peascode-db-demo < db_dump.sql

STEP3設定変更

ファイルとデータベースの複製が完了したら、設定変更を行います。

wp-config.php のデータベース接続情報の変更

コピーしたディレクトリ(peascode-demo)の[wp-config.php]内のデータベース接続情報を変更します。

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

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

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

/** MySQL のホスト名 */
define( 'DB_HOST', 'localhost' );

/** データベースのテーブルを作成する際のデータベースの文字セット */
define( 'DB_CHARSET', 'utf8mb4' );

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define( 'DB_COLLATE', '' );

データベース(peascode-db-demo)に登録されたサイトURLを変更

WordPress に登録されたサイトURLを変更します。phpMyAdmin から変更しても良いですが、既にコマンドプロンプロを開いているので、コマンドで変更してしまいましょう。

mysql コマンドを使用して複製したデータベースにログインします。-D オプションでデータベースを指定します。-p の後(スペースなし)にパスワードを指定しておくことも可能です(例:-pPASSWORD)。

mysql -u user01 -D peascode-db-demo -p
  • 接続DBのホストが「localhost」以外の場合は、 -h host_name のオプションでホスト名を指定。

サイトURLを[https://domain.com/peascode-demo]に変更します。

UPDATE wp_options SET option_value = 'https://domain.com/peascode-demo' where option_name IN ('home','siteurl');

変更したサイトURLが反映されているかどうか確認します。

SELECT * FROM wp_options WHERE option_name IN ('home','siteurl'); ↲
+-----------+-------------+---------------------------------+----------+
| option_id | option_name | option_value                    | autoload |
+-----------+-------------+---------------------------------+----------+
|         2 | home        | https://domain.com/peascode-demo | yes      |
|         1 | siteurl     | https://domain.com/peascode-demo | yes      |
+-----------+-------------+---------------------------------+----------+
2 rows in set (0.00 sec)

  • この記事を書いた人
  • 最新記事

hidepooh

日本では主にUNIXサーバーの構築、運用などに携わり、2006年に仕事を辞めてカナダに来てそのまま永住。 カナダでは、日本からカナダに留学や永住、ビジネスで渡航する人たちのサポートを行う傍ら、専門分野+趣味でもあるWeb制作、運用を継続しながら、最近では写真/動画撮影、動画制作、モーショングラフィックなど、新しい分野のスキルアップに励んでいます。 Peas Code は、僕が過去の経験の中で学んだことを、特定の分野に限定せず公開していくことを目的としています。中にはコードに見えてしまうような意味不明な僕独自の理論も含まれますが、知っていると平和になれると言う意味で、Peas(peace → peas) Code と名付けました。これが意味不明か・・・。 僕について、もうちょっと詳細を知りたいという変わった人は[About me]を見てください。

-WordPress
-, ,