15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-08-13

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

これで動いた。

15
15
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?