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!