VCCWを使ってWordPress環境をチームでまるごと共有する

今日は10日目

今回の記事ではVCCWを使って、WordPressサイトをまるごとチームで共有する方法を紹介します。

VCCW

何はともあれプロビジョニング

まず、VCCWをダウンロードして下さい。

git cloneするよりも素直に.zipをダウンロードしましょう。

そしてvagrant up

プロジェクト用に.gitignoreを用意

Vagrantfileがあるディレクトリの中に、.gitignoreというファイルがあるはずです。

それを以下の内容とまるごと差し替えましょう。

.vagrant
Gemfile
Gemfile.lock
Rakefile
Vagrantfile.sample
Vagrantfile.theme-review
provision/packaging.sh
spec

VCCWのメンテナンスに必要なテストコードなどがこれらのファイルには含まれているんですがサイトを作る場合は不必要なので。。。

WordPressの初期設定

次にWordPressの初期設定をしていきましょう。

ユーザーの追加や、タイトル、パーマリンク設定など。

あとカスタム投稿タイプやカスタムタクソノミーを使う場合は、早い段階で組み込んでおくとメンバー間の作業がスムーズかも。

provision-post.shを用意する

VCCWでは、proivision/provision-post.shというシェルスクリプトを用意しておくと、プロビジョニングの最後にそのシェルスクリプトが発火するようになっています。

そこで、proivision/provision-post.shというファイルを用意して、以下のように記述しておきましょう。

#!/usr/bin/env bash

set -ex

/usr/local/bin/wp --path=/varwww/ db import /vagrant/import.sql

それが終わったら、Vagrant環境にSSHで接続して以下のコマンドを実行してください。

$ wp --path=/varwww/ db export /vagrant/import.sql

以上で、vagrant destroyした後でも、現在のWordPress環境がいつでも復活するようになりました。

Gitにpushして共有

以上が終わったらgit pushして共有しましょう。

Vagrantfileがあるディレクトリ以下をまるごと共有してしまえばオッケーです。

あとは、各自がgit cloneすれば、同じ環境が立ち上がるはず。

場合によっては画像とかは共有したくないとかもあるかもですね。そんな場合は以下のような行を上述の.gitignoreに追加しておきましょう。

/var/www/.htaccess
/var/www/sitemap.xml
/var/www/sitemap.xml.gz
/var/www/wp-config.php
/var/www/wp-content/advanced-cache.php
/var/www/wp-content/backup-db/
/var/www/wp-content/backups/
/var/www/wp-content/blogs.dir/
/var/www/wp-content/cache/
/var/www/wp-content/upgrade/
/var/www/wp-content/uploads/
/var/www/wp-content/wp-cache-config.php

wp-config.phpも入ってますが、VCCWはプロビジョニングの際に自動的に生成しますのでご安心を。

あとは構築!

あとは、もくもくとみんなで構築しましょう。

みんなが好き勝手にDBの内容を書き換えてそれをエクスポートしてコミットしてしまうと修羅場になるので、コンテンツは誰か一人の人が書き込むとか、本番環境だけでやるとかなんらかのルールぎめが必要ですね。

一方でエクスポートしてさらにコミットさえしなければ常にクリーンな状態が維持できます。

ダミーデータを放り込むなり、設定を変えてテストするなり、そのへんは開発者に任せればいいと思います。

もし、DBの内容が変わった時はgit pullして、以下のコマンドを実行すればオッケーです。

$ wp --path=/varwww/ db import /vagrant/import.sql

このコマンドが不安なデザイナーさんとかはvagrant provisonでもオッケー。

DBをあれこれ触ってしまい、リポジトリの中身と同じ状態に戻したい時も同じくです。

vagrant provisionしても開発中のテーマやプラグインは失われませんのでご安心を!

開発したプラグインを有効化した状態で共有したい場合は、先ほどのproivision/provision-post.shに有効化したいプラグイン(もしくはテーマ)を書いておくといいです。

#!/usr/bin/env bash

set -ex

/usr/local/bin/wp --path=/varwww/ db import /vagrant/import.sql
/usr/local/bin/wp --path=/varwww/ plugin install contact-form-7 --activate
/usr/local/bin/wp --path=/varwww/ plugin install wp-total-hacks --activate
/usr/local/bin/wp --path=/varwww/ plugin install simple-map --activate

WordPressの状態がこうやってコード化されて残るってすごいと思いません。

WordPress as a Code!! ですね。

デプロイ

構築が終わったらデプロイです。

デプロイは、いろいろな方法がありますが、Wordmoveを使ってSSH+秘密鍵でデプロイすれば、ある人は本番サーバーにデプロイ、別の人はステージングサーバーにデプロイなんてこともできます。

このVagrant環境があればWordPressコアやプラグイン、テーマなどのアップデートの際にも、ブルーグリーン・デプロイメントなんてこともできますので、アップデートももう怖くないですよね。

(ちなみに某人がブルーグリーン・デプロイメントのことをヤドカリみたいと言ってましたがまさにそうですね。笑)