Capistrano рдФрд░ php

рдЫрд╡рд┐ рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред рдЖрдЬ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЕрджреНрднреБрдд рддреИрдирд╛рддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред



рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ Capistrano рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдЯреВрд▓ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрджрд▓рдиреЗ рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИред



рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рд░реВрдмреА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ "рдореЙрдбреНрдпреВрд▓" (рдпрд╛ рдШрдЯрдХ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рд░реЗрд▓ рдврд╛рдВрдЪреЗ рдкрд░ рд░реВрдмреА рдХрд╛ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ)ред



рдпрд╣ рд╡рд┐рд╖рдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ рд╕реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд, рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде php (рдпрд╛ "рдЖрд░рдУрдЖрд░ рдирд╣реАрдВ") рдХреЗ рд▓рд┐рдП рд╣реИред рдпрд╣ рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдФрд░ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдпрд╣ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯрд╛ рдЧрд╛рдЗрдб рд╣реИред



рддреЛ, рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ / рдкрде / рдкрд░рд┐рдирд┐рдпреЛрдЬрди / рдкреИрдХреЗрдЬ рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ php рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдЖрд╡реЗрджрди рд╣реИред рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдХреЗ рд╕рд╛рде example.net/project.git рдкрд░ рд╕реНрдерд┐рдд рдПрдХ git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ssh рдПрдХреНрд╕реЗрд╕ рдФрд░ / path / рддреИрдирд╛рдд / рдлреЛрд▓реНрдбрд░ рдХреЗ рд╕рд╛рде example.com рдкрд░ рдПрдХ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рднреА рд╣реИ рдЬрд╣рд╛рдБ рд╣рдо рдЕрдкрдиреА рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рд▓рдЧрд╛рддрд╛рд░ ftp рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред



рд╕реНрдерд╛рдкрдирд╛



рдЪрд▓реЛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рджрд░реНрдЬ рдХрд░реЗрдВ:



$ sudo apt-get install ruby rubygems $ sudo gem install capistrano
      
      





рдЪреВрдВрдХрд┐ RoR рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдХреЙрдиреНрдлрд┐рдЧрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рд╣реИред рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



  $ mkdir /path/deploy/from/config
      
      





рдпрджрд┐ рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╡рд╣ рднреА рд╕рд░реНрд╡рд░ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рдПрдкрд╛рдЪреЗ рдХреЗ рд▓рд┐рдП .htaccess рдлрд╝рд╛рдЗрд▓ рдбрд╛рд▓рдирд╛ рди рднреВрд▓реЗрдВ, рдЬреЛ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛, рдпрд╛ рдЕрдиреНрдп рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдЧрд╛ред



Kapifikatsiya



рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдЬреЛ рдкрд╣рд▓реА рдЪреАрдЬ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рд╣реИ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ "рдХреИрдкрд┐рдлрд╛рдИ-рдиреНрдпреВрдЯ" рдХрд░рдирд╛ред "Capfaction" рдПрдХ рдЖрд╡реЗрджрди рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП capistrano рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИрдВ рдФрд░ рджрд░реНрдЬ рдХрд░реЗрдВ:



  $ cd /path/deploy/from $ capify .
      
      





рдпрд╣ рдХрдорд╛рдВрдб рджреЛ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдЧреА:



Capfile



рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ capistrano рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬреИрд╕реЗ рдореЗрдХрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░реЗрдХ рд░реЗрдХрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдбрд┐рдлреЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреИрдкрдлрд╛рдЗрд▓ рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рд╢реБрд░реВ рдореЗрдВ рдЙрддреНрдкрдиреНрди Capfile рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдпрд╣ рд╕рдм "рд▓реЛрдб / config.rb" рд▓реЛрдб рд╣реИ ...



config/deploy.rb



- рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА "рд╕реЗрдЯрд┐рдВрдЧ" рд╣реЛрддреА рд╣реИред

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╣рдореЗрдВ рдЕрдХреЗрд▓реЗ рд╣реА Capfile рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ config / рддреИрдирд╛рдд.rb рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд╛рд░реАрдХреА рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:



  set :application, "set your application name here" set :repository, "set your repository location here" set :scm, :subversion # Or: `accurev`, `bzr`, `vcs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none` role :web, "your web-server here" # Your HTTP server, Apache/etc role :app, "your app-server here" # This may be the same as your `Web` server role :db, "your primary db-server here", :primary => true # This is where Rails migrations will run role :db, "your slave db-server here" # If you are using Passenger mod_rails uncomment this: # if you're still using the script/reapear helper you will need # these http://github.com/rails/irs_process_scripts # namespace :deploy do # task :start do ; end # task :stop do ; end # task :restart, :roles => :app, :except => { :no_release => true } do # run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}" # end # end
      
      





рдпрд╣ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗред



