Capistrano2

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    3 Favorites

    Capistrano2 - Presentation Transcript

    1. Capistrano 2 Beyond Hassle-Free Deployment Luca Mearelli Pisa - Oct. 27, 2007
    2. Rails is fun
    3. Rails is fun Rails is TOO MUCH fun
    4. Deployment
    5. System Administration
    6. Rails : Web development = Capistrano : Sys.administration
    7. Capistrano basics •SSH to the remote machines •Posix compatible shell •Same password or public key •a bit of ruby knowledge •works from a command line
    8. Capistrano basics •Capfile (makefile, rakefile, ...) •It’s ruby task :dump_db, :hosts => \"database.spazidigitali.com\" do run \"mysqldump -u deploy sd_production > /home/luca/dumps/db.sql\" end cap dump_db
    9. role :sd_db, \"database.spazidigitali.com\" task :dump_db do run \"mysqldump -u deploy sd_production > /home/luca/dumps/db.sql\" end task :free_space do run \"df -h\" end cap dump_db
    10. set :gateway, \"firewall.spazidigitali.com\" role :sd_db, \"database.spazidigitali.com\" task :dump_db do run \"mysqldump -u deploy sd_production > /home/luca/dumps/db.sql\" end task :free_space do run \"df -h\" end cap dump_db
    11. set :gateway, \"firewall.spazidigitali.com\" role :sd_db, \"database.spazidigitali.com\", \"replica.spazidigitali.com\" task :dump_db do run \"mysqldump -u deploy sd_production > /home/luca/dumps/db.sql\" end task :free_space do run \"df -h\" end cap dump_db
    12. set :gateway, \"firewall.spazidigitali.com\" role :sd_db, \"database.spazidigitali.com\", \"replica.spazidigitali.com\" role :sd_app, \"mongrels.spazidigitali.com\" task :dump_db, :roles=>:sd_db do run \"mysqldump -u deploy sd_production > /home/luca/dumps/db.sql\" end task :free_space, :roles=>[:sd_db, :sd_app ] do run \"df -h\" end cap dump_db
    13. set :gateway, \"firewall.spazidigitali.com\" role :sd_db, \"database.spazidigitali.com\", \"replica.spazidigitali.com\" role :sd_app, \"mongrels.spazidigitali.com\" namespace :spazidig do desc \"Dumping our DBs\" task :dump_db, :roles=>:sd_db do run \"mysqldump -u deploy sd_production > /home/luca/dumps/db.sql\" end desc \"Checking free space\" task :free_space, :roles=>[:sd_db, :sd_app ]do run \"df -h\" end end cap spazidig:dump_db
    14. set :gateway, \"firewall.spazidigitali.com\" role :sd_db, \"database.spazidigitali.com\", \"replica.spazidigitali.com\" role :sd_app, \"mongrels.spazidigitali.com\" namespace :spazidig do desc \"What??\" task :default do run \"uname -a\" end desc \"Dumping our DBs\" task :dump_db, :roles=>:sd_db do run \"mysqldump -u deploy sd_production > /home/luca/dumps/db.sql\" end desc \"Checking free space\" task :free_space, :roles=>[:sd_db, :sd_app ]do run \"df -h\" end end cap spazidig spazidig:dump_db cap dump_db cap spazidig:free_space
    15. set :gateway, \"firewall.spazidigitali.com\" role :sd_db, \"database.spazidigitali.com\", \"replica.spazidigitali.com\" role :sd_app, \"mongrels.spazidigitali.com\" set :destination, \"db.sql\" namespace :spazidig do desc \"Dumping our DBs\" task :dump_db, :roles=>:sd_db do run \"mysqldump -u deploy sd_production > /home/luca/dumps/#{destination}.sql\" end end cap spazidig:dump_db
    16. set :gateway, \"firewall.spazidigitali.com\" role :sd_db, \"database.spazidigitali.com\", \"replica.spazidigitali.com\" role :sd_app, \"mongrels.spazidigitali.com\" set :destination, \"db.sql\" set(:database) do Capistrano::CLI.ui.ask \"Which database?: \" end namespace :spazidig do desc \"Dumping our DBs\" task :dump_db, :roles=>:sd_db do run \"mysqldump -u deploy #{database} > /home/luca/dumps/#{destination}.sql\" end end cap spazidig:dump_db
    17. task :deploy do transaction do try_this then_do_that end end task :try_this do on_rollback { run \"do_cleanup\" } #... end task :then_do_that do on_rollback { run \"do_super_cleanup\" } #... end
    18. on :event, :callback, :only => %w(tasks_to_do) # :load, :exit, :start, :finish, :begin, :after trigger :notify, current_task on :notify, :callback
    19. load_paths << \"config/deploy\" case ENV['STAGE'] when \"production\" then load \"production\" when \"staging\" then load \"staging\" else abort \"unknown stage: #{ENV['STAGE']}\" end
    20. before :deploy, :run_tests after \"deploy:update_code\", :link_database_yml task :run_tests do system \"rake\" or abort \"tests failed\" end task :link_database_yml do run \"ln -s #{release_path}/config/database.yml #{shared_path}/database.yml\" end
    21. Cap •cap -T •cap <some task> •cap invoke COMMAND=\"df -h\" •cap invoke COMMAND=\"df -h\" ROLES=sd_db •cap invoke COMMAND=\"df -h\" HOSTS=www.spazidigitali.com •cap shell
    22. Capify capify . •Creates a Capfile •Creates a deploy “configuration” file
    23. Cap •cap deploy:setup •cap deploy •cap deploy:check •cap deploy:rollback •cap deploy:cold •cap deploy:migrations •cap deploy:update •cap deploy:web:disable •cap deploy:migrate •cap deploy:web:enable •cap deploy:start •cap deploy:cleanup
    24. deploy:setup •<deploy_to> •current •releases •200706060120 •200702020815 •shared •log •pids •system
    25. deploy:check depend :remote, :gem, 'rpdf', '>=1.1.4' depend :remote, :directory, \"/tmp/rails\" depend :remote, :writable, \"/dir/file.log\" depend :local, :command, \"gem\" depend :remote, :command, \"mysqldump\"
    26. deploy:cold •copies the code - cap deploy:update •migrates the database - cap deploy:migrate •starts the service - cap deploy:start
    27. Variables •:ssh_options •:use_sudo •:application •:group_writable •:repository •:rake •:scm •:current_path •:deploy_via •:release_path •:deploy_to •:shared_path •:revision
    28. Deployment strategies •Checkout (classic capistrano) •Remote cache (svn up) •Export •Copy (via checkout or export, with compression)
    29. Example* *sorta real
    30. That’s all folks •Luca Mearelli •http://spazidigitali.com •lucamea@gmail.com
    SlideShare Zeitgeist 2009

    + Luca MearelliLuca Mearelli Nominate

    custom

    599 views, 3 favs, 0 embeds more stats

    An introduction to deploying rails applications wit more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 599
      • 599 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 3
    • Downloads 12
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories