アプリケーション名

Capistrano(きゃぴすとらーの)

このアプリケーションでできること

  1. deploy用アプリケーション。
  2. SSHでアクセス可能で、同じユーザ名/パスワードで、同じディレクトリ構成のものであれば、複数台に配置可能(配置先サーバ名を設定に追加するだけ)
  3. subversionからのエクスポートを手動やwebアプリからキックするより、セキュア&合理的
  4. 配置先でマイグレーション可能。
  5. 配置先でfcgiやmongrelなどの再起動可能
  6. 配置先でのロールバック(一つ前の配置状態に戻す)可能
  7. 配置先は過去の配置状態を時系列で保持している(ディレクトリ名をタイムスタンプとして保持)


対象バージョン

1.2系

インストール方法

  • gemから
gem install capistrano

ちょー簡単な使い方


gem install -y capistrano
でインストール。
MaxOSX 10.5だと最初からインストール済みだね。

Railsのホームディレクトリ(rail hogeで作ったディレクトリ)で
capify .
とやると
./config/deploy.rb
が作られるのでこの中身の
set :application, "set your application name here" ←アプリケーション名。適当につける
set :repository,  "set your repository location here"  ←subversionのリポジトリ位置
role :app, "your app-server here" ←Railsのインスタンスを立ち上げるサーバのIPまたはドメイン名
role :web, "your web-server here" ←静的ファイルの応答を行うサーバのIPまたはドメイン名
role :db,  "your db-server here", :primary => true ←DBのインスタンスを立ち上げるサーバのIPまたはドメイン名
を適当に書き換えた後、必要に応じて
set :use_sudo, false ←接続先ではsudoする必要があるか
set :user, "Your user name" ←SSHでログインするときのユーザ名(各サーバ同じ)
set :scm_user, "Your SCM user name" ←subversionなどのアクセス用ユーザ名(でもうまく動かない)
set :scm_password, "Your SCM Password" ←subversionなどのアクセス用パスワード(でもうまく動かない)
を追加。(詳しい意味は下記H.F.Fさんページ参照。ちなみにscm_userとpasswordは自分の環境ではうまく動かなかった)

更新

subversionなどで、checkoutなどにユーザ名とパスワードが必要だった場合、上記scm_userとscm_passwordを使ってみたけど、コケてしょぼーんだったのが昨日までの話。よくよく考えてみると、
set :repository,  "--username your_user_name --password your_password http://example.com:/path/to/your/repository"
でいいじゃんって事になった。確かにこれで動くしね。

これで設定は終わったはずなので、
cap deploy:setup
で配置先に初期ディレクトリなどを用意して、1回目の配置は
cap deploy:cold
2回目以降は
cap deploy
で配置できるはず。マイグレーションなどもできちゃう。
途中でsshでの接続のためのユーザパスワードを聞かれるので答えるように。(この辺はsshの設定による)

配置先でrailsインスタンスを再起動したいならば
./script/spin
というファイルを作って、
/path/to/current/script/process/spawner -p 11000 -i 3
とだけ書いて保存し、subversionのプロパティで実行権限を付けておくと、起動してくれるようになる。
script/process/*も実行権限いるね。
※注 Passenger使うならspinスクリプトはいらない。

たぶん実際には、SSH絡みとか./config/*の設定とか、gemとか各種バージョンによって、まずすんなり動かないと思うが、がんがってくれ。
一度動けばうはうはだ。


公式ページ

※Getting Started→Railsあたりを読もう

日本語解説ページ

※現時点で一番まとまっている

※全体的な話

※よくまとまっています

外国語解説ページ

  • いまいちいいサイトがない

のうはう

  • アップロードしたファイルとか、バージョンが変わっても保持したいデータは、デプロイ先のcurrent/public/system以下に配置すれば、share/systemにシンボリックリンクが張られるから保持できるようになる。

コメント

  • リポジトリへのアクセスにIP/PASSが必要なんだけど、うまく動いてくれない… - まいぞ 2008-02-01 12:01:14
  • よくよく考えたら、うまく抜けれた。wikiも更新しておきました。 - まいぞ 2008-06-09 00:01:20

トラックバック

&link_trackback(text=トラックバック表示)
+ タグ編集
  • タグ:
  • capistrano
  • gem
  • deploy

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年06月09日 00:00