はじめに

  • symfonyプロジェクトのデプロイツールCapifonyを紹介します。
  • はじめの手順はちょっとメンドウだし、仰々しいかもしれませんが、後がラクということで試してみます。

Capistranoとは

  • Rubyで書かれたデプロイツール。もともとはRailsアプリのデプロイ向け?
  • デプロイ対象サーバーにsshログインして、任意のコマンドを実行することができる。
  • 複数のサーバーへも並行して処理を実行できる。

Capifonyとは

  • Capistranoを PHPフレームワーク symfonyで使えるようにしたもの。
  • symfony用のコマンドが実行できるようになっている。

準備

  • デプロイを実行する環境に下記が必要。

Ruby

(各自準備)

Capistrano

sudo gem install capistrano 

Capifony

sudo gem install capifony 

デプロイスクリプトの準備

symfonyプロジェクトディレクトリで実行

$ capifony .
[add] writing './Capfile'
[add] writing './config/deploy.rb'
[done] Symfony1 project capifonied!
config/deploy.rbを編集 

生成されたconfig/deploy.rbを編集

set :user, "ssh_user"               #sshログインするユーザーアカウント
ssh_options[:keys] = %w(~/.ssh/account-ssh-key)
set :application,  "application_name"
set :deploy_to,    "/home/application/src/"
set :scm,          :subversion
set :scm_username, "deployer"       #デプロイ用ユーザーアカウント
set :scm_password, "********"
role :web do
[
  "app1.example.com",     #デプロイ対象webサーバーを列挙します
  "app2.example.com",
]
end
set  :use_sudo,       false
set  :keep_releases,  3

初回デプロイ

各サーバーにディレクトリを準備

cap deploy:setup

共有ディレクトリを作成

cap shell < 'mkdir -p src/shared/config; exit'

データベース接続設定ファイルをコピー

cap shared:databases:to_remote
  • この仕組みを使うと、ログ、データベース接続設定はデプロイ対象外となり、気にしなくてよくなります。

2回目以降のデプロイ(チェックアウトとシンボリックリンク切り替えを別に実行)

指定リポジトリをチェックアウト

cap deploy:update_code -S repository='http://svn.example.co.jp/svn/application/tags/RELEASE-1.0.0'

シンボリック切り替え

cap deploy:create_symlink

直前のチェックアウトに切り戻す(直前のチェックアウトにシンボリックリンク切り替え)

cap deploy:rollback

不要なチェックアウトを削除

cap deploy:cleanup

2回目以降のデプロイ(チェックアウトとシンボリックリンク切り替えを一気に実行する場合)

cap deploy -S repository='http://svn.example.co.jp/svn/application/tags/RELEASE-1.0.1'

facebook slideshare rubygems github qiita