RedStrong Red (default) BlueCalm Blue GreenFresh Green

Chose your color scheme.

Setting up GIT and Passenger with Capistrano

Posted on September 10, 2008, by psousa, under Blog, Programming, Web.

This week I needed to get Capistrano working with GIT because I moved some of my Ruby on Rails projects from SVN to GITHUB and I Capistrano garantees a easy deployment solution.

There’s plenty of information out there about GIT, you can find plenty of guides at github and some videos at Railscasts and GitCasts.

So, first of all, GIT needs to be installed on the server running my apps, so I had to run these steps to get it working

sudo apt-get install libexpat1-dev zlibc curl gettext
 
sudo apt-get install libcurl3-openssl-dev
 
cd ~/src
wget http://www.kernel.org/pub/software/scm/git/git-1.5.4.rc2.tar.gz
 
gunzip git-1.5.4.rc2.tar.gz
tar xvf git-1.5.4.rc2.tar
 
cd git-1.5.4.rc2
make prefix=/usr/local all
sudo make prefix=/usr/local install

So what this does is install a bunch of stuff needed for Git, including Curl and finally I compile Git. I didn’t advance more because I only need it to pull and clone stuff.

Next is the capistrano recipe for MyDumbApp:

set :application, "myDumbApp"
set :deploy_to, "/home/myserveuserarea/apps/#{application}"
#############################################################
#	Settings
#############################################################
 
default_run_options[:pty] = true
set :use_sudo, true
 
#############################################################
#	Servers
#############################################################
 
set :user, "myserveruser"
set :domain, "154.14.13.12"
server domain, :app, :web
role :db, domain, :primary => true
set :runner, "myserveruser"
 
#############################################################
#	GIT
#############################################################
 
set :repository,  "git@github.com:reinventar/mydumbapp.git"
set :scm, "git"
set :scm_passphrase, "passwordforgituser" #This is your custom github user password
ssh_options[:forward_agent] = true
set :branch, "master"
 
#############################################################
#	Passenger
#############################################################
 
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

Just a few notes about this recipe:

I’m using this with a repository in GitHub, I assume you already have your local machine configured, if not here’s some pretty useful guides.

I think it’s best to make sure you have the latest capistrano version installed on your local machine.

With the latest version of Capistrano, you need to add

set :runner, "myserveruser"

and repeat your remote server username or else you’ll get a nasty error.

ssh_options[:forward_agent] = true is used so that you can use your private key stored in your local machine remotely, but first I think you need to do something like this:

cd .ssh
ssh-add githubkey

to add the key to your ssh-agent.

I’m using Passenger for my apps, so that last part of the recipe is intended to restart my application, if you’re using mongrel or something else, you’ll need to tell Capistrano how to restart your application.

And that’s it. Hope it works. :)

If you have a better or alternative way to deploy, advice, etc, why not share it here?

One Reply to "Setting up GIT and Passenger with Capistrano"

gravatar

Daily Digest for 2008-09-10 | Pedro Trindade  on September 11, 2008

[...] Setting up GIT and Passenger with Capistrano | reinventar [...]

Leave a Comment