Capistrano でデプロイしてみる

2007/02/27

Ruby on Rails で作ったアプリケーションを配置ツール Capistranoでデプロイしてみました。環境は

  • 開発環境: Windows XP
  • デプロイ先: CentOS 4.4 + mongrel

です。

まずは開発環境での作業。

1. Capistrano をインストール

> gem install capistrano -y

2. レシピファイルと Rake タスクを作成

アプリケーションディレクトリの親ディレクトリにて以下を実行。

> cap -A APP_DIR

以下のファイルが生成される。

  • APP_DIR/config/deploy.rb:レシピファイル
  • APP_DIR/lib/tasks/capistrano.rake:Rake タスク

3. レシピの記述

アプリケーション名と SVN レポジトリを記述

set :application, "app"
set :repository, "svn://svn.example.com/rails/#{application}/trunk"

デプロイ先のホスト名を記述

role :web, "example.com"
role :app, "example.com"
role :db,  "example.com"

web(フロント)、app(バックエンド)、db(データベース)とも同一サーバなので同じホスト名を記述。

デプロイ先のパスと SSH のユーザ名を記述

set :deploy_to, "/home/hara/rails/#{application}"
set :user, "hara"

4. デプロイ

まずはデプロイ準備

> rake remote:setup

いよいよデプロイ

> rake deploy

restart タスクで FastCGI の再起動に失敗したが、今回は mongrel を使うので無視した。deploy タスクは、内部で remote:update_code, remote:symlink, remote:restart を呼んでいるので、気持ち悪ければ deploy の代わりに

> rake remote:update_code
> rake remote:symlink

としてもよいはず。またはレシピに

desc "Don't restart the web server"
task :restart, :roles => :app do
end

とでも書いて、restart タスクを空っぽに上書きしてやればよい。

以上でデプロイ先の /home/hara/rails/app 以下にアプリケーションがデプロイされた。

後はデプロイ先での作業。

  • public/dispatch.rb に記述された Ruby のパスを変更
  • rake migrate
  • mongrel_rails start

すればよい。Rake タスクを書けば、これも自動化できるはずだが、今回は省略。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。