Ruby On Rails projektin käyttöönotto
Elokuu 11, 2009
Huom! Esimerkki toimii vain *nix alustoilla koska Capistrano ei tue virallisesti muita.
Capistranon asennus:
Riippuen *nix:stä ja Ruby:n asennuksesta riippuen tarvitset sudo/su oikeuksia.
[sudo] gem install capistrano
Rails projektin alustus:
Capistrano luo config/deploy.rb tiedoston.
cd /rails/projektin/juuri/
capify .
[add] writing `./Capfile'
[add] writing `./config/deploy.rb'
[done] capified!
./config/deploy.rb
# Minimaalinen esimerkki
# Sovelluksen nimi
set :application, "sample-app"
# Osoite jossa lähdekoodi majailee
set :repository, "git@github.com:sample-app.git"
# Versionhallinta sovellus - tässä esimerkikssä git
set :scm, :git
# Palvelimen asennuskansio
set :deploy_to, "/home/example/public_html/#{application}"
# Asetetaan oletus moodi
set(:env, 'staging') unless exists?(:env)
if env == 'production'
# Otetaan oikea branch
set :branch, "production"
# Virallinen tuotantoympäristö
puts "********* DEPLOYING TO PRODUTION *********"
# Web-palvelin
role :web, "domain.fi"
# Sovelluspalvelin
role :app, "domain.fi"
# Tietokantapalvelin
role :db, "domain.fi", :primary => true
# Juuri kansio
set :base_folder, "/var/www/production/www"
set :user, "production_user"
# Kansio johon asennus tehdään
set :deploy_to, "#{base_folder}/#{application}"
set :use_sudo, false
set :spinner, false
set :reaper, false
# Tehdää asennus kopioimalla ensin omalle koneelle ja siitä siirretään palvelimelle
# näin vältytään usein ssh avaimien haalimisesta git:ä käytettäessä
# voisi käyttää myös ssh_forward:ia, mutta näin aloittavalle helpompi
set :deploy_via, :copy
set :compression, :zip
set :rails_env, "production"
elsif env == 'staging'
# Otetaan oikea branch
set :branch, "staging"
puts "********* DEPLOYING TO STAGING *********"
# Web-palvelin
role :web, "staging.domain.fi"
# Sovelluspalvelin
role :app, "staging.domain.fi"
# Tietokantapalvelin
role :db, "staging.domain.fi", :primary => true
# Juuri kansio
set :base_folder, "/home/developer/www"
set :user, "developer"
# Kansio johon asennus tehdään
set :deploy_to, "#{base_folder}/#{application}"
set :use_sudo, false
set :spinner, false
set :reaper, false
# Tehdää asennus kopioimalla ensin omalle koneelle ja siitä siirretään palvelimelle
# näin vältytään usein ssh avaimien haalimisesta git:ä käytettäessä
# voisi käyttää myös ssh_forward:ia, mutta näin aloittavalle helpompi
set :deploy_via, :copy
set :compression, :zip
set :rails_env, "production"
end
Staging eli esittelyn vaiheen käyttöönotto:
# Valmistellaan ympäristö eli luodaan tarvittavia kansioita yms.
cap deploy:setup -S env=staging
# Tehdään ensimmäinen käyttöönotto
cap deploy:cold -S env=staging
# Ajetaan migraatiot
cap deploy:migrate -S env=staging
# Uuden releasen vieminen
cap deploy -S env=staging
# Lisää komentoja saat esille
cap -T
Lisää reseptejä löytyy http://github.com/jaakkos/my-deploy-stuff/tree/master