wordmoveのインストール・コマンド・運用方法まとめ

先日、WordPressのデプロイはwordmoveが超おすすめ!という記事で、wordpressのデプロイにFTPやGitではなく、wordmoveを利用するのが良いということを述べました。

今回は、wordmoveを実際に利用するために、インストール方法や利用するコマンドについてまとめました。

wordmoveを利用すると、

  • ローカルで開発したテーマのアップロードおよび設定
  • 既に作成されているwordpressサイトをローカルに構築

などにおいて劇的に楽になりますので、利用することをおすすめします。

wordmoveの概要

wordmove概要

wordmoveは、基本的に上図の「1」「3」のことしか行いません。

  1. サーバーからwordpressサイトをダウンロード(pull)
  2. ローカルのwordpressサイトをサーバーにアップロード(push)

これらの ダウンロード / アップロード 時に、テーマファイルのみやデータベースのみなど粒度を設定して行うことができます。

wordmoveのインストール方法

wordmoveはローカルPCから実行して利用しますので、ローカルにwordmoveをインストールします。
また、wordmoveはgemで配布されていますので、rubyをインストールする必要があります。(Macではデフォルトで入っています)

rubyをインストールした状態で、下記を実行してwordmoveをインストールします。

$ gem install wordmove

そして、下記を実行して、バージョン番号が返って来ればインストール完了です。

$ wordmove --version
# → 2.3.0

wordmoveの設定・movefileの作成

ローカルのwordpressのディレクトリにて、下記を実行すると現在のディレクトリにmovefile.ymlが作成されます。

$ wordmove init

wordmoveを利用するために、ローカルのどのサイトを本番環境のどこに移すのかという情報を設定する必要があります。

例として、以下のようになります。

# wordmove.yml
global:
  sql_adapter: "default"

local:
  vhost: "http://wordpress-test.com"
  wordpress_path: "/Users/taro/develop/wordmove-test"

  database:
    name: "database_name"
    user: "user"
    password: "password"
    host: "127.0.0.1"

production:
  vhost: "http://wordpress.com"
  wordpress_path: "/var/www/wordpress"

  database:
    name: "database_name"
    user: "user"
    password: "password"
    host: "host"

  exclude:
    - ".git/"
    - ".gitignore"
    - ".sass-cache/"
    - "node_modules/"
    - "bin/"
    - "tmp/*"
    - "Gemfile*"
    - "Movefile"
    - "movefile"
    - "movefile.yml"
    - "movefile.yaml"
    - "wp-config.php"
    - "wp-content/*.sql.gz"

  ssh:
    host: "host"
    user: "user"
    password: "password"

local・productionと、環境毎に設定を記述します。stagingなど、検証環境の情報を追記することも可能です。

vhostは、一般設定 > WordPressアドレスの値を設定します。
wordpressはデータベースにサイトURLを保存していますので、デプロイした際にwordmoveがこれを元に書き換えてくれます。

wordpress_pathは、wordpressサイトが存在するディレクトリのパスを絶対パスで記述します。

databaseは、wordpressサイトが接続しているデータベースの情報を記述します。
データベースの移行も行いますので設定する必要があります。

excludeは、ファイルを移行する際に、除外するファイルを指定します。wp-config.phpは環境毎に異なる内容となりますので、こちらに含まれます。

sshは、SSHの接続情報です。.ssh/configなどで設定されていれば、こちらの設定は不要です。

利用するコマンド

wordmoveの概要で述べたように、基本的にpullpushのコマンドのみを利用します。
そして、pull/pushする内容の粒度をオプションで指定します。

また、wordmoveのコマンドは、movefile.ymlが存在する場所で実行します。

ダウンロード/アップロード

$ wordmove pull
$ wordmove push

オプション

wordmoveは以下のオプションが利用できます。
ファイル/データベース/環境を指定することができます。

オプション内容
–all全てのファイルおよびデータベース
-w, –wordpresswp-content以外のファイルを対象
-u, –uploadswp-content/uploadのファイルを対象
-t, –themeswp-content/themesのファイルを対象
-p, –pluginswp-content/pluginsのファイルを対象
-m, –mu-pluginswp-content/mu-pluginsのファイルを対象
-l, –languageswp-content/languagesのファイルを対象
-d, –dbデータベースが対象
-e, –environmentymlファイルで記述している環境に対して実行. 例 -e staging

開発・運用のワークフロー

wordmoveワークフロー

基本的に、上図のように

  1. 開発前にローカルを最新状態にする。
  2. ローカルで開発する
  3. 検証/本番環境にアップする

という流れになります。

非常にシンプルなワークフローになりますが、wordmoveを利用したワークフローでは、「ファイルやデータの同期はできるが、マージすることはできない」という点に注意しなければなりません。

例えば、

開発途中であるが、ある機能まで開発が終わり、検証環境で実データの投入を別の人が行なっている。

という状況で、開発者がローカル環境でデータベースの変更を含む修正を行い、データベースを含めてデプロイすると、検証環境で入れていたデータ失われることにもなります。

また、デプロイする前に検証環境の情報をローカルに全て取り込むと、開発していた情報が失われてしまいます。

一人で運用している場合は問題ありませんが、複数人で分業しているような場合は

  • データ投入している場合は、デプロイはテーマファイルのみを対象とする
  • 開発中は、データ登録などの作業を止めてもらう

などの対策が必要かと思います。
現実的には、前者のように運用することになると思います。

まとめ

本記事で、wordmoveをインストールから運用方法までをまとめました。
基本的にはこの情報のみで問題無いかと思います。

この記事と関連している記事