SlideShare a Scribd company logo
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

PDF
Az SVN használata a csapatfejlesztésben
PDF
StreamProxy - University of Pannonia
PPTX
Többszálú javascript
PDF
Sirh adequasys
PDF
Evolution of the Software Development Process ad Digital Natives
PPT
D-drive
ODP
Orkina klavdia 2010-2011_esercizio_4
PPT
D drive(2)
Az SVN használata a csapatfejlesztésben
StreamProxy - University of Pannonia
Többszálú javascript
Sirh adequasys
Evolution of the Software Development Process ad Digital Natives
D-drive
Orkina klavdia 2010-2011_esercizio_4
D drive(2)

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

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

More from Digital Natives (13)

PDF
How to support innovation in organisations @ Startup Safary
PDF
A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...
PDF
Agile és lean workshop @ Startup Safary
PDF
Introduction to GraphQL with Ruby
PDF
A visual introduction to concurrency and parallellism patterns
PPTX
How flat organisations support the innovation
PPTX
CULTURE OF INNOVATION
PDF
Testing in JavaScript
PDF
Basics of Metaprogramming in Ruby
PDF
Ruby meetup 7_years_in_testing
PPT
Digital natives incubation process_2011-11-23_v09
PPTX
Mixgar in Volt festival 2011
PPTX
Mixgar prezi v1.2
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...
Agile és lean workshop @ Startup Safary
Introduction to GraphQL with Ruby
A visual introduction to concurrency and parallellism patterns
How flat organisations support the innovation
CULTURE OF INNOVATION
Testing in JavaScript
Basics of Metaprogramming in Ruby
Ruby meetup 7_years_in_testing
Digital natives incubation process_2011-11-23_v09
Mixgar in Volt festival 2011
Mixgar prezi v1.2
Ad

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/