рд╡рд┐рдиреНрдпрд╛рд╕



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдирд╛рдо рджреЗрдирд╛ рд╣реЛрдЧрд╛ред рдЪрд▓реЛ рдЗрд╕реЗ "рдореЗрд░реА php рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рдХрд╣рддреЗ рд╣реИрдВ:



  set :application, "my php application"
      
      





рдлрд┐рд░ рдЖрдкрдХреЛ рдЙрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ рдХреЛрдб рд╕реНрдерд┐рдд рд╣реИред рдпрд╣ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЖрдкрдХреА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдФрд░ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╕реЗ, рдЬрд╣рд╛рдВ рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рдЬрдЧрд╣ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд╣рдо рдЕрдкрдирд╛ рднрдВрдбрд╛рд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:



  set :repository, "ssh://git@example.net/project.git"
      
      





рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рд╕реЗ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдЖрд░рдПрд▓ рдЕрд▓рдЧ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ssh рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рдЕрд▓рдЧ рдкреЛрд░реНрдЯ рд╣реИ), рддреЛ рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рдкрддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



  set :repository, "ssh://git@example.com:22100/project.git" set :local_repository, "ssh://git@example:project.git"
      
      





рдЪреВрдВрдХрд┐ рд╣рдо рд╕рдмрд╡рд░реНрд╕рди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рджрд░реНрдЬ рдХрд░рдиреА рд╣реЛрдЧреА:



  set :scm, :git
      
      





рдЕрдм рдЖрдкрдХреЛ рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ, рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред



рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ Capistrano



рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рддреИрдирд╛рдд рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдиреАрдЪреЗ рдХреА рддрд░рд╣ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдЧреА (рдЬрд╣рд╛рдВ [рддреИрдирд╛рддреА_рддреЛ рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ):



  [deploy_to] [deploy_to]/releases [deploy_to]/releases/20080819001122 [deploy_to]/releases/... [deploy_to]/shared [deploy_to]/shared/log [deploy_to]/shared/pids [deploy_to]/shared/system [deploy_to]/current -> [deploy_to]/releases/20100819001122
      
      





рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ "рд░рд┐рд▓реАрдЬрд╝" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА, рдЬрд┐рд╕рдореЗрдВ рдЙрд╕рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ "рд╡рд░реНрддрдорд╛рди" рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рдВрд░рдЪрдирд╛ RoR рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдФрд░ рд╡реЗрдм рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (RoR рдореЗрдВ, рдпрд╣ [рддреИрдирд╛рддреА_ рд╡рд░реНрддрдорд╛рди] / рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ /) рд╣реИред



рд╡рд╛рдкрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП



рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрд╣рд╛рдВ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ "/ u / apps / # {рдПрдкреНрд▓рд┐рдХреЗрд╢рди}" (рдЬрд╣рд╛рдВ # {рдПрдкреНрд▓рд┐рдХреЗрд╢рди} рд╡рд╣ рдирд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЪрд░ "рдЙрдкрд░реЛрдХреНрдд:" рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ)ред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ:



  set :deploy_to "/path/deploy/to"
      
      





рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдХрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реИрдВред рдЖрдо рддреМрд░ рдкрд░, рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд░реЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рднреВрдорд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рд╡реЗрдм, рдРрдк рдФрд░ рдбреАрдмреАред рдЗрди рднреВрдорд┐рдХрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕рд░реНрд╡рд░ рд╣реИ рдФрд░ рд╣рдореЗрдВ рднреВрдорд┐рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



  server "example.com"
      
      





рдЙрдиреНрдирдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕



рдЕрдм рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред



рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдЯреАрдореЗрдВ



рд╣рдордиреЗ рдЕрдкрдиреА рд░реЗрд╕рд┐рдкреА рд▓рд┐рдЦреА, рдЗрд╕рдХреЗ рдмрд╛рдж рдЖрдк Capistrano рд╕реЗ рдХреБрдЫ рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ:



рд╕реЗрдЯрдЕрдк



рдЖрдЗрдП рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



  $ cap deploy:setup
      
      





рдЬрдм рдпрд╣ рдХрдорд╛рдВрдб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рдПрдЧрд╛ рдФрд░ "mkdir" рдХрдорд╛рдВрдб рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрдХ рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред



рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЬрд╛рдБрдЪ



рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдврд╛рдВрдЪрд╛ рд╣реИ, рддреЛ рд╣рдо рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЪреАрдЬреЗрдВ рд╣реИрдВ:



  $ cap deploy:check
      
      





рдХрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдФрд░ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдХреБрдЫ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА рдСрдкрд░реЗрд╢рди рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рдЧрд┐рдЯ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рдЖрджрд┐ред



рд╕рд░реНрд╡рд░ рдХреЛ рдХреЛрдб рднреЗрдЬрдирд╛



рдЕрдм рд╣рдо рдПрдХ рдкреВрд░реНрдг рддреИрдирд╛рддреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдб рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рдЪрд░рдг рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ:



  $ cap deploy:update
      
      





рдпрд╣ рдХрдорд╛рдВрдб рд╕рд░реНрд╡рд░ рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рд▓рд┐рдВрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред



рддреИрдирд╛рддреА



рдЕрдВрдд рдореЗрдВ рд╣рдо рд╕реАрдзреЗ рддреИрдирд╛рддреА рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рддреИрдирд╛рдд рдХрдорд╛рдВрдб рд╕рд┐рд░реНрдл рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдХрдИ рдЕрдиреНрдп рдЖрджреЗрд╢реЛрдВ рдкрд░, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд░реЗрдЦ рдореЗрдВ рдХреИрд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдЫрд╡рд┐



рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ: рдЕрджреНрдпрддрди рдФрд░ рддреИрдирд╛рдд: рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдЖрджреЗрд╢ рд░реЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рд░реВрдмреА рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВ, рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрди рджреЛ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рддреИрдирд╛рддреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ: рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рддреИрдирд╛рдд рдХрд░реЗрдВ: рдЖрдЬреНрдЮрд╛рдУрдВ рдХреЛ рд░реЛрдХреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЖрд░рдУрдЖрд░ рдХреЗ рд▓рд┐рдП рднреА рддреЗрдЬ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░, рдпрджрд┐ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдиреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрджреЗрд╢ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ):



  namespace :deploy do task :start do end task :stop do end task :restart do end task :finalize_update do end end
      
      





рдореВрд▓ рд░реВрдк рд╕реЗ, рдЕрдм рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЖрджреЗрд╢ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ: рдХрдорд╛рдВрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдХрд░ рдЗрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред



рдЕрдм рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╡рд░реНрдгрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВ, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдХреА рдкреЗрдЬ рдкрд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ DSL рдкреНрд░рд▓реЗрдЦрди рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдПрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдирдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХреИрдк-рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝реЗрдВред рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрдорд╛рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:



  after "deploy", "deploy:cleanup"
      
      





рдпрджрд┐ рдЖрдк рдиреБрд╕реНрдЦрд╛ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рддреИрдирд╛рддреА рдХреЗ рдмрд╛рдж / рдкрде / рддреИрдирд╛рддреА / рд╕реЗ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЕрдВрддрд┐рдо 5 рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд░рд┐рд▓реАрдЬрд╝ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред



рдмрд╣реБрд╕реНрддрд░реАрдп



рд╣рдорд╛рд░реЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рд╣рдо рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ-рдПрдХреНрд╕рдЯреЗрдВрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рддрдерд╛рдХрдерд┐рдд рдорд▓реНрдЯреАрд╕реНрдЯреЗрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рд╣реИред рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдиреНрдпрд╛рд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рд╡рд╛рдВрдЫрд┐рдд рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк рдХрд░реЗрдВ:



  $ gem install capistrano-ext
      
      





рдЗрд╕рдХреЗ рдмрд╛рдж, рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ / рдкрде / рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд / рд╕реЗ / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / рдПрдХ рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ:



  $ mkdir /path/deploy/from/config/deploy
      
      





рдФрд░ рд╣рдорд╛рд░реЗ рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдбрд╛рд▓реЗрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрдиред рдЖрд░рдмреА рдФрд░ рд╕реНрдЯреЗрдЬрд┐рдВрдЧред рдЖрд░рдмреАред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЬреЛ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╣реИ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ /path/deploy/from/config/deploy.rb рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдирд╛ :



  set :stages, %w(staging production) require 'capistrano/ext/multistage'
      
      





рдЕрдм рдЖрдк "рдЯреЛрдкреА рдЙрддреНрдкрд╛рджрди рддреИрдирд╛рдд" рдФрд░ "рдЯреЛрдкреА рдордВрдЪрди рддреИрдирд╛рддреА" рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдЙрд╕реЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рдЙрд╕рдХрд╛ рдирд╛рдо рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ :stages



:



  set :stages, %w(staging production develop)
      
      





рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ "рдХреИрдк рддреИрдирд╛рддреА" рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдиреБрд╕реНрдЦрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рддреИрдирд╛рддреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдХрд╛рдо рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреБрд╕реНрдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЪрд░ "default_stage" рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



  set :stages, %w(staging production develop) set :default_stage, "develop" require 'capistrano/ext/multistage'
      
      





рдХреИрдк рддреИрдирд╛рддреА рдХрдорд╛рдВрдб рдЕрдм рдХреИрдк рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧреАред



рдпрд╣ рд╕рдм, рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред



рдкреБрдирд╢реНрдЪ: рдореИрдВрдиреЗ рдкреНрд░рдХрд╛рд╢рди рдХрд╛ рдирд╛рдо рдЕрдиреБрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЖрдзреЗ рд╕реЗ рднреА рдХрдо рд╣рд┐рд╕реНрд╕реЗ рд╣реИрдВред рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рдЕрдиреНрдп рд▓реЗрдЦреЛрдВ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╕реЗ рд▓реА рдЧрдИ рд╣реИрдВред



рдореВрд▓ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓

рдорд▓реНрдЯреАрд╕реНрдЯреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ

help.github.com/capistrano



All Articles