WordPress開発快適化計画 ~ VCCW on WP-CLIを使ってみた ~

日に日に暑さが増しておりますが、いつまで経っても見習いプログラマーのノリフミです。

 

Wordpressを使った開発や改修が増えてきている昨今

一人で開発の場合はあまり問題ないのですが、複数人で開発するとなるとどうしても、データの共有面で壁に当たってしまいます。

そこでどうにかならないものかと調べてみると、Wordmoveなるものが良さそうだったのでVCCW on WP-CLIで使ってみました。

 

※ 当記事では、サーバーでWordpressを公開しており、そのサーバーへssh接続できるものとして話を進めます。

 

目次

  1. Wordmoveとは
  2. VCCWとは
  3. WP-CLIとは
  4. 今回の妄想
  5. WP-CLI導入
  6. VCCW on WP-CLI導入
  7. WordPress on Vagrant構築
  8. 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しておいたほうが良さそうですね。

 

以上、ありがとうございました。

Related Post