SlideShare a Scribd company logo
1 of 22
Download to read offline
Rails deployment

    Tompa Tamás
     2011.01.20
témák
•   eszközök
•   környezetek
•   szerverek, csomagok
•   deployment
•   konfiguráció
•   continous integration (CI)
•   automatizálás
eszközök
•   Bundler – gem függőségek
•   Capistrano – deployment
•   SVN - verziókövető
•   Rake – build tasks
•   CruiseControl.rb - integration
•   Passenger – mod_rails (futtató
    környezet)
Bundler
gembundler.com
GEM

•   Gemfile
•   bundle install
•   bundle install --deployment
•   bundle exec
Bundler

• Pontos verzió megadás
  – gem 'mysql2', '=0.2.6'
• Esetleg minor verzió váltás
  – gem 'will_paginate', '~>3.0.pre2'
• Fejlesztői gem-ek külön
  – group :development do
Capistrano
github.com/capistrano/capistrano
GEM


• capistrano-ext
• capistrano_colors
• capistrano_branching


• Capfile
• cap staging deploy
CruiseControl
cruisecontrolrb.thoughtworks.com
Rails app

• cruise_config.rb
• build_my_app.sh
• cruise.rake

• cruise start
CruiseControl
build_my_app.sh
 bundle install --deployment
 rake cruise:start

cruise_config.rb
 project.build_command =
  './build_my_app.sh'
Passenger
modrails.com
Rails/Rack server (apache, nginx)

• config.ru (Rack)
• RailsEnv, RackEnv

• touch tmp/restart.txt
DiNa
releases.txt
- Project changelog
- Deployment = Release

cronbuilder
- multi server cron jobs
- cat ~/.cronbuilder/* | crontab -
környezetek
●   Development
●   Test (= Cucumber)
●   Cruise
●   Staging
●   (Customertest)
●   Production
környezetek


dev, test                  staging

               cruise

dev, test
                          customer


dev, test


                          production
szerverek
●   SSH / SCP
●   Mindenhol azonos verziók
●   Mindenhol azonos csomagok
●   Egységes update policy
●   Staging: build server is lehet, dev
    csomagok, esetleg debug
●   Production: csak ami a futtatáshoz
    kell
deployment
●   Capistrano
    ●   Deploy strategy (Copy)
    ●   Recipe
●   Copy Strategy with Bundler
    ●   Update copy cache
    ●   Excludes
    ●   Running bundler with deploy mode
    ●   Compressing
    ●   Uploading
        https://gist.github.com/788136
deployment
    deploy.rb
●   set :stages, %w(staging production)
●   require 'capistrano/ext/multistage'

●   set :application, "APP_NAME"

●   set :deploy_via, :copy

●   set :copy_cache, true
●   set :copy_exclude, [".svn", "*/.svn", "log"]
●   set :copy_via, :scp

●   set :rake, "bundle exec rake"
deployment
    Capfile
●   after 'deploy:setup', 'deploy:create_shared_dirs'

●   after 'deploy:update_code', 'deploy:finalize_code'

●   after 'deploy:finalize_code', 'deploy:setup_cron'

●   after 'deploy:finalize_code', 'deploy:web:disable'

●   after 'deploy:start', 'deploy:web:enable'
Capistrano tests
●   Minden jól le is futott?
●   Jogosultságok
●   Process-ek
●   Integrity check
●   deploy:check hook-ok
●   Rollback esetek is!
CI
●   2 CI server
    ●   Instant build
         ●   Automatizált tesztek (rspec, cucumber)
         ●   Azonnal előjönnek a hibák
         ●   Gyors javítási lehetőség
         ●   Komplex, hosszan futó tesztek kihagyása
    ●   Daily build
         ●   Naponta csak 1x fut le
         ●   A hosszan futó tesztek csak itt
         ●   Metrikák – metrics_fu gem
         ●   SVN analízis - svnstat
