[VCCW] WP-CLI で VCCW 3 環境をかんたん構築する

VCCW のバージョンが上がっているので、導入からあらためて復習。

[markdown]
以前に触った記事はこちらからたどれます。

> [VCCW | deadwood](https://www.d-wood.com/blog/tag/vccw)

本稿の VCCW と依存するパッケージのバージョンは以下の通りです。

“`prettyprinted
vagrant / 1.9.2
virtualbox / 5.1.16-113841
VCCW / 3.1.4
WP-CLI / 1.1.0
Composer / 1.4.1
scaffold-vccw / 1.3.0
“`

なお以降の記事中において、`%` ではじまるコマンドは Host OS (macOS) で、`$` ではじまるコマンドは Guest OS (Ubuntu) で実行されていることを示しています。

## Installation

公式サイトの [Getting Started](http://vccw.cc/#h2-2) に沿って進めます。

> [VCCW – A WordPress development environment.](http://vccw.cc/)

### VirtualBox と Vagrant

まず VirtualBox と Vagrant をインストールします。

> [Vagrant: + VirtualBox で仮想マシンを作成する | deadwood](https://www.d-wood.com/blog/2013/09/20_4688.html)

さらに vagrant-hostsupdater plugin をインストールしておきます。

> [Vagrant: vagrant-hostsupdater で /etc/hosts を書き換える | deadwood](https://www.d-wood.com/blog/2014/08/25_6669.html)

“`prettyprinted
% vagrant plugin install vagrant-hostsupdater
“`

さらに VCCW 用にカスタマイズされた vagrant box をダウンロードしておきましょう。

“`prettyprinted
% vagrant box add vccw-team/xenial64
“`

### wp scaffold vccw

以前のバージョンは `git clone` して環境を作っていましたが、v3 は .zip ダウンロードになっているとのこと。

> [WordPress 用の Vagrant 環境 VCCW を利用する | deadwood](https://www.d-wood.com/blog/2014/08/27_6674.html)

WP-CLI コマンドの `wp scaffold vccw` でこれをすませましょう。
(.zip を利用する場合は、以下の手順は不要です。)

> [vccw-team/scaffold-vccw: WP-CLI command that generates a new VCCW.](https://github.com/vccw-team/scaffold-vccw)

WP-CLI がインストールされていない場合は、brew でインストールできます。

“`prettyprinted
% brew install homebrew/php/wp-cli
“`

`wp package install vccw/scaffold-vccw:@stable` でインストールが完了します。

“`prettyprinted
% wp package install vccw/scaffold-vccw:@stable
Installing package vccw/scaffold-vccw (@stable)
Updating /Users/****/.wp-cli/packages/composer.json to require the package…
Using Composer to install the package…

Loading composer repositories with package information
Updating dependencies
Resolving dependencies through SAT
Dependency resolution completed in 0.061 seconds
Analyzed 4212 packages to resolve dependencies
Analyzed 119701 rules to resolve dependencies
Package operations: 1 install, 0 updates, 0 removals
Installs: vccw/scaffold-vccw:1.3.0
– Installing vccw/scaffold-vccw (1.3.0)
Writing lock file
Generating autoload files

Success: Package installed.
“`

インストール済の場合は、下記でアップデートできます。

“`prettyprinted
% wp package update
“`

#### Fatal error: Allowed memory size of x bytes exhausted が発生する場合

実行時にメモリ不足のエラーが発生しました。

“`prettyprinted
% wp package install vccw/scaffold-vccw:@stable
Installing package vccw/scaffold-vccw (@stable)
Updating /Users/****/.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 /usr/local/Cellar/wp-cli/1.1.0/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php on line 126
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /usr/local/Cellar/wp-cli/1.1.0/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php on line 126
“`

`php.ini` の場所を探します。

“`prettyprinted
% php –ini
Configuration File (php.ini) Path: /usr/local/etc/php/7.1
Loaded Configuration File: /usr/local/etc/php/7.1/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.1/conf.d
Additional .ini files parsed: (none)
“`

`memory_limit = 128M` でしたので、これを増やします。

“`prettyprinted:/usr/local/etc/php/7.1/php.ini
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 512M
“`

以上でインストールを完了することができました。

追記:2017/03/23
実行時に指定する方法があるようです。

> [WP-CLI でメモリ不足のエラーが出る時の対処法 – Qiita](http://qiita.com/miya0001/items/9797832db58b60786803)

## Usage

インストールが完了しましたので、早速プロジェクトを開始してみましょう。

“`prettyprinted
% wp scaffold vccw wordpress.dev –lang=ja
Success: Generated. Run `vagrant up`.
“`

wordpress.dev というディレクトリにファイルが展開されました。

“`prettyprinted
.
├── LICENSE
├── README.md
├── Vagrantfile
├── ansible.cfg
├── provision
│   ├── default.yml
│   ├── playbook.yml
│   └── playbooks
│   ├── commands.yml
│   ├── middleware.yml
│   ├── templates
│   │   ├── composer.json
│   │   ├── extra-wp-config.php
│   │   ├── guest-wp-cli-config.yml
│   │   ├── index.php
│   │   ├── mailcatcher.service
│   │   ├── multisite-htaccess
│   │   ├── site.conf
│   │   └── vccw.sh
│   └── wordpress.yml
└── site.yml
“`

既に site.yml が生成されていますので、ディレクトリに移動して、`vagrant up` します。

“`prettyprinted
% cd wordpress.dev
% vagrant up
“`

以上で完了です。

### .zip の場合

.zip を展開した方は、vccw というディレクトリが作られたはずです。
`provision/default.yml` を元に `site.yml` を作成、編集が必要になります。

### wp scaffold vccw –update でバージョンアップに対応する

`wp scaffold vccw` を利用している場合、`–update` オプション付きの実行で VCCW をバージョンアップできます。
この例の場合は、下記で関連ファイルがバージョンアップされます。

“`prettyprinted
% wp scaffold vccw wordpress.dev –update
“`

## 補遺

### v3

* [VCCW v3での変更点と新機能まとめ – Qiita](http://qiita.com/miya0001/items/041e9363ff81695a2251)
* [VCCWとの上手な付き合い方 | Firegoby](https://firegoby.jp/archives/6712)

wp scaffold vccw

* [WP-CLI コマンドの `wp scaffold vccw` をアップデート | Firegoby](https://firegoby.jp/archives/6768)
* [“wp scaffold vccw” 1.3.0 をリリースしました! | Firegoby](https://firegoby.jp/archives/6779)

WP-CLI

* [WP-CLI v1.1.0 がリリース – Capital P](https://capitalp.jp/2017/02/02/wp-cli-v1-1-0/)
* [WP-CLI 完全ガイド – Capital P](https://capitalp.jp/2017/02/03/guide-of-the-wp-cli/)

### v2

* [VCCW 2.0.0 – 設定をymlファイルで記述する仕様に変更しました。 | Firegoby](https://firegoby.jp/archives/6109)
* [VCCW 2.19.0 Linked Cloneに対応してディスク容量の大幅な節約ができるようになりました。 | Firegoby](https://firegoby.jp/archives/6487)

### v1

* [VCCWでテーマレビュー用のWordPressをてっとりばやく起動する裏ワザ | Firegoby](https://firegoby.jp/archives/5756)
* [VCCW 1.7 wp-cliのパワーアップやテーマレビューのための機能を追加しました。 | Firegoby](https://firegoby.jp/archives/5726)

### その他

MailCatcher

* [VCCW + MailCatcherで送信メールを確認するための環境を構築 | Firegoby](https://firegoby.jp/archives/6243)

StaticPress

* [VCCW + WordMove + StaticPress + GitHubページでWordPressサイトを永代供養 | Firegoby](https://firegoby.jp/archives/6221)

### 改ざんのチェック

* [WP-CLI で WordPress 本体の改ざんをチェックする | Firegoby](https://firegoby.jp/archives/6798)
* [WP-CLI の –allow-root オプションは非推奨です! | Firegoby](https://firegoby.jp/archives/6783)
[/markdown]