PHP5.5 リリースにより、再び盛り上がってきた phpenv + php-build 環境を Vagrant で作ってみました。
CentOS6.4 + phpenv + php-build + nginx という構成になっています。
nginx + phpenv + php-build の環境構築については hnw さんの下記エントリがとても参考になりました。
php-buildで複数バージョンのPHP-FPMを用意する – hnwの日記
インストール
https://github.com/shin1x1/vagrant-phpenv-phpbuild
github へ Vagrantfile + Chef レシピファイルをアップしています。こちらの README に書いたとおりですが、手順としては以下になります。
- VirtualBox インストール
- Vagrant インストール
- git clone
- vagrant up
1 / 2 はインストール済であれば不要です。(なお VirtualBox 4.2.14(2013/07/01 時点の最新版) は、Vagrant との組み合わせで問題が発生する場合があるので、現時点では 4.2.12や4.2.8など旧バージョンのインストールをお勧めします。)
4 は、box ファイルのダウンロードや PHP のビルドでかなり時間がかかる場合があります。コマンドを実行した後はのんびりお待ちを。
SSH でアクセス
vagrant ssh でログインすると、phpenv コマンドが利用できます。
php コマンドで実行される PHP バージョンを変更したり、さらに別バージョンの PHP をインストールすることが可能です。
HTTP でアクセス
Vagrant で起動した仮想サーバには IP アドレスに 192.168.33.14 を付与しています。
稼働サーバでは nginx が動作しており、ポート毎に各バージョンの php-fpm が割り当てられています。
- http://192.168.33.14:8053/ -> PHP5.3
- http://192.168.33.14:8054/ -> PHP5.4
- http://192.168.33.14:8055/ -> PHP5.5
ドキュメントルート
仮想サーバ内の /public_html ディレクトリが nginx のドキュメントルートになっています。
このディレクトリはホスト側の public_html ディレクトリをシェアしているので、このディレクトリに PHP ファイルを設置すれば、仮想サーバの nginx+php-fpm で実行することができます。
例えば、下記のように echo.php をホスト側の public_html ディレクトリ以下に作成すると、http://192.168.33.14:8053/echo.php で実行することができます。
$ ls . README.md Vagrantfile cookbooks public_html $ echo "<?php echo PHP_VERSION;" > public_html/echo.php
Vagrantfile をカスタム
Vagrantfile をカスタムすることで、インストールする PHP バージョンを変更したり、configure オプションを追加することが可能です。
詳しくは README にて。