第8回 deploy:rollback と deploy:cleanup
今回は、deploy:rollback タスクと deploy:cleanup タスクについて。
deploy:update タスクを実行すると、Capistrano は Subversion などのリポジトリからソースコードをチェックアウトしてくるのだが、もう少し詳細に見ると、いろんなことをしている。
releasesディレクトリの下に現在時刻に基づく YYmmddHHMMSS 形式のサブディレクトリを作り、そこに最新のソースコードをチェックアウトする。- そのサブディレクトリに
shared/logディレクトリへのシンボリックリンクを作る。 currentディレクトリからそのサブディレクトリへのシンボリックリンクを作る。
つまり、Capistrano は以前にチェックアウトしたソースコードも取っておいて、シンボリックの作り替えによって最新版が動くようにしているわけだ。
deploy:rollback は、一つ前のソースコードに戻してアプリケーションを再起動するタスクである。具体的には、current ディレクトリのリンク先を一つ前のソースコードをチェックアウトしたディレクトリに替えて、最新のソースコードを削除し、deploy:restart タスクを実行する。
デプロイしたばかりのアプリケーションに重大なバグが発見されて、急いで元に戻したい場合に用いるタスクである。
* executing `deploy:rollback'
* executing `deploy:rollback_code'
* executing "ls -x /var/rails/ballad/releases"
servers: ["alpha.oiax.jp"]
[alpha.oiax.jp] executing command
command finished
* executing "rm /var/rails/ballad/current; ln -s /var/rails/ballad/releases/20080517010640
/var/rails/ballad/current && rm -rf /var/rails/ballad/releases/20080518014637"
servers: ["alpha.oiax.jp"]
[alpha.oiax.jp] executing command
command finished
* executing `deploy:restart'
* executing "/var/rails/ballad/current/script/process/reaper"
servers: ["alpha.oiax.jp"]
[alpha.oiax.jp] executing command
** [out :: alpha.oiax.jp] Restarting 17952
** [out :: alpha.oiax.jp] Restarting 17962
** [out :: alpha.oiax.jp] Restarting 17964
** [out :: alpha.oiax.jp] Restarting 17960
command finished
さて、deploy:update タスクを繰り返し実行すると、古いソースコードがターゲットホストに貯まっていくことになる。ディスクスペースの無駄なので、最新版から何世代かを残して消去しておきたい。
そのような時に、deploy:cleanup タスクを使用する。
デフォルトでは5世代分のソースコードを残してすべて消去する。残すべき世代数は keep_releases 変数で制御できるので、config/deploy.rb に次のように書けば、3世代分を残すようになる。
set :keep_releases, 3
実行例:
* executing `deploy:cleanup'
* executing "ls -x /var/rails/ballad/releases"
servers: ["alpha.oiax.jp"]
[alpha.oiax.jp] executing command
command finished
** keeping 3 of 5 deployed releases
* executing "rm -rf /var/rails/ballad/releases/20080512155340
/var/rails/ballad/releases/20080513092114"
servers: ["alpha.oiax.jp"]
[alpha.oiax.jp] executing command
command finished
(2008/05/18)
記事に関するご質問は、 hermes@oiax.jp までメールでお送りください。
ウェブサイト構築の発注先を検討されているお客様は、ご相談フォームをご利用ください。
- はじめに
- 第1回 インストール (2008/03/24)
- 第2回 SSH 公開鍵の設置 (2008/03/25)
- 第3回 Windows で Capistrano (2008/03/26)
- 第4回 capify (2008/03/27)
- 第5回 ターゲットホストの準備 (2008/03/28)
- 第6回 deploy:update (2008/03/29)
- 第7回 Rails アプリケーションの起動・停止・再起動 (2008/05/17)
- 第8回 deploy:rollback と deploy:cleanup (2008/05/18)
- 第9回 メンテナンスページへの切り替え (2008/06/03)

