「Chef + VagrantによるPHP5.3 + MySQL + nginxの開発環境」
http://www.engineyard.co.jp/blog/2013/chef-and-vagrant-gives-you-next-dev/
を元に、PHP5.4環境が欲しかったのでChefのレシピをちょいいじってみました。
元の
https://github.com/yandod/php5-nginx-vagrant-sample/blob/master/cookbooks/candycane_cookbook/recipes/default.rb
の頭に下記を追加
execute "1st apt-get update" do
command "apt-get update"
end
package "python-software-properties" do
action [:install, :upgrade]
end
execute "add ppa:ondrej/php5-oldstable" do
command "add-apt-repository ppa:ondrej/php5-oldstable"
end
add-apt-repository ppa:ondrej/php5-oldstable としてるのは、ppa:ondrej/php5だと、PHP5.5になっちゃうから。(1ヶ月ぐらい前はまだPHP5.4だったんですが)
どのバージョンのPHPを入れるとかをChefで指定するうまい方法って何かあるんでしょうかね?ながいこと使うとこのあたり問題になるケースもありそうな気がしてきてます…
最終的な default.rb は下記になります。
execute "1st apt-get update" do
command "apt-get update"
end
package "python-software-properties" do
action [:install, :upgrade]
end
execute "add ppa:ondrej/php5-oldstable" do
command "add-apt-repository ppa:ondrej/php5-oldstable"
end
execute "apt-get" do
command "apt-get update"
end
packages = %w{git subversion nginx php5 php5-mysql php5-curl php5-cli php5-fpm php-pear mysql-server curl imagemagick php5-imagick}
packages.each do |pkg|
package pkg do
action [:install, :upgrade]
end
end
execute "phpunit-install" do
command "pear config-set auto_discover 1; pear install pear.phpunit.de/PHPUnit"
not_if { ::File.exists?("/usr/bin/phpunit")}
end
execute "composer-install" do
command "curl -sS https://getcomposer.org/installer | php ;mv composer.phar /usr/local/bin/composer"
not_if { ::File.exists?("/usr/local/bin/composer")}
end
template "/etc/nginx/conf.d/php-fpm.conf" do
mode 0644
source "php-fpm.conf.erb"
end
service 'apache2' do
action :stop
end
%w{mysql php5-fpm nginx}.each do |service_name|
service service_name do
action [:start, :restart]
end
end
かなり悪戦苦闘したけど何とか欲しいモノが手に入ってよかった。
1ヶ月前にチャレンジしたときは、全然ダメダメだったんだが、少し理解がすすんだらしい。
##2013/08/23追記
php-fpm 関係のデフォルトがポート指定でなくソケットになったようで、そのままだと502 bad gateway となってしまったので、php-fpm.conf.erbもfastcgi_passだけ変更
fastcgi_pass unix:/var/run/php5-fpm.sock;
これで動いた。