Issei.M's Techlog

Web/iOS エンジニアの僕が技術関連のメモ等をつらつらと。主に Symfony について書いています。

[Symfony][Capistrano] Capifony で Symfony2 のアプリケーションをデプロイする

今回は Symfony アプリを Capistrano で簡単にデプロイできる Capifony (http://capifony.org) の使い方を紹介します。

実行環境は Ruby 1.9.1 + Capistrano 2.14.2 です。

Capifony をインストールする

RubyGems でインストールします。

$ gem install capifony

続いてデプロイする Symfony プロジェクト上で capifony コマンドを実行し、イニシャライズします。

$ cd /path/to/own_sf2pj
$ capifony .

これで Capifileapp/config/deploy.rb の2ファイルが自動生成されました。 更に次のコマンドで、実行できるタスクを確認してみます。

$ cap -T

しかしここで以下のエラーが…。

"raise_if_conflicts': Unable to activate capifony-2.2.7, because capistrano-2.14.2 conflicts with capistrano (<= 2.14.1, >= 2.13.5)"`

どうやら Capistrano 2.14.2 では動作しないみたいなので、仕方なく 2.14.1 にダウングレードします。

$ gem uninstall capistrano
$ gem install capistrano -v 2.14.1

これで無事、正常に利用できるようになりました。

deploy.rb を設定する

僕はとりあえずこんな感じで設定しました。かなり基本的な事のみ設定しています。

今回 Apache ユーザに app/cacheapp/logs への書き込み権限を ACL で与えていますが、環境によっては ACL が使えないこともあるので、その場合は chownchmod も利用できるみたいです。

デプロイ前の準備をする

以下のコマンドを実行します。

$ cap deploy:setup

これで必要なディレクトリ構造が構築されます。ここで一旦 SSH でデプロイ先サーバに入り、本番用の parameters.yml を作ります。

$ mkdir -p /var/www/example.com/shared/app/config
$ vim /var/www/example.com/shared/app/config/parameters.yml

これで準備 OK です。

そしてデプロイへ...

ローカルに戻り、以下のコマンドを実行します。

$ cap deploy

これで正常にデプロイが完了しました!

因みにこの Capifony、symfony 1.4.x でも利用できるらしいスグレモノです。未だに symfony 1.4.x 系のプロジェクトをいくつか抱えているのでそちらでも試してみようと思います。