Nach einem Jahr mit Ruby on Rails habe ich nun angefangen Capistrano zu benutzen. Das dies so lange gedauert hat, lag daran das die bisherigen Anwendungen unter Windows liefen.
Mit einem *nix Applikationsserver sollte man natürlich ohne Frage Capistrano nutzen, was das Ausrollen deutlich komfortabler und schneller macht.
Die folgende Konfigurationsdatei checkt die Anwendung aus einem Subversion Repository lokal aus und kopiert die Dateien zum Applikationsserver. Es wird weiterhin vorrausgesetzt, daß das Apache Modul Passenger auf dem Applikationsserver verwendet wird.
Möglichkeiten
- Checkt Sourcecode aus Repositories aus
- Kann Webserver neu starten (wird bei Passenger nicht benötigt)
- Migriert Datenbanken
- Alte Versionen werden gesichert und es kann ein Rollback gemacht werden
- Es können unterschiedliche Applikations und Datenbankserver verwendet werden
Vorgehensweise
Installation
sudo gem install capistrano
Im Verzeichnis der Rails Anwendung: capify .
Konfigurationsdatei
config/deploy.rb:
Annahmen: Subversion, installation über Kopieren (scp) auf den Applikationsserver, Apache mit Passenger als Applikationsserver
—————————————————————————————
#############################################################
# Application
#############################################################
set :application, “ApplicationX”
set :deploy_to, “/var/www/#{application}”
#############################################################
# Settings
#############################################################
set :user_sudo, false
#############################################################
# Subversion
#############################################################
set :repository, “https://<pfad zum Repository>/trunk”
set :svn_username, ‘<benutzername>’
set :svn_password, ‘<passwort>”
#############################################################
# Servers
#############################################################
set :host, “<Adresse des Zielrechners>”
role :web, host
role :app, host
role :db, host, :primary => true
set :deploy_via, :copy # checkt lokal aus und kopiert die Daten
set :via, :scp
set :user, ‘<benutzername>’ # ssh benutzername
set :runner, ‘<ausführender benutzer>’
#############################################################
# Passenger
#############################################################
namespace :deploy do
desc “Restart Application”
task :restart do
run “touch #{current_path}/tmp/restart.txt”
end
desc “Start Application — not needed for Passenger”
task :start, :roles => :app do
# nothing — need to override default cap start task when using Passenger
end
end
—————————————————————————————
Capistrano Tasks
Prüfen ob Einstellungen richtig sind: cap deploy:check
Erstellen der Verzeichnisse auf dem Server: cap deploy:setup
Erstes Ausrollen: cap deploy:cold
Ausrollen: cap deploy
Datenbank Migration: cap deploy:migrations
Rollback: cap deploy:rollback
Bücher
Professionelle Webentwicklung mit Ruby on Rails 2 – ab Seite 489
Deploying Rails Applications – ab Seite 85