日に日に暑さが増しておりますが、いつまで経っても見習いプログラマーのノリフミです。
 
Wordpressを使った開発や改修が増えてきている昨今
一人で開発の場合はあまり問題ないのですが、複数人で開発するとなるとどうしても、データの共有面で壁に当たってしまいます。
そこでどうにかならないものかと調べてみると、Wordmoveなるものが良さそうだったのでVCCW on WP-CLIで使ってみました。
 
※ 当記事では、サーバーでWordpressを公開しており、そのサーバーへssh接続できるものとして話を進めます。
 
目次
- Wordmoveとは
- VCCWとは
- WP-CLIとは
- 今回の妄想
- WP-CLI導入
- VCCW on WP-CLI導入
- WordPress on Vagrant構築
- Wordmoveを使ってみる
お急ぎの方は飛ばし読みを:D
Wordmoveとは
Wordmoveは、ローカルのWordpressインストールとDBデータをローカルの開発マシンからリモートのステージングサーバーに自動的にミラーリングできるようにするgemです。
SSH接続は完全にサポートされていますが、新しい機能が導入されるとFTPサポートは中止される予定です。
プッシュ/プル機能を備えたWordpress用のCapistranoのようなものと考えてください。
Source of github.com/welaika/wordmove
※ 翻訳を使用しております、不自由な日本語にご注意ください
要約すると、
「Wordpressをローカル・サーバー間で簡単に同期出来るんだよ」
ということみたいです。
VCCWとは
これは、WordPressプラグイン、テーマ、またはWebサイトの開発用に設計されたVagrantの設定です。 VCCWには、WordPressのバージョン(またはベータ版)、言語、ホスト名、サブディレクトリ、管理者の資格情報、デフォルトのプラグイン、デフォルトのテーマ、マルチサイト、SSLなどのオプションを設定するためのカスタマイズ可能な変数が含まれています。これらの変数は、特定のニーズに合わせて開発環境を調整する際の柔軟性を提供します。
Source of vccw.cc
※ 翻訳を使用しております、不自由な日本語にご注意ください
要約すると、
「Vagrantを使ってWordpress開発を快適にし、かつ色々と設定出来るんだよ」
ということみたいです。
WP-CLIとは
こちらは、読んで字のごとくなんですが
WP-CLIは、WordPressのインストールを管理するための一連のコマンドラインツールです。 Webブラウザを使用しなくても、プラグインを更新したり、マルチサイトのインストールを構成したりできます。
Source of wp-cli.org
※ 翻訳を使用しております、不自由な日本語にご注意ください
要約すると、
「CLIのみでWordpressを構成、更新が出来るんだよ」
ということみたいです。
 
今回の妄想
一通り説明し終えたところで、今回の妄想のお話
現状はこのような構成で開発しています。

複数人のWordpress開発でgit管理のみなので、データ同期がとれない。
 
そこでWordmoveを導入してみると

複数人のWordpress開発でWordmoveを導入して、データ同期が簡単にとれるようになる。
 
つまりデータ同期を気にしなくても良くなる!なにこれ素敵!という妄想
 
WP-CLI導入
とりあえず、公式の説明に沿って初期設定をしていきます。
 
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
PHP binary: /usr/local/Cellar/php70/7.0.18_10/bin/php
 PHP version: 7.0.18
 php.ini used: /usr/local/etc/php/7.0/php.ini
 WP-CLI root dir: phar://wp-cli.phar
 WP-CLI packages dir: /Users/norifumi/.wp-cli/packages/
 WP-CLI global config:
 WP-CLI project config:
 WP-CLI version: 1.1.0
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp --version
WP-CLI 1.1.0
あっさりインストール成功!
 
VCCW on WP-CLI導入
こちらも、公式の説明に沿って初期設定をしていきます。
 
wp package install vccw/scaffold-vccw:@stable
Installing package vccw/scaffold-vccw (@stable)
 Updating /Users/norifumi/.wp-cli/packages/composer.json to require the package…
 Using Composer to install the package…
 —
 Loading composer repositories with package information
 Updating dependencies
 PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in phar:///usr/local/bin/wp/vendor/composer/composer/src/Composer/Json/JsonFile.php on line 266
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in phar:///usr/local/bin/wp/vendor/composer/composer/src/Composer/Json/JsonFile.php on line 266
メモリが足りないって怒られてしまった…
 
phpのメモリ確認
php -i | grep memory_limit
memory_limit => 128M => 128M
あー少ない…増やそう…
 
編集面倒なので、ワンライナー置換にしておきました。
gsed -i 's/memory_limit = 128M/memory_limit = 512M/g'  "$(php -i | grep 'Loaded Configuration File' | cut -f 5 -d ' ')"
php -i | grep memory_limit
memory_limit => 512M => 512M
成功!
 
再度チャレンジ
wp package install vccw/scaffold-vccw:@stable
…
 —
 Success: Package installed.
成功!
 
WordPress on Vagrant構築
VCCW on WP-CLIを使ってVagrantで動くWordpress構築する。
この時、直下ディレクトリに作成されるので、適当な作業ディレクトリに移動しておくことをオススメします。
※ exampleとなっているコードは適宜置き換えてください
cd example-dir
wp scaffold vccw example-project --host=example.com --ip=192.169.33.123 --lang=ja
Success: Generated. Run `vagrant up`.
cd example-project
vagrant up
==> example.com: [vagrant-hostsupdater] Writing the following entries to (/etc/hosts)
 ==> example.com: [vagrant-hostsupdater] 192.168.33.123 example.com # VAGRANT: 153b0b8eb7a8772721e73e0acb9f2c0f (example.com) / 08253bf2-edb0-4036-9c6f-9ef33822a578
 ==> example.com: [vagrant-hostsupdater] This operation requires administrative access. You may skip it by manually adding equivalent entries to the hosts file.
 Password:
/etc/hostsに書き込みのためパスワードを求められるので入力
 
ここからは
TASK [hogehoge]
をしばし眺めます。
TASK [hogehoge]
TASK [hogehoge]
TASK [hogehoge]
…
最終的に
PLAY RECAP *********************************************************************
 example.com : ok=62 changed=55 unreachable=0 failed=0
と表示されれば完了!
 
hosts確認してみれば、きっちり追記されています。
cat /etc/hosts | grep example.com
192.168.33.123 example.com # VAGRANT: 153b0b8eb7a8772721e73e0acb9f2c0f (example.com) / 08253bf2-edb0-4036-9c6f-9ef33822a578
 
Wordmoveを使ってみる
さきほど立ち上げたVagrant内で作業していきます。
 
vagrant ssh
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-38-generic x86_64)
vi /vagrant/Movefile
local部分の
- vhost
- wordpress_path
- database
- name
- user
- password
- host
- charset
 
production部分の
- vhost
- wordpress_path
- database
- ssh
- host
- user
- port
- rsync_options
 
項目を適宜設定してください。
 
サーバーのデータをローカルに反映してみる。
wordmove pull --all
▬▬ ✓ Using Movefile: ./Movefile ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
▬▬ ✓ Pulling wordpress core ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
 …
▬▬ ✓ Pulling Uploads ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
 …
▬▬ ✓ Pulling Themes ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
 …
▬▬ ✓ Pulling Plugins ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
 …
▬▬ ✓ Pulling Mu Plugins ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
 …
▬▬ ✓ Pulling Languages ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
 …
▬▬ ✓ Pulling Database ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
 …
成功!
 
確認してみる
mysql -u root -p
mysql> use wordpress
mysql> show tables;
Tables_in_wordpress
 ——-
 server_wp_commentmeta
 server_wp_comments
 …
 wp_commentmeta
 wp_comments
 …
しっかりDBのデータも取得できていました!
 
懸念点
- 複数人でデータ同期することによって、データが消えてしまう可能性がありそう
- Wordmoveばかり使いすぎてgitの更新を疎かにしそう
- そしてgitで修正できないほどの衝突が起こってしまいそう
まとめ
WordPressで複数人開発するなら、Wordmove使った方がデータ同期できて、開発が捗る!
 
でも、簡単にpush -allなどをしてしまうとデータが消えてしまう可能性があるので、こまめにpullしておいたほうが良さそうですね。
 
以上、ありがとうございました。