株式会社オズビジョンの卜部です。
前回の記事 では、phpbrew を使った複数環境を構築しました。
今回は、それを踏まえて、Apache 経由で 複数の PHP をディレクトリごとに振り分けを行い、確認できる環境を用意しました。
php-fpm の soket 経由で、 VirtualDocumentRoot で分けて、確認できる状況にしています。
また、オレオレ証明書ですが、https でもアクセスできるようにしています。
php module ではないので、 Apache を複数立てたり、再起動したりする必要がなく、開発者にとっては便利な環境になっているのではないでしょうか。
今回用意した、 chef の cookbook は以下です。
- https://github.com/oh-my-oss/cookbook-base:
deploy ユーザ作成、タイムゾーン設定 - https://github.com/oh-my-oss/cookbook-httpd:
Apache 2.4 の cookbook - https://github.com/oh-my-oss/cookbook-phpbrew:
phpbrew および、php-fpm の socket を apache 側で読み込むようにする設定のレシピ
以下のような環境になっています
[root@10 sites]# pwd
/var/www/sites
[root@10 sites]# ls
php-5.6.32 php-7.0.26 php-7.1.12 php-7.2.0 php-multi.local.com
[root@10 sites]#
/var/www/sites 配下に php のバージョンのディレクトリがあり
/var/www/sites/php-7.2.0/ の配下に任意のディレクトリを設置し
/var/www/sites/php-7.2.0/test の配下に public ディレクトリを作成することで DocumentRoot として HTTP 経由でアクセスができます。
chef で新規構築時に 自動で /var/www/sites/php-{複数バージョン}/test/public/index.php が設定されるようにしていますので、
hosts ファイルに以下のように書きます
アクセスするドメイン名の、 test の所は php-x.x.x/ 以下に設置したディレクトリ名、 7.2.0 のところは php のバージョン、それ以下は固定のドメインです。
10.0.100.100 test.7.2.0.php-multi.local.com
10.0.100.100 test.7.1.12.php-multi.local.com
10.0.100.100 test.7.0.26.php-multi.local.com
10.0.100.100 test.5.6.32.php-multi.local.com
ということで、各ドメインにブラウザからアクセスしてみましょう。以下のように表示されればOKです!
https でも(警告はでますが)アクセスができるので、試してみましょう。
追加で違うバージョンの php をインストールしたい場合は以下のファイルの php_versions の配列に追記します。
- https://github.com/oh-my-oss/multi-php-ec2/blob/master/chef-repo/environments/vagrant.json
-
- chef-repo/environments/vagrant.json
-
{
"name": "vagrant",
"description": "vagrant environment",
"chef_type": "environment",
"json_class": "Chef::Environment",
"default_attributes": {
"php_versions": ["7.2.0", "7.1.12", "7.0.26", "5.6.32"],
"phpbrew_install_arg": "+default",
"user": "vagrant"
},
"override_attributes": {
},
"cookbook_versions": {
"example": "= 1.0.0"
}
}