VCCWとの上手な付き合い方

もう一ヶ月ほどになりますが、VCCW v3 をリリースしました。

変更点は Qiita のほうで一度書いてるのでそちらを見ていただければと思います。

http://qiita.com/miya0001/items/041e9363ff81695a2251

ディスク容量的に600MBほどやさしくなったのと、プロビジョニングが早くなったのがいちばんの改善点ですかね。

僕の環境ではおおむね5分ぐらいで起動します。

 

さて、ソーシャル等で VCCW についての言及をいろいろ見てると、いろいろ混乱してるみなさまも多いようなので、こいつとの上手な付き合い方について書いてみます。

ZIP アーカイブをダウンロードして使うのを強く推奨します!

VCCW を使う際には、リポジトリを git clone するのではなく、ZIP アーカイブをダウンロードして使ってください。

https://github.com/vccw-team/vccw/releases

理由は以下の通りです。

  • リポジトリには VCCW そのものを開発するためのテストコード等も含まれます。これらは多くの場合みなさんには不要です。
  • 具体的にどのクライアントかは把握していませんが、一部の Windows 用クライアントは改行コードを変換するようです。この場合、プロビジョニングがうまくいきません。

たとえばMacの場合なら、WP-CLI コマンドを用意しています。(Windowsでも動くかもフィードバック希望!)

https://github.com/vccw-team/scaffold-vccw

これを使うと以下のような感じでほいほいと VCCW で WordPress を起動できます。

$ wp scaffold vccw vccw.dev --lang=ja && cd $_
$ vagrant up

Vagrant のマニュアルを読みましょう

最近ユーザー層がひろがってきて、Vagrant そのものの知識がない方も大勢使ってくださってるようです。

いまさらですが、コマンドの復習をしますね。

vagrant up

これはゲストマシンを起動するためのコマンドです。VCCW の ZIP アーカイブをダウンロードして展開した後、このコマンドを実行すると、プロビジョナーというものが実行されて WordPress がゲストマシンにインストールされます。

ただし、このコマンドでプロビジョナーが実行されるのは、ゲストマシンが存在してない状態の時だけです。

たとえば、後述する vagrant halt 等でゲストマシンを停止した後で vagrant up をしてもプロビジョナーは実行されません。

vagrant reload

ゲストマシンを再起動します。

この時プロビジョナーは実行されません。パソコンでいう単なる再起動なので注意。

vagrant provision

たとえばゲストマシンを vagrant up で起動して、その後で site.yml を変更してもそれは反映されません。

反映するには vagrant provision をしてください。

vagrant halt

ゲストマシンを停止するためのコマンドです。

これを行うとマシンが停止します。停止とはパソコンでいう電源をきった状態ですね。

この状態ではゲストマシンは存在していますので、その分のディスク容量を占有した状態になりますので注意。

用事がないときはマメにこのコマンドを実行しましょう。

vagrant destroy

このコマンドを実行するとマシンが消えて無くなります。

上述の vagrant halt とは違って消えて無くなりますので、ディスク容量的に節約になりますが、次に起動する時に一からになります。

たとえば僕は案件が終わったらささっとこれをやって、まるまる Git に上げておきます。

あと、昨日まで動いてたゲストマシンが死んだ。。。みたいなときは素直にこれです。

 

そのほかにもステータスを見るためのコマンドもあります。ぜひドキュメントをさらっと眺めてみてください。

https://www.vagrantup.com/docs/

vagrant destroy した後でもサイトを復活させる

VCCW には、vagrant up 一発で希望する構成の WordPress 環境を構築する仕組みが用意されています。

今回は provision-post.sh というものを用意して vagrant destory 後に vagrant up しても元のサイトが復活するようにする方法を紹介します。

まず、provision-post.sh というファイルを Vagrantfile と同じディレクトリに設置してください。これはシェルスクリプトですが、ゲストマシン内で動作するものなので Windows でも動作するはずです。(改行コードに注意!)

#!/usr/bin/env bash

set -ex

if [ -e /vagrant/wordpress.sql ]; then
  sudo -u vagrant -- wp db import /vagrant/wordpress.sql
fi

次に、以下のコマンドで既存のサイトのデータベースのデータのバックアップを作成します。

まず以下のコマンドでゲストマシンに入ってください、

$ vagrant ssh

ゲストマシンに入ったら以下のコマンドを実行。

$ wp db export /vagrant/wordpress.sql

以上で、ホストマシンから見ると Vagrantfile と同じディレクトリに wordpress.sql というファイルができてるはず。

以上が完了したら vagrant destroy してゲストマシンを捨てちゃいましょう。捨てた後に残ったファイルは Git 等にあげておくといいです。

もし、次に復活させたいときは git clone して、vagrant up すれば復活します。

(ただし WordPress 本体は最新版になりますが、site.yml でバージョンを指定すればバージョン縛りもできます。)

うまく起動しない時の対処法

まず、vagrant global-status で他のマシンが無いか確認して見てください。

マシンが何も無いときは以下のような感じ。

$ vagrant global-status 
id       name   provider state  directory                           
--------------------------------------------------------------------
There are no active Vagrant environments on this computer! Or,
you haven't destroyed and recreated Vagrant environments that were
started with an older version of Vagrant.

もしすでに起動中のゲストマシンがあれば、同じホスト名、同じIPアドレスでは起動できません。

 

さらに、/etc/hosts も確認してください。 Vagrant のプラグイン hosts-updater を使用するとホストの情報を自動的に書き込んでくれますが、この情報がうまく削除されずに残っていることがあります。

 

その後、デフォルトで vagrant up してください。

それで動作しない場合は、Issueへ投稿をお願いします。

https://github.com/vccw-team/vccw/issues

Issueへ投稿する際には、エラーの出力をコピペしてください。海外のユーザーのみなさんと不具合を共有するために英語で書いていただくことを希望しますが、エラーの出力があれば文章は簡単でかまいません。

 

デフォルトでは起動するけど、特定の設定で無理という場合には、できれば site.yml 等カスタマイズ内容がわかるものも添付してください。

 

僕は、DMやメール等のクローズな方法で質問が来ても絶対に返事をしませんが、公開されている場所での質問にはかなり高確率で返事をしています。笑

GitHub の Issue での質問は、同じ問題を抱える人たちと共有できますので遠慮なくどうぞ。