deployment on mediatemple with capistrano and git is not fun but it is more fun than doing your taxes
HAPPY TAX DAY!
Deploying to Media Temple isn’t easy. You have to add a domain, make an alternate domain and configure a lot of things through something called “mtr”. In order to deploy there with capistrano and git I first compiled git on my server to the following location:
/home/####/users/.home/usr/bin/git
Then I capify my project and copy in the below deploy.rb with my custom settings and passwords. There are some tasks included such as mtr_init, mtr_generate_htaccess and mtr_create_link that help with media temple commands.
deploy.rb:
require 'mt-capistrano'
#gem install mt-capistrano --source=http://gems.mediatemple.net/
set :site, "SITE_NUMBER (4 digits probably)"
set :application, "APPLICATION"
set :webpath, "APPLICATION.com"
set :domain, "MEDIA TEMPLE DOMAIN"
set :user, "MEDIA TEMPLE USER"
set :password, "MEDIA TEMPLE PASSWORD"
set :scm, :git
set :scm_command, "/home/####/users/.home/usr/bin/git"
set :repository, "git://github.com/ckhsponge/remindblast.git"
set :deploy_to, "/home/#{site}/containers/rails/#{application}"
set :current_deploy_dir, "#{deploy_to}/current"
set :tmp_dir, "#{deploy_to}/tmp"
set :checkout, "export"
role :web, "#{domain}"
role :app, "#{domain}"
role :db, "#{domain}", :primary => true
task :after_update_code, :roles => :app do
put(File.read('config/database.yml'), "#{release_path}/config/database.yml", :mode => 0444)
end
task :mtr_init, :roles => :app do
run "cd $HOME/../../containers && mkdir -p rails && cd rails && mkdir -p #{application} && cd #{application} && mkdir -p current && cd current && mtr add #{application} $PWD #{webpath}"
run "mkdir -p $HOME/../../containers/rails/#{application}/shared"
run "mkdir -p $HOME/../../containers/rails/#{application}/shared/log"
end
task :mtr_create_link, :roles => :app do
run "mtr create_link #{application}"
end
namespace :deploy do
task :restart, :roles => :app do
#run "mtr restart #{application} -u #{user} -p #{password}"
#run "mtr generate_htaccess #{application} -u #{user} -p #{password}"
run "mtr restart #{application} -u #{user} -p #{password}"
run "mtr generate_htaccess #{application} -u #{user} -p #{password}"
#migrate
end
end
April 29, 2008 at 3:01 pm
how did you get git installed on the gs? its been fighting with me all day.
April 29, 2008 at 6:00 pm
Read the more recent post for how I like to install git. I also sent a note to mike to see if he can run git out of my bin dir. We’ll let you know if that works.
I also realized that mt-capistrano already has a lot of the ‘mtr’ commands built in. run “cap -Tv” to see all capistrano tasks.