Capistrano - Deployment mit Mongrel

Ein weiteres Highlight im Railsumfeld ist zweifelsohne dass Deployment mit Hilfe von Capistrano. Einmal eingerichtet genügt ein einzelner Kommandozeilenbefehl um die lokalen Änderungen auf einem Server installieren. Dabei wird automatisch ein Backup der Anwendung erzeugt und im Falle eines Fehlers kann mit einer weiteren Kommandozeile der vorherige Zustand wieder hergestellt werden.

Nutzt man Mongrel als Server für die Anwendung sind ein paar kleinere Anpassungen am Standard deploy.rb Script erforderlich. Ich habe die Tasks für Start, Stop und Restart des Server überschrieben damit die Standard Task nicht versuchen das script/reaper aufzurufen. Ausserdem habe ich das System so eingestellt dass nicht "svn checkout" sondern "svn export" genutzt wird um zu vermeiden dass die .svn Verzeichnisse mit exportiert werden.

Hier nun meine deploy.rb


set :application, "belisartools"
set :repository,  "https://svn.belisar.de/pfad/zu/belisartools/trunk"

ssh_options[:forward_agent] = true 
set :use_sudo, false
set :user, "deinusername"
set :runner, :user 
set :deploy_via, :export 
 
set :deploy_to, "/www/#{application}"

role :app, "belisar.de"
role :web, "belisar.de"
role :db,  "belisar.de", :primary => true

task :restart_web_server, :roles => :web do
  run "cd /www/belisartools/current/ && mongrel_rails start -p 3000 -e production -d"
  run "chmod -R a+x /www/belisartools/current/script"
end

task :stop_web_server, :roles => :web do
  run "cd /www/belisartools/current/ && mongrel_rails stop"
end

namespace :deploy do
  task :restart do
    run "cd /www/belisartools/current/ && mongrel_rails stop"
    run "cd /www/belisartools/current/ && mongrel_rails start -p 3000 -e production -d"
  end
end

namespace :deploy do
  task :start do
    run "cd /www/belisartools/current/ && mongrel_rails start -p 3000 -e production -d"
  end
end

namespace :deploy do
  task :stop do
    run "cd /www/belisartools/current/ && mongrel_rails stop"
  end
end

Comments

Mongrel startet nicht immer

Vorsicht, das starten von mongrel nach dem Deployment klappt nicht immer. Besser noch mal nachgeschaut!