Capistrano を使ってみた

Posted by okkez Sat, 29 Mar 2008 13:47:00 GMT

Ruby で作られたデプロイツール Capistrano を使ってみたので使い方をまとめておく。

インストール

gem でインストールする。

$ sudo gem install capistrano

依存ライブラリも入るはず。

最初の一歩

こでは2.2.0を使用する。

$ cap --version Capistrano v2.2.0 $ cd ~/railsapp/ $ capify .

Rails アプリを作成しているディレクトリに移動して capify コマンドを実行するだけで その Rails アプリは Capistrano 対応になる。

capify コマンドでは以下のファイルが生成される。

  • Capfile
    • レシピファイル
  • config/deploy.rb
    • 設定ファイル

あとは config/deploy.rb を編集するだけで良い。

config/deploy.rb の編集

set :application, "application name" set :repository, "/path/to/repository" set :deploy_to, "/path/to/deploy/path" role :app, "application server" role :web, "web server" role :db, "databese server", :primary => true

set :hoge のところは特に説明は不要だと思う。しかし、set :repository の設定でちょっとハマったので後述する。 role の方は、各サーバーの名前や IPアドレスを記述する。ドキュメントによると複数のサーバを指定することも可能なようだ。 ウチでは全部同じサーバなのでそういう風に設定した。

$ cap deploy:setup

これでデプロイ先にディレクトリが作成される。

$ cap -q deploy:check

これで足りないものが無いかチェックしてくれる。

$ cap deploy:cold

初回のデプロイは上記コマンドを実行する。二回目以降は以下を実行する。

$ cap deploy

簡単ですね!

ハマりポイント

ウチのサーバの構成。

[作業マシン] <- [The Internet] -> [サーバ](app, web, db, svn) # 間の通信は svn or http

ご存知のとおり、Subversion は svn, svn+ssh, file, http, https などのプロトコルに対応している。 自分の場合は、 svn+ssh でアクセスするようにしていたので最初はそのように設定した。

その場合、以下のように実行されるようでうまく行かなかった。

  1. ローカルでリポジトリの情報を取得
  2. app サーバに ssh で乗り込む[a]
  3. appサーバから svn+ssh でリポジトリからデータを取得[b]

3番の部分で ssh のコネクションが突然閉じてしまう。ログを確認してもよく分からなかったのであまり調査せずに サーバに乗り込んでから cap コマンドを実行するようにした。

リポジトリの設定だけ file:// を使用するように変更した。

今のところうまく動いているので、もう少し時間のある時にしっかり調べてみようと思う。

Posted in | コメントはありません | タグ | atom

Trackbacks

Use the following link to trackback from your own site:
http://typo.okkez.net/trackbacks?article_id=use-capistrano-1&day=29&month=03&year=2008

Comments

Leave a response

Leave a comment