Passenger(mod_rails)環境にCapistranoでデプロイする

Capistranoをmod_rails向けに設定してみます。
mod_railsの導入、Capistranoの導入は以下の記事を参照してください。

Capistranoの設定

今までと同じようにdeploy環境を作って、config/deploy.rb を少し変更すればOKです。
以下をdeploy.rbに追記します。

namespace :deploy do
  desc "Restarting mod_rails with restart.txt"
  task :restart, :roles => :app, :except => {:no_release => true} do
    run "touch #{current_path}/tmp/restart.txt"
  end

  [:start, :stop].each do |t|
    desc "#{t} task is a no-op with mod_rails"
    task t, :roles => :app do ; end
  end
end

restart.txtの生成が肝です。mod_railsはrestart.txtの有無でアプリを更新するべきか判断します。
この状態で、cap deploy すればデプロイが可能です。Apacheの再起動は必要なし。

VirtualHostの設定

DocumentRootにcurrentを入れればOKです。以下のようになります。

<VirtualHost *:80>
  ServerName hogehoge.example.jp
  DocumentRoot /home/railsapp/hogehoge/current/public
</VirtualHost>