とーますメモ

Ruby on Rails / Goなどの学習メモ

【WordPress】Wordmoveを使用して、本番環境と開発環境を同期させてみる

Wordmoveについての詳細は省くが、簡単に説明すると
Wordmoveとは、WordPressの環境を簡単に、移行させることができるRuby製のツール。

github.com

使用例としては、以下のような用途で使用できる。
・記事やプラグインの設定などを一度ローカルで行って問題がない場合、本番環境へ更新を行いたい。
・本番環境と同じデータやプラグインを使用し、ローカルでテストを行いたい。

インストール

※rubyがインストールされていることが前提

$ gem install wordmove

確認

$ wordmove -v

設定ファイル作成

以下のコマンドを使用することで、「Movefile」というファイルが作成される

$ wordmove init

Movefileの設定

global:
  sql_adapter: default  # wpcliがローカルにあるなら、wpcliを設定。

local:
  vhost: "ローカルURL"
  wordpress_path: "/var/www/html/" # use an absolute path here

  database:
    name: "DB名"
    user: "ユーザ"
    password: "パスワード"
    host: "ホスト"

production:
  vhost: "サイトURL"
  wordpress_path: "WPの絶対パス" # use an absolute path here

  database:
    name: "DB名"
    user: "ユーザ"
    password: "パスワード"
    host: "ホスト"

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

  ssh:
    host: "リモートホスト"
    user: "ユーザ"
    port: 22
    rsync_options: "--verbose"

  forbid:
    push:
      db: true
      plugins: true
      themes: true
      languages: true
      uploads: true
      mu-plugins: true
    pull:
      db: false
      plugins: false
      themes: false
      languages: false
      uploads: false
      mu-plugins: false

globalセクションの「sql_adapter」では「default」か「wpcli」を選択できる。
sql_adapterの中身は、ローカルと本番でURLの変換するだけの機能。
defaultだと、dump.sqlテキスト内を走査して、文字列変換をしている。
wpcliではwp-cliのコマンドを使って、文字列変換をしている。

また他のサイトでは、あまり紹介していないが
間違って本番にpushしてしまわないようにforbidセクションを使用すれば、細かくpush可否の制限ができる。

Dockerイメージも公開されており、Dockerで開発環境を作る際は、すごい便利。
https://hub.docker.com/r/welaika/wordmove/

[リモートからローカルへ]
例1)DBのみをプルする例

$ wordmove pull -e production -d

例2)すべてをプル

$ wordmove pull -e production -all

例3)検証モードでプル(実際にはプルしない)

$ wordmove pull -e production -all -s

[ローカルからリモートへ]
例)DBのみをプッシュする例

$ wordmove push -e production -d

[オプション一覧]
--all # ファイル全部
-w # `/wp-content/`ディレクトリ(除外したファイル以外)のみ
-u # `/wp-content/upload/`ディレクトリのみ
-t # `/wp-content/theme/`のみ
-p # `/wp-content/plugins/`のみ
-l # `/wp-content/language/`のみ
-d # データベースファイルのみ
-v # [TBD] verbose
-s # dry runモードで実行、実際にはファイル転送されない
-e # 環境(push先・pull元)を指定
-c # `wp-config.php`のみ
-h # wordmoveの使い方


[参考]
Wordmoveの基本操作 - Qiita