Settare un semplice progetto con Capistrano

Posted by Dibi Store Fri, 26 Oct 2007 08:02:00 GMT

Capistrano è uno dei migliori (se non il migliore) strumenti per il deployment delle vostre applicazioni web (non solo rails). In questo articolo descriverò le procedure base per attivare un semplice progetto usando Capistrano

E' essenziale seguire le semplice istruzioni per l'installazione nel sito ufficiale in modo da poter essere subito operativi.

Innanzitutto creiamo un progetto con rails, posizioniamoci con la shell nella root directory e digitiamo:

capify .

Questo creerà i files necessari. Ora possiamo sapere tutti i task che abbiamo a disposizione semplicemente con:

cap -T

Che produce questa lista:

cap deploy               # Deploys your project.
cap deploy:check         # Test deployment dependencies.
cap deploy:cleanup       # Clean up old releases.
cap deploy:cold          # Deploys and starts a `cold' application.
cap deploy:migrate       # Run the migrate rake task.
cap deploy:migrations    # Deploy and run pending migrations.
cap deploy:pending       # Displays the commits since your last deploy.
cap deploy:pending:diff  # Displays the `diff' since your last deploy.
cap deploy:restart       # Restarts your application.
cap deploy:rollback      # Rolls back to a previous version and restarts.
cap deploy:rollback_code # Rolls back to the previously deployed version.
cap deploy:setup         # Prepares one or more servers for deployment.
cap deploy:start         # Start the application servers.
cap deploy:stop          # Stop the application servers.
cap deploy:symlink       # Updates the symlink to the most recently deployed ...
cap deploy:update        # Copies your project and updates the symlink.
cap deploy:update_code   # Copies your project to the remote servers.
cap deploy:upload        # Copy files to the currently deployed version.
cap deploy:web:disable   # Present a maintenance page to visitors.
cap deploy:web:enable    # Makes the application web-accessible again.
cap invoke               # Invoke a single command on the remote servers.
cap shell                # Begin an interactive Capistrano session.

Some tasks were not listed, either because they have no description,
or because they are only used internally by other tasks. To see all
tasks, type `cap -Tv'.

Configurazione

Il prossimo passo è quello di impostare i nostri valori nel file /config/deploy.rb ricordandovi che è tutto codice ruby, quindi potete anche impostare variabili nel rispetto del principio DRY:

application = "test_svn"

set :application, application
set :repository,  "svn:path/to/remote/svn/#{application}"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, "www.myapp.com"
role :web, "www.myapp.com"
role :db,  "www.myapp.com", :primary => true

L'esempio ci aiuta a capire la configurazione minima necessaria, notiamo che dobbiamo impostare anche l'indirizzo del server, e... leggete i commenti!

Come da documentazione ora dovete agire in base a come gestite il vostro server, per esempio io ho scelto di gestire il tutto con Mongrel, in questo caso, come da manuale, possiamo creare un file in /script/spin dove metteremo le impostazioni:

/path/current/script/process/spawner -p 3000 -i 3

In questo modo impostiamo 3 istanze di mongrel nelle porte (3000 - 3001 - 3002)

Setup

Se avete impostato tutto correttamente, con il prossimo comando capistrano tenterà di connettersi al server, ed eseguire il setup dello stesso:

cap deploy:setup

Se tutto è andato a buon fine ora dobbiamo assicurarci che tutto il software necessario è installato nel nostro server, ed eventualmente installarlo:

cap -q deploy:check

Nella documentazione viene riportato l'esempio di Capistrano che vi dice che non avete installato subversion, ma che invece avete fatto, in questo caso specificate nel file deploy.rb:

set :scm_command, "/opt/local/bin/svn"

Deploy

Il primo deploy è delicato, per qui potete usare questo comando:

cap deploy:cold

Se tutto è andato a buon fine, d'ora in avanti potete usare invece:

cap deploy

Se qualche volta sbagliate e mandate in produzione qualcosa che non doveva andare, possiamo tornare indietro con il comando:

cap deploy:rollback

Posted in  | Tags ,  | no comments

Comments

(leave url/email »)

   Preview comment