CI
●   Build game
●   Nabaztag notifier
    ●   Gyula
        http://vimeo.com/17637539
Mit automatizáljunk?
●   Tesztek
●   Continous Integration
    ●   Sikeres daily build esetén – auto staging
        deploy
●   Deployment
●   De mindig kell manuális tesztelés is!
Mit ne automatizáljunk?
●   Customertest/Production deploy
    manuális!
●   Interaktív deployment
●   capistrano_branching tool
    ●   trunk → branches/stable
    ●   branches/stable → branches/production
folyt köv
• Köszönöm!

• Blog: http://digitalnatives.blog.hu/

More Related Content

Similar to Budapest.rb 2011/01 - Rails Deployment

PHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaPHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaFerenc Kovács
 
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.Ferenc Kovács
 
SUSE Linux Enterprise 11 admin 2
SUSE Linux Enterprise 11 admin 2SUSE Linux Enterprise 11 admin 2
SUSE Linux Enterprise 11 admin 2Kálmán Kéménczy
 
Klaszter és virtualizációs technikák
Klaszter és virtualizációs technikákKlaszter és virtualizációs technikák
Klaszter és virtualizációs technikákFerenc Szalai
 
Continous Integration and Deployment
Continous Integration and DeploymentContinous Integration and Deployment
Continous Integration and DeploymentKároly Nagy
 
Grid és adattárolás
Grid és adattárolásGrid és adattárolás
Grid és adattárolásFerenc Szalai
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaFerenc Kovács
 
Grid és adattárolás
Grid és adattárolásGrid és adattárolás
Grid és adattárolásFerenc Szalai
 
Nagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseNagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseJános Pásztor
 
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...Ferenc Szalai
 
20111130 oa gtest
20111130 oa gtest20111130 oa gtest
20111130 oa gtestczras
 
Mi a baj a Drupaloddal
Mi a baj a DrupaloddalMi a baj a Drupaloddal
Mi a baj a Drupaloddalthesnufkin
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenKrisztián Gyula Tóth
 

Similar to Budapest.rb 2011/01 - Rails Deployment (20)

Webkonf 2013
Webkonf 2013Webkonf 2013
Webkonf 2013
 
Ci
CiCi
Ci
 
Budapest.rb 201010
Budapest.rb 201010Budapest.rb 201010
Budapest.rb 201010
 
Alumni Release Process
Alumni Release ProcessAlumni Release Process
Alumni Release Process
 
PHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaPHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosítása
 
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
 
SUSE Linux Enterprise 11 admin 2
SUSE Linux Enterprise 11 admin 2SUSE Linux Enterprise 11 admin 2
SUSE Linux Enterprise 11 admin 2
 
Klaszter és virtualizációs technikák
Klaszter és virtualizációs technikákKlaszter és virtualizációs technikák
Klaszter és virtualizációs technikák
 
Continous Integration and Deployment
Continous Integration and DeploymentContinous Integration and Deployment
Continous Integration and Deployment
 
A Firefox-on túl is Mozilla
A Firefox-on túl is MozillaA Firefox-on túl is Mozilla
A Firefox-on túl is Mozilla
 
Grid és adattárolás
Grid és adattárolásGrid és adattárolás
Grid és adattárolás
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálása
 
Grid és adattárolás
Grid és adattárolásGrid és adattárolás
Grid és adattárolás
 
Nagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseNagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztése
 
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
 
20111130 oa gtest
20111130 oa gtest20111130 oa gtest
20111130 oa gtest
 
Mi a baj a Drupaloddal
Mi a baj a DrupaloddalMi a baj a Drupaloddal
Mi a baj a Drupaloddal
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
 
A Mozilla nem csak Firefox
A Mozilla nem csak FirefoxA Mozilla nem csak Firefox
A Mozilla nem csak Firefox
 
Xen klaszterek
Xen klaszterekXen klaszterek
Xen klaszterek
 

