LoginSignup
12
10

More than 5 years have passed since last update.

CakePHP3で学ぶ継続的インテグレーション -環境構築編-

Posted at

CakePHPで継続的インテグレーションやってますかー!

こんにちは!あすけんダイエットの方からやってまいりました。@hampomです。

さて、リリース前に聞いていた噂通り、今までのバージョンとはガラリとスタイルが変わったバージョン3系ですが、私も、これまでバージョン1系ばかりで開発していましたが、この秋ぐらいからめでたく業務でバージョン3系を採用!開発を楽しんでおります!

タイトルにも書いた「CakePHPで学ぶ継続的インテグレーション」は、CakePHPを使って学ぶ内容となっていますが、まだCakePHP3がリリースされる前に出版された書籍のため、そのままではCakePHP3を用いて動かせないのではないか?ということで、CakePHP3が動く環境を構築してみます。

動作確認環境

  • Windows 10
  • ChefDK 0.10.0
  • VirtualBox 5.0.10 r104061
  • Vagrant 1.7.4
    • vagrant-omnibus

環境構築リポジトリをゲット

「CakePHPで学ぶ継続的インテグレーション」ダウンロードページに、環境構築用のリポジトリへのリンクがありますので、こちらからVagrantfileやChefのクックブックなどを一式ダウンロードします。

好みに応じて、GitHubアカウントをお持ちの方はフォークしてからcloneしても良いですし、ZIPファイルをダウンロードしても良いと思います。

私は、後々のカスタマイズの可能性も考えてフォークしました。

一式はどちらでも、お好みの場所に展開してください。指定はありません。

ディレクトリ作成

早速、vagrant up developと行きたいところですが、このまま実行すると怒られます(怒られた)。ソースを配置するapplicationフォルダを共有フォルダとして利用しますので、展開したディレクトリにapplicationディレクトリを作成しましょう。

Berkshelf

Berksfileの更新

1行目のsourceの定義を修正しましょう。
以前のhttp://api.berkshelf.comからhttps://supermarket.chef.ioに変更になりました。

capistranoレシピの修正

うーん。 ruby2.0をインストールしているにも関わらずruby1.9系がデフォルトバージョンになってしまう様でcapistranoに依存するnet-sshのインストールに失敗しました。

==> develop: ------------------------------------
==> develop:     Expected process to exit with [0], but received '1'
==> develop:     ---- Begin output of /usr/bin/gem install capistrano -q --no-rdoc --no-ri -v "3.4.0" ----
==> develop:     STDOUT:
==> develop:     STDERR: ERROR:  Error installing capistrano:
==> develop:            net-ssh requires Ruby version >= 2.0.
==> develop:     ---- End output of /usr/bin/gem install capistrano -q --no-rdoc --no-ri -v "3.4.0" ----
==> develop:     Ran /usr/bin/gem install capistrano -q --no-rdoc --no-ri -v "3.4.0" returned 1
==> develop:
==> develop:     Resource Declaration:
==> develop:     ---------------------
==> develop:     # In /tmp/vagrant-chef/1c38fa8d8055eeb233d4d85fbb882293/cookbooks/capistrano/recipes/default.rb
==> develop:
==> develop:       5: gem_package "capistrano" do
==> develop:       6:   action :install
==> develop:       7: end

ということで、仕方がないのでcapistranoのレシピに追記します。
すでにある、gem_package "capistrano" doの上の行あたりに追加しましょう。

site-cookbooks\capistrano\recipes\default.rb

gem_package "net-ssh" do
  version '2.9.2'
  action :install
end

phpenvレシピの修正

CakePHP3はPHPの国際化関数を利用するため、拡張モジュールを追加でインストールする必要があります。

手動でインストールする場合はsudo apt-get install php5-intlを実行すれば良いのですが、せっかくですのでレシピを修正し自動化しましょう。

PHPパッケージを列挙している定義にphp5-intlを追加します。

site-cookbooks\phpenv\recipes\default.rb

# 配列で列挙しているパッケージをインストールする
%w{curl php5 php5-cli php5-fpm php5-mysql php-pear php5-curl php5-xsl php5-mcrypt php5-intl mysql-server-5.5 nginx git}.each do |p|
  package p do
    action :install
  end
end

クックブックのインストール

$ berks vendor cookbooks

修正したクックブックと、必要なクックブックをネットからダウンロードするために、berksコマンドを実行しましょう。

Vagrant起動!

いよいよ起動です。vagrant up developコマンドを実行しましょう。
結構長いこと待たされます。プロンプトが戻ってくるまで、気長に待ちます。

==> develop: Chef Client finished, 4/41 resources updated in 40 seconds
==> develop: [2015-12-16T13:31:02+00:00] DEBUG: Forked instance successfully reaped (pid: 14120)
==> develop: [2015-12-16T13:31:02+00:00] DEBUG: Exiting

フィニッシュ!
ついに終わったら、ブラウザで http://192.168.33.10/ にアクセス! phpinfoの出力がされていたら、パッケージインストールが終わり環境構築は完了です。

CakePHP3のインストール

ドキュメントルートは/var/www/application/current/app/webrootですので、それにあわせてインストールします。

vagrant@develop:/var/www/application/current$ php composer.phar create-project --prefer-dist cakephp/app app

さあ、再度ブラウザでアクセスしてみましょう!どうですか!?

おわりに

環境構築編はこれで終わり!
ここから先、Jenkinsを用いたテストは、今まさに業務でも実施していますので、テストからデプロイ(Deployerを使うと思いますが!)まで、少しずつアップできればと思います!

書籍からの差分で、CakePHP3にあわせて環境を構築しました。
書籍は私も会社の机にいつでも読めるように置いてあります。まだまだCakePHP2系の環境もたくさんあると思いますので(もちろん、私の周囲でも提供中のサービスとして動作している環境があります!)、これからもしばらくは活用できそうですね。

CakePHPer・スマホエンジニア募集中!

AWSを使い倒しつつ、最新のCakePHPでサーバーサイド開発に興味のある方。サービスの北米進出に興味のある方(私は、ここでお仕事してます!)スマホアプリならお任せという方まで、エンジニア募集中です。

ご興味のある方は、こちら → 会員60万人が利用する食事管理アプリ『あすけん』、海外進出に向けてサーバーサイド/モバイルアプリ開発エンジニアを募集!

お待ちしております~

12
10
0

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
12
10