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 にて。
参考
- https://github.com/phpenv/phpenv
- Vagrant で自分の PC に「作って、壊して、元に戻せる」サーバを作る


