2009/12/14

Capistrano

Ruby on Rails のデプロイに便利な Capistrano の使用メモ。

参考

インストール。 termios はディスプレイにパスワードが表示されないようにするためにインストールしておく。

gem install capistrano
gem install termios

アプリケーションのルートディレクトリで capify をカレントディレクトリ指定で実行すると、2つのファイルができる。

  • ./Capfile ← 特にいじる必要なし
  • ./config/deploy.rb ← いじるファイル
capify .

./config/deploy.rb に必要な情報を書く。 Passenger の場合は restart で touch tmp/restart.txt する。

# -*- coding: utf-8 -*-
set :application, "BLOG"
set :repository, "/home/ancient/letter/ruby/rails/apps/blog"

set :scm, :git
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`

role :web, "127.0.0.1" # Your HTTP server, Apache/etc
role :app, "127.0.0.1" # This may be the same as your `Web` server
role :db, "127.0.0.1", :primary => true # This is where Rails migrations will run
#role :db, "your slave db-server here"

set :deploy_to, "/home/ancient/job/actindi/apache/rails-deploy"
set :use_sudo, false

# ログイン先の環境変数を設定する。
default_environment["PATH"] = "${HOME}/letter/ruby/1.8.7/bin:${PATH}"

# ssh でわけわからなくなったら次のコメントを外してみる。
# ssh_options[:verbose] = :debug

# If you are using Passenger mod_rails uncomment this:
# if you're still using the script/reapear helper you will need
# these http://github.com/rails/irs_process_scripts
namespace :deploy do
task :start do end
task :stop do end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
end

ローカルで次のコマンドを実行してサーバに必要なディレクトリを作成する。

cap deploy:setup

デプロイする。

cap deploy

マイグレーションもできる。

cap deploy:migrate

なんかまずかったら rollback できる。

cap deploy:rollback

次のコマンドでタスクの一覧が表示される。

cap -T

ssh でわけわからなくなったら次を ./config/deploy.rb に入れてみる。

ssh_options[:verbose] = :debgu

0 件のコメント: