第4回 capify

2008/03/27

今回は、Rails アプリケーションをデプロイメントする準備。

以下、あなたの Rails アプリケーションの名前を ballad とする。
また、本番サーバのホスト名を alpha.oiax.jp とし、デプロイ先のディレクトリを /var/rails/ballad/ とする。
Subversion レポジトリの URL は https://repository.oiax.jp/svn/ballad/trunk。
なお、これらのホスト名、URL はすべて架空のものである。

ballad アプリケーションのルートディレクトリに移動して、コマンド capify . を入力。

% capify .
[add] writing `./Capfile'
[add] writing `./config/deploy.rb'
[done] capified!

生成されたファイルの一つ Capfile の中身は次の通りだが、このファイルは基本的に書き換えない。

load 'deploy' if respond_to?(:namespace) # cap2 differentiator
Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
load 'config/deploy'

config ディレクトリに生成される deploy.rb ファイルの初期状態は、次の通り:

set :application, "set your application name here"
set :repository,  "set your repository location here"

# 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

role :app, "your app-server here"
role :web, "your web-server here"
role :db,  "your db-server here", :primary => true

これを、次のように書き換える。

set :application, "ballad"
set :repository,  "https://repository.oiax.jp/svn/ballad/trunk"
set :deploy_to,   "/var/rails/#{application}"

set :user, "app"
set :use_sudo, false

role :app, "alpha.oiax.jp"
role :web, "alpha.oiax.jp"
role :db,  "alpha.oiax.jp", :primary => true

set :user, "app" で、リモートホストに SSH でログインするユーザーを app に設定している。他のユーザー(例えば、rails)を使っている場合は、書き換える。

その次の行の、set :use_sudo, false は、Rails アプリケーションの起動時等に sudo を使うかどうかを制御する変数。我々の例では、app ユーザーで起動するので、false にしておく。


[改訂] 2008/05/17 ユーザー app でリモートホストにログインする方式に合わせて記述を修正。