WordPressを本番サーバに移行してリリースする場合、通常はFTPソフトを使ってファイルをアップロードして、その後、DBベースのバックアップしたものを新サーバにインポートしてと、結構たいへんです。
そういったWordpressのサーバ移行をコマンド一発でできるツール「Wordmove」を紹介します。
さくらインターネットのサーバに移行します。

Wordmoveとは

WordmoveとはRubyで作られたコマンドツールで、Wordpressのリリース(デプロイ)を簡単にしてくれるものです。

  • WordPressのファイルやデータベースのデータをコマンド一発で他のサーバにコピー可能
  • 様々なオプションでプラグインのみ、DBのみなどコピーする対象を選択可能

Wordmoveのインストール

WordmoveのインストールにはRubyがインストールされている必要があります。
※ Macには標準でRubyがインストールされているので問題ありませんがWindowsの場合はインストールする必要があります。
ターミナルを下記コマンドでインストールできます。cdコマンドでworkspaceに戻っておきます。
※ 今回はMacの環境で利用している前提で話を進めます。

wordmoveのインストールは下記でインストールできます。

sudo gem install wordmove

Wordmoveの利用方法

Wordmoveの使い方として、下記の手順で使います。

  1. WordPressのルートフォルダにMovefileを作成
  2. Movefileの編集(サーバ情報、DB接続情報、コピー方法など記述)
  3. wordmoveコマンドでデプロイ・リリース

1.Movefileを作成

WordPressのルートフォルダに移動した状態でwordmove initコマンドを実行して初期化します。

wordmove init

2.Movefileを編集

下記を実行したらMovefileが作成されます。そのファイルを開いて編集していきます。

Movefileの設定

下記のとおりに修正してください。修正箇所はコメント箇所に#マークを記載ています。

Movefile

local:
# ローカルのホスト情報
vhost: "https://xxx.xxx.com" # ★Cloud9のWordpressサイトのURL
# ローカルのWordpressルートフォルダのパス
wordpress_path: "/path/to/wordpress"
# ローカルのDB接続情報
database:
name: "db_name" # DB名
user: "db_user_name" # DB接続ユーザ名
password: "db_user_password" # DB接続パスワード
host: "127.0.0.1" # ホスト情報
staging:
# リリース先のホスト情報
vhost: "http://imagepitdev.sakura.ne.jp"  # ★さくらインターネットのドメイン
# リリース先のWordpressルートフォルダのパス
wordpress_path: "/path/to/wordpress"
# リリース先のDB接続情報
database:
name: "db_name" # DB名
user: "db_user" # DB接続ユーザ名
password: "passwd" # DB接続パスワード
host: "db_host" # ホスト情報
charset: "utf8" # 文字コード設定
# port: "3308" # Use just in case you have exotic server config
# 除外するファイルを指定
exclude:
+ ".git/"
+ ".gitignore"
+ ".sass-cache/"
+ "node_modules/"
+ "bin/"
+ "tmp/*"
+ "Gemfile*"
+ "Movefile"
+ "wp-config.php"
+ "wp-content/*.sql"
ssh:
host: "xxx.xxx.com" # リリース先のホスト名
user: "xxx" # sshユーザ名
password: "xxx" sshパスワード

Movefileはyumlという形式のファイルで定義されています。yumlファイルは各行のインデントを見ますので、各行のインデントの数を間違えないようにしてください。

これでWordMoveの設定は完了です。

3.WordMoveにてデプロイ(ファイル・DBアップロード)

Movefileがあるディレクトリでwordmove pushコマンドを実行する事によりデータをアップロードします。

wordmove push -e staging --all

下記のメッセージが出ていればデータ移行完了です。

エラーが出る場合は上記設定内容をもう一度見直してみましょう。

wordmove pushのオプション

wordmove pushには様々なオプションがあります。DBの情報だけ、プラグインのみリリースするなど柔軟に設定する事ができます。

オプション 説明
-w Movefileのexclude部分で指定した以外のソースの同期をします。
-u uploadsフォルダを同期します。
-t wp-content/theme フォルダを同期します。
-p wp-content/plugins フォルダを同期します。
-l p-content/languages*.mo, *.po だけ同期します。
-d DBのデータを mysqlsump でダンプ -> mysqlコマンドでリストアします。
-v メッセージの詳細表示。
-s dry runモード。リリース前の動作確認として利用します。
-e 環境を指定できます。雛形のMovefileは localstaging なので、productionなどで本番サイトの追加/切り替えができます。
-c wp-congig.php も同期させます。

例えば、DBとプラグインのみをリリース環境に移行したい場合には下記のようにコマンド実行します。

wordmove push -d -p -e staging

リリース完了

これでリリース作業は完了です。リリース先のURLにアクセスして正常にサイトが表示されれば完了です。
今後は、ローカル環境で開発したら、wordmove pushコマンドを実行すれば簡単にリリースできます。
このようにしておけば今後は本番環境と開発環境で設定を変更したままやりとりができます。

本番環境の内容を開発環境に適用

既に本番環境でWordpressを運用している場合は、本番環境から開発環境(local)にデータをまるごとコピーする事ができます。その場合はMovefileを設定した後にwordmove pull --allを実行します。

wordmove pull --all

このようにWordMoveを使えば、本番環境から開発環境、開発環境から本番環境の移行が簡単に行われます。