プラグインやテーマを開発して公開すると、ユーザーのみなさんがいろんな環境で使ってくれます。
- マルチサイト
- SSL (もしくはForce SSL Admin)
- サブディレクトリにWordPressをインストール
などなど。
あと、請負等でウェブサイトをつくるときも開発環境を構築するのはとても手間がかかる上に、チームメンバー全員でそれを共有することは至難の業です。
このような環境に関連する悩みを一挙に解決するVagrantを作りました。
このVagrantの機能
https://github.com/miya0001/vccw
- 一度インストールしてしまえば、
vagrant up
とコマンドを入力するだけで、いきなりWordPressサイトが立ち上がります。- デフォルトのURLは、https://firegoby.jp です。
- デフォルトのユーザーアカウントは、ユーザー名:
admin
、パスワード:admin
です。 - デフォルトでデバッグモードが有効になっています。
- デフォルトでSSLが利用できます。
- デフォルトで以下のプラグインが有効になっています。
- Vagrantfile内の定数を修正するだけで、多様なWordPress環境が数分後には利用可能です。
WP_VERSION
でインストールするWordPressのバージョンを指定可能。(ベータ版も指定できます。例:3.7-beta2など)WP_HOSTNAME
に任意のドメイン名を指定すれば、/etc/hosts に自動的に反映します。WP_IS_MULTISITE
をtrue
にすればマルチサイト環境が構築できます。- デフォルトのテーマ、プラグイン、Force SSL Admin、http://example.com/wp/ のようなサブディレクトリへのインストールなども簡単に再現できます。
WP_THEME_UNIT_TEST
の値をtrue
にすればテーマユニットテストのインポートデータを自動的にインポートできます。
- Vagrantfileと同じディレクトリ内の/var/www/vhosts/i-70b33683以下のディレクトリと仮想マシンのドキュメントルートが共有されていますので、使い慣れたエディターなどを使って開発を行うことができます。
- ほかにもいろいろ!
インストール方法
Gitをインストールしていない場合は、.zipをダウンロードして使用することも可能です。
ちょっと便利な使い方
たとえば制作会社などでチームでウェブサイトを開発する場合には、以下のような使い方をすると便利です。
- チームメンバー全員がこのVagrantを同じディレクトリに
clone
する。$ cd # ホームディレクトリに移動 $ git clone https://github.com/miya0001/vagrant-chef-centos-wordpress.git wp
- Vagrantfile.sampleを別のディレクトリにVagrantfileという名前でコピーして35行目を以下のように変更してください。
WP_CHEF_COOKBOOKS_PATH = '~/wp'
- デフォルトのプラグインやテーマ、ホスト名などをプロジェクトに合わせてカスタマイズ。
- ターミナルでコピー先のディレクトリに移動して以下のコマンドで仮想マシンを起動する。
vagrant up
以降、このディレクトリをgitに登録すれば、 開発に必要な環境をチームメンバー間で簡単に共有できます。
必要に応じて、.gitignore も追加しておくことをお忘れなく。
データのエクスポートやインポートなど
このVagrantで起動する仮想マシンは、MySQLのポートを開放しており、ホストマシンのMacからwp-cliを使ってデータのエクスポートやインポートなどが可能です。
$ cd vagrant-local//var/www/vhosts/i-70b33683 # wp-config.phpがあるディレクトリに移動 $ wp db export ~/Desktop/db.sql # MacのデスクトップにDBをエクスポート $ wp db import ~/Desktop/db.sql # Macのデスクトップのdb.sqlをインポート
この機能を利用するには brew install mysql
などで、MySQLをローカルのMacにインストールしておく必要があります。
その他
仮想マシンの構成は以下のとおりです。
- CentOS 6.4.x
- PHP 5.3.x
- MySQL 5.1.x
- Apache 2.2.x
CentOSを使用している理由は、僕が個人的にAmazon Linux(つまりAmimoto)を使う機会が多いからです。
今後
- ウェブサーバーをNginxも選択できるようにしたい。
- プロビジョニング時にデータベースのデータもインポートできるようにしたい。
knife solo cook staging
でステージング環境へ、knife solo cook production
で本番環境へデプロイできるようにしたい。
(Amimotoが前提になると思うので、これはデジタルキューブさんから出ると思いますのでお楽しみに!)
ところで、だれかWindowsでテストしてくれませんかね?仮想環境しか持ってなくて。。。
Windowsではうまく動作しないようですね。だれかパッチつくってくんないかな。。。