2012年3月5日月曜日

symfonyプロジェクトのデプロイツールCapifony

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

Capistranoとは

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

Capifonyとは

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

準備

デプロイを実行する環境に下記が必要。
  • Ruby
    • 各自準備
  • Capistrano
    sudo gem install capistrano

  • Capifony

    sudo gem install capifony


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



  1. symfonyプロジェクトディレクトリで下記実行

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

  2. 生成された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
    [
      "ec2-176-34-40-71.ap-northeast-1.compute.amazonaws.com",     #デプロイ対象webサーバーを列挙します
      "ec2-175-41-221-104.ap-northeast-1.compute.amazonaws.com",
    ]
    end
    set  :use_sudo,       false
    set  :keep_releases,  3

初回デプロイ



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

    cap deploy:setup

  2. 共有ディレクトリを作成

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

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

    cap shared:databases:to_remote


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



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

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

  2. シンボリック切り替え

    cap deploy:create_symlink

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

    cap deploy:rollback

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

    cap deploy:cleanup


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


チェックアウト後、すぐに切り替えて良い場合は下記でOKです。
cap deploy -S repository='http://svn.example.co.jp/svn/application/tags/RELEASE-0.0.1'