capistranoのインストール

# gem install capistrano --include-dependencies
RailsにCapistranoを組み込むためには、capifyコマンドの第一引数にRailsプロジェクトのルートディレクトリを指定して実行してください。Capfileとconfig/deploy.rbの2つのファイルが作成されます。

プロジェクトの初期化

  • フォルダの作成
$ mkdir -p /var/www/rails/sample/config
  • プロジェクトのルートディレクトリを指定する
$ capify /var/www/rails/sample

script/spin

  1. 下記の内容でscript/spinファイルを作成する
/home/www/Rails/sample/current/script/process/spawner -p 8000 -i 3 --prefix=/sample

配布先サーバの初期化

配布先サーバにCapistranoで必要なディレクトリを作成します。
$ cap deploy:setup

初回リリース

$ cap deploy:cold

config/deploy.rbの編集

set :application, "sample"
set :repository,  "http://mydomain/svn/sample/trunk/"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
set :deploy_to, "/var/www/#{application}"

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

set :use_sudo, false

role :app, "localhost"
role :web, "localhost"
role :db,  "localhost", :primary => true

set :document_root, "/var/www/htdocs"

namespace :deploy do
  namespace :web do
    task :disable, :roles => :web, :except => { :no_release => true } do
      require 'erb'
      on_rollback { run "rm #{document_root}/#{application}_maintenance.html" }

      reason = ENV['REASON']
      deadline = ENV['UNTIL']

      template = File.read("config/maintenance.rhtml")
      result = ERB.new(template).result(binding)

      put result, "#{document_root}/#{application}_maintenance.html", :mode => 0644
    end

    task :enable, :roles => :web, :except => { :no_release => true } do
      run "rm #{document_root}/#{application}_maintenance.html"
    end
  end
end
最終更新:2008年02月11日 13:26