More from Digital Natives

How to support innovation in organisations @ Startup Safary
How to support innovation in organisations @ Startup SafaryHow to support innovation in organisations @ Startup Safary
How to support innovation in organisations @ Startup SafaryDigital Natives
 
A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...
A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...
A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...Digital Natives
 
Agile és lean workshop @ Startup Safary
Agile és lean workshop @ Startup SafaryAgile és lean workshop @ Startup Safary
Agile és lean workshop @ Startup SafaryDigital Natives
 
Introduction to GraphQL with Ruby
Introduction to GraphQL with RubyIntroduction to GraphQL with Ruby
Introduction to GraphQL with RubyDigital Natives
 
A visual introduction to concurrency and parallellism patterns
A visual introduction to concurrency and parallellism patternsA visual introduction to concurrency and parallellism patterns
A visual introduction to concurrency and parallellism patternsDigital Natives
 
How flat organisations support the innovation
How flat organisations support the innovationHow flat organisations support the innovation
How flat organisations support the innovationDigital Natives
 
Basics of Metaprogramming in Ruby
Basics of Metaprogramming in RubyBasics of Metaprogramming in Ruby
Basics of Metaprogramming in RubyDigital Natives
 
Ruby meetup 7_years_in_testing
Ruby meetup 7_years_in_testingRuby meetup 7_years_in_testing
Ruby meetup 7_years_in_testingDigital Natives
 
Digital natives incubation process_2011-11-23_v09
Digital natives incubation process_2011-11-23_v09Digital natives incubation process_2011-11-23_v09
Digital natives incubation process_2011-11-23_v09Digital Natives
 
Mixgar in Volt festival 2011
Mixgar in Volt festival 2011Mixgar in Volt festival 2011
Mixgar in Volt festival 2011Digital Natives
 

More from Digital Natives (13)

How to support innovation in organisations @ Startup Safary
How to support innovation in organisations @ Startup SafaryHow to support innovation in organisations @ Startup Safary
How to support innovation in organisations @ Startup Safary
 
A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...
A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...
A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...
 
Agile és lean workshop @ Startup Safary
Agile és lean workshop @ Startup SafaryAgile és lean workshop @ Startup Safary
Agile és lean workshop @ Startup Safary
 
Introduction to GraphQL with Ruby
Introduction to GraphQL with RubyIntroduction to GraphQL with Ruby
Introduction to GraphQL with Ruby
 
A visual introduction to concurrency and parallellism patterns
A visual introduction to concurrency and parallellism patternsA visual introduction to concurrency and parallellism patterns
A visual introduction to concurrency and parallellism patterns
 
How flat organisations support the innovation
How flat organisations support the innovationHow flat organisations support the innovation
How flat organisations support the innovation
 
CULTURE OF INNOVATION
CULTURE OF INNOVATIONCULTURE OF INNOVATION
CULTURE OF INNOVATION
 
Testing in JavaScript
Testing in JavaScriptTesting in JavaScript
Testing in JavaScript
 
Basics of Metaprogramming in Ruby
Basics of Metaprogramming in RubyBasics of Metaprogramming in Ruby
Basics of Metaprogramming in Ruby
 
Ruby meetup 7_years_in_testing
Ruby meetup 7_years_in_testingRuby meetup 7_years_in_testing
Ruby meetup 7_years_in_testing
 
Digital natives incubation process_2011-11-23_v09
Digital natives incubation process_2011-11-23_v09Digital natives incubation process_2011-11-23_v09
Digital natives incubation process_2011-11-23_v09
 
Mixgar in Volt festival 2011
Mixgar in Volt festival 2011Mixgar in Volt festival 2011
Mixgar in Volt festival 2011
 
Mixgar prezi v1.2
Mixgar prezi v1.2Mixgar prezi v1.2
Mixgar prezi v1.2
 

