CakePHP3の開発環境をChefで構築する
CakePHP3がリリースされてからだいぶ経ちましたが、
ついに私もCakePHP3を触り始めたので、
開発環境を構築してみました。
Vagrant+Chefで構築してみたのでご参考ください。
CakePHP2との大きな違いはやはり、Composerを利用するようになったということでしょうか。
公式によると必要な環境は下記の通り。
http://book.cakephp.org/3.0/ja/installation.html
・HTTPサーバー。例: Apache。mod_rewriteが推奨されますが、必須ではありません。
・PHP 5.4.16以上。
・PHP mbstring 拡張
・PHP intl 拡張
PHP5.4.16以上という点も注意が必要で、
yumの標準が5.3となっているので何も考えずに、
yum install php とかやると動かなくてしばらく悩むことになります。
・Chefを使わずvagrantで直接入れる場合
1.remiレポジトリの使用
sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo yum install php --enablerepo=remi sudo yum install php-mbstring --enablerepo=remi sudo yum install php-mcrypt --enablerepo=remi sudo yum install php-pdo --enablerepo=remi sudo yum install php-intl --enablerepo=remi
2.composerでcake3ディレクトリの作成
sudo curl -s https://getcomposer.org/installer | sudo php php composer.phar create-project --prefer-dist -s dev cakephp/app
3.apacheのdocumentrootを変更
インストールしたcake3ディレクトリのwebrootを指定する。
・Chefレシピの記述
chefディレクトリの構成はsite-cookbooks以下にapache,bash,remi,phpというcookbookを作成しています。
--site-cookbooks/ --bash/ --recipe/ --default.rb --apache --recipe/ --default.rb --template/ --httpd.conf.erb --php --recipe/ --default.rb --remi --recipe/ --default.rb
1.Vagrantfile
Vagrant.configure(2) do |config| config.vm.box = "centos" config.vm.network :private_network, ip: "192.168.33.10" config.vm.synced_folder "app", "/home/vagrant/app", owner: "root", group: "root" end
2.chef recipe
apacheのインストール
site-cookbooks/apache/recipe/default.rb
package "httpd" do action :install end service "httpd" do action [:enable, :start] end template "httpd.conf" do path "/etc/httpd/conf/httpd.conf" owner "root" group "root" mode 0644 notifies :reload, 'service[httpd]' end
site-cookbooks/apache/template/httpd.conf.erb
DocumentRoot "/home/vagrant/app/webroot"
site-cookbooks/bash/recipe/default.rb
bash "chmod_vagrant" do code "chmod -R 755 home/vagrant" end bash "chmod_tmp" do code "chmod -R 777 home/vagrant/app/tmp" end bash "chmod_cache" do code "chmod -R 777 home/vagrant/app/tmp/cache" end
remiレポジトリの追加
site-cookbooks/remi/recipe/default.rb
bash 'add_epel' do user 'root' code <<-EOC rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm sed -i -e "s/enabled *= *1/enabled=0/g" /etc/yum.repos.d/epel.repo EOC creates "/etc/yum.repos.d/epel.repo" end bash 'add_rpmforge' do user 'root' code <<-EOC rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm sed -i -e "s/enabled *= *1/enabled=0/g" /etc/yum.repos.d/rpmforge.repo EOC creates "/etc/yum.repos.d/rpmforge.repo" end bash 'add_remi' do user 'root' code <<-EOC rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sed -i -e "s/enabled *= *1/enabled=0/g" /etc/yum.repos.d/remi.repo EOC creates "/etc/yum.repos.d/remi.repo" end
phpと必要なextensionのインストール
site-cookbooks/php/recipe/default.rb
%w{php php-mcrypt php-mbstring php-intl php-pdo php-mysql}.each do |pkg| package pkg do action :install options "--enablerepo=remi" end end
3.[node名].jsonにcookbookを追加する
{ "run_list": [ "recipe[remi]", "recipe[apache]", "recipe[php]", "recipe[bash]" ], "automatic": { "ipaddress": [ここはnode名] } }
あとはknife solo cook [node名]でOKなはずです。
それではよいcake3ライフを!