「Chef + VagrantによるPHP5.3 + MySQL + nginxの開発環境」をもとにPHP5.4環境を。

  • 18
    いいね
  • 3
    コメント
この記事は最終更新日から1年以上が経過しています。

「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;

これで動いた。