Budapest.rb 2011/01 - Rails Deployment

  • 1. Rails deployment Tompa Tamás 2011.01.20
  • 2. témák • eszközök • környezetek • szerverek, csomagok • deployment • konfiguráció • continous integration (CI) • automatizálás
  • 3. eszközök • Bundler – gem függőségek • Capistrano – deployment • SVN - verziókövető • Rake – build tasks • CruiseControl.rb - integration • Passenger – mod_rails (futtató környezet)
  • 4. Bundler gembundler.com GEM • Gemfile • bundle install • bundle install --deployment • bundle exec
  • 5. Bundler • Pontos verzió megadás – gem 'mysql2', '=0.2.6' • Esetleg minor verzió váltás – gem 'will_paginate', '~>3.0.pre2' • Fejlesztői gem-ek külön – group :development do
  • 8. CruiseControl build_my_app.sh bundle install --deployment rake cruise:start cruise_config.rb project.build_command = './build_my_app.sh'
  • 9. Passenger modrails.com Rails/Rack server (apache, nginx) • config.ru (Rack) • RailsEnv, RackEnv • touch tmp/restart.txt
  • 10. DiNa releases.txt - Project changelog - Deployment = Release cronbuilder - multi server cron jobs - cat ~/.cronbuilder/* | crontab -
  • 11. környezetek ● Development ● Test (= Cucumber) ● Cruise ● Staging ● (Customertest) ● Production
  • 12. környezetek dev, test staging cruise dev, test customer dev, test production
  • 13. szerverek ● SSH / SCP ● Mindenhol azonos verziók ● Mindenhol azonos csomagok ● Egységes update policy ● Staging: build server is lehet, dev csomagok, esetleg debug ● Production: csak ami a futtatáshoz kell
  • 14. deployment ● Capistrano ● Deploy strategy (Copy) ● Recipe ● Copy Strategy with Bundler ● Update copy cache ● Excludes ● Running bundler with deploy mode ● Compressing ● Uploading https://gist.github.com/788136
  • 15. deployment deploy.rb ● set :stages, %w(staging production) ● require 'capistrano/ext/multistage' ● set :application, "APP_NAME" ● set :deploy_via, :copy ● set :copy_cache, true ● set :copy_exclude, [".svn", "*/.svn", "log"] ● set :copy_via, :scp ● set :rake, "bundle exec rake"
  • 16. deployment Capfile ● after 'deploy:setup', 'deploy:create_shared_dirs' ● after 'deploy:update_code', 'deploy:finalize_code' ● after 'deploy:finalize_code', 'deploy:setup_cron' ● after 'deploy:finalize_code', 'deploy:web:disable' ● after 'deploy:start', 'deploy:web:enable'
  • 17. Capistrano tests ● Minden jól le is futott? ● Jogosultságok ● Process-ek ● Integrity check ● deploy:check hook-ok ● Rollback esetek is!
  • 18. CI ● 2 CI server ● Instant build ● Automatizált tesztek (rspec, cucumber) ● Azonnal előjönnek a hibák ● Gyors javítási lehetőség ● Komplex, hosszan futó tesztek kihagyása ● Daily build ● Naponta csak 1x fut le ● A hosszan futó tesztek csak itt ● Metrikák – metrics_fu gem ● SVN analízis - svnstat
  • 19. CI ● Build game ● Nabaztag notifier ● Gyula http://vimeo.com/17637539
  • 20. Mit automatizáljunk? ● Tesztek ● Continous Integration ● Sikeres daily build esetén – auto staging deploy ● Deployment ● De mindig kell manuális tesztelés is!
  • 21. Mit ne automatizáljunk? ● Customertest/Production deploy manuális! ● Interaktív deployment ● capistrano_branching tool ● trunk → branches/stable ● branches/stable → branches/production
  • 22. folyt köv • Köszönöm! • Blog: http://digitalnatives.blog.hu/