{"id":83646,"date":"2024-11-13T11:36:30","date_gmt":"2024-11-13T08:06:30","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/"},"modified":"2024-11-13T11:36:30","modified_gmt":"2024-11-13T08:06:30","slug":"capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/","title":{"rendered":"Capistrano: \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0631\u06cc\u0644"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0641\u0631\u0622\u06cc\u0646\u062f\u06cc \u0632\u0645\u0627\u0646 \u0628\u0631 \u0648 \u0645\u0633\u062a\u0639\u062f \u062e\u0637\u0627 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u067e\u06cc\u0633\u062a\u0631\u0627\u0646\u0648 \u0648\u0627\u0631\u062f \u0639\u0645\u0644 \u0645\u06cc \u0634\u0648\u062f &#8211; \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0631\u0648\u0628\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0648 \u0633\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639\u060c Capistrano \u0686\u06cc\u0633\u062a\u060c \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u0622\u0645\u0648\u0632\u0634 \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0628\u0627 \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Ruby on Rails \u062e\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u06a9\u0627\u067e\u06cc\u0633\u062a\u0631\u0627\u0646\u0648 \u0686\u06cc\u0633\u062a\u061f<\/p>\n<p>Capistrano \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0631\u0627\u0647 \u062f\u0648\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0627\u0633\u062a. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u06a9\u0627\u0631\u0647\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0648\u0627\u06a9\u0634\u06cc \u06a9\u062f\u060c \u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u060c \u0645\u0647\u0627\u062c\u0631\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0633\u0631\u0648\u0631 \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0627 \u0633\u0631\u06cc\u0639\u060c \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0648 \u0633\u0627\u0632\u06af\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc Capistrano:<\/p>\n<p>\u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631: \u062e\u0637\u0627\u06cc \u0627\u0646\u0633\u0627\u0646\u06cc \u0631\u0627 \u0628\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0645\u06a9\u0631\u0631 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0686\u0646\u062f \u0633\u0631\u0648\u0631: \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0648 \u0646\u0642\u0634 \u0645\u0633\u062a\u0642\u0631 \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c web\u060c app\u060c db).<\/p>\n<p>\u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0639\u0642\u0628: \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u060c \u0628\u0647 \u0633\u0631\u0639\u062a \u0628\u0647 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0628\u0627\u0632\u06af\u0631\u062f\u06cc\u062f.<\/p>\n<p>\u0648\u0638\u0627\u06cc\u0641 \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645: \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0648\u0638\u0627\u06cc\u0641 \u0633\u0641\u0627\u0631\u0634\u06cc \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u062f\u063a\u0627\u0645 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628: \u0627\u0632 \u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f capistrano-rails\u060c capistrano-rvm\u060c \u0648 capistrano-bundler \u0628\u0631\u0627\u06cc \u0648\u0638\u0627\u06cc\u0641 \u062e\u0627\u0635 Rails \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u0633\u062e\u0647 Ruby.<\/p>\n<p>  \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Capistrano<\/p>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 Capistrano \u0648 \u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 Rails \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f Gemfile:<\/p>\n<p># Gemfile<br \/>\ngem &#8216;capistrano&#8217;, &#8216;~&gt; 3.17&#8217;<br \/>\ngem &#8216;capistrano-rails&#8217;, &#8216;~&gt; 1.6&#8217;<br \/>\ngem &#8216;capistrano-rvm&#8217;, &#8216;~&gt; 0.2.0&#8217;<br \/>\ngem &#8216;capistrano-bundler&#8217;, &#8216;~&gt; 2.0&#8217;<br \/>\ngem &#8216;capistrano-passenger&#8217;, &#8216;~&gt; 0.2&#8217;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f bundle install \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u0633\u0646\u06af\u0647\u0627\u06cc \u0642\u06cc\u0645\u062a\u06cc<\/p>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc Capistrano<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 Capistrano \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>bundle exec cap install<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>Capfile: \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a.<\/p>\n<p>config\/deploy.rb: \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062c\u0647\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631.<\/p>\n<p>config\/deploy\/production.rb: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0627\u0635 \u0645\u062d\u06cc\u0637 (\u0645\u062b\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f).<\/p>\n<p>  \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Capistrano \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/p>\n<p>  1. Capfile<\/p>\n<p>\u0627\u06cc\u0646 Capfile \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0648 \u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<p>require &#8216;capistrano\/setup&#8217;<br \/>\nrequire &#8216;capistrano\/deploy&#8217;<br \/>\nrequire &#8216;capistrano\/rvm&#8217;<br \/>\nrequire &#8216;capistrano\/bundler&#8217;<br \/>\nrequire &#8216;capistrano\/rails&#8217;<br \/>\nrequire &#8216;capistrano\/passenger&#8217;<\/p>\n<p>install_plugin Capistrano::RVM<br \/>\ninstall_plugin Capistrano::Bundler<br \/>\ninstall_plugin Capistrano::Rails::Migrations<br \/>\ninstall_plugin Capistrano::Passenger<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  2. \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062c\u0647\u0627\u0646\u06cc (config\/deploy.rb)<\/p>\n<p>\u0627\u06cc\u0646 deploy.rb \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>set :application, &#8220;my_app&#8221;<br \/>\nset :repo_url, &#8220;git@github.com:username\/my_app.git&#8221;<br \/>\nset :deploy_to, &#8220;\/var\/www\/#{fetch(:application)}&#8221;<br \/>\nset :branch, &#8220;main&#8221;<br \/>\nset :format, :pretty<br \/>\nset :log_level, :info<br \/>\nset :keep_releases, 5<\/p>\n<p># RVM Configuration<br \/>\nset :rvm_type, :user<br \/>\nset :rvm_ruby_version, &#8216;2.7.8&#8217;<\/p>\n<p># Linked Files &amp; Directories<br \/>\nset :linked_files, %w{config\/database.yml .env}<br \/>\nset :linked_dirs, %w{log tmp\/pids tmp\/cache tmp\/sockets public\/system}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  3. \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u062d\u06cc\u0637 (config\/deploy\/production.rb)<\/p>\n<p>\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062c\u0632\u0626\u06cc\u0627\u062a \u0633\u0631\u0648\u0631 \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u062d\u06cc\u0637\u06cc \u062e\u0627\u0635 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>server &#8216;123.45.67.89&#8217;, user: &#8216;deploy&#8217;, roles: %w{app web db}, primary: true<\/p>\n<p>set :rails_env, &#8216;production&#8217;<br \/>\nset :ssh_options, {<br \/>\n  keys: %w(~\/.ssh\/id_rsa),<br \/>\n  forward_agent: true,<br \/>\n  auth_methods: %w(publickey)<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/p>\n<p>Capistrano \u062f\u0631 \u0637\u0648\u0644 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u06cc\u06a9 \u0633\u0631\u06cc \u0645\u0631\u0627\u062d\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc: \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0627 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f (\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \/releases \u0648 \/shared).<\/p>\n<p>\u0648\u0627\u06a9\u0634\u06cc \u06a9\u062f: \u0622\u062e\u0631\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u0627\u0632 \u0645\u062e\u0632\u0646 Git \u0645\u06cc \u06a9\u0634\u062f.<\/p>\n<p>\u0646\u0635\u0628 Dependencies: \u0627\u0632 Bundler \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Ruby gems (bundle install).<\/p>\n<p>\u0627\u062c\u0631\u0627\u06cc \u0645\u0647\u0627\u062c\u0631\u062a: \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f rake db:migrate \u0628\u0631\u0627\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0637\u0631\u062d \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647<\/p>\n<p>\u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627\u06cc \u067e\u06cc\u0634 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644: \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f rake assets:precompile \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0631\u06cc\u0644.<\/p>\n<p>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0633\u0631\u0648\u0631: \u0633\u0631\u0648\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 (\u0645\u062b\u0644\u0627\u064b \u0645\u0633\u0627\u0641\u0631 \u06cc\u0627 \u067e\u0648\u0645\u0627) \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u067e\u0627\u06a9\u0633\u0627\u0632\u06cc: \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0632\u0627\u062f \u06a9\u0631\u062f\u0646 \u0641\u0636\u0627\u06cc \u062f\u06cc\u0633\u06a9 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>bundle exec cap production deploy<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0639\u0642\u0628 \u0627\u0633\u062a\u0642\u0631\u0627\u0631<\/p>\n<p>\u0627\u06af\u0631 \u0645\u0634\u06a9\u0644\u06cc \u067e\u06cc\u0634 \u0622\u0645\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u0628\u0647 \u0646\u0633\u062e\u0647 \u0642\u0628\u0644\u06cc \u0628\u0631\u06af\u0631\u062f\u06cc\u062f:<\/p>\n<p>bundle exec cap production deploy:rollback<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0648\u0638\u0627\u06cc\u0641 \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 Capistrano<\/p>\n<p>Capistrano \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0648\u0638\u0627\u06cc\u0641 \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u0646\u062f \u0645\u062b\u0627\u0644 \u0645\u0641\u06cc\u062f \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>  \u0645\u062b\u0627\u0644 1: \u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u06af\u0632\u0627\u0631\u0634 \u0647\u0627\u06cc Sidekiq<\/p>\n<p>namespace :logs do<br \/>\n  desc &#8220;Clear Sidekiq logs&#8221;<br \/>\n  task :clear_sidekiq_log do<br \/>\n    on roles(:app) do<br \/>\n      execute &#8220;echo &#8221; &gt; #{shared_path}\/log\/sidekiq.log&#8221;<br \/>\n      puts &#8220;Sidekiq logs cleared!&#8221;<br \/>\n    end<br \/>\n  end<br \/>\nend<\/p>\n<p>after &#8216;deploy:finished&#8217;, &#8216;logs:clear_sidekiq_log&#8217;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u062b\u0627\u0644 2: \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644<\/p>\n<p>namespace :deploy do<br \/>\n  desc &#8220;Update permissions&#8221;<br \/>\n  task :update_permissions do<br \/>\n    on roles(:app) do<br \/>\n      execute &#8220;chmod -R 755 #{release_path}\/&#8221;<br \/>\n      puts &#8220;Permissions updated for #{release_path}&#8221;<br \/>\n    end<br \/>\n  end<br \/>\nend<\/p>\n<p>after &#8216;deploy:finishing&#8217;, &#8216;deploy:update_permissions&#8217;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u062b\u0627\u0644 3: \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f Nginx<\/p>\n<p>namespace :nginx do<br \/>\n  desc &#8220;Restart Nginx&#8221;<br \/>\n  task :restart do<br \/>\n    on roles(:web) do<br \/>\n      execute &#8220;sudo systemctl restart nginx&#8221;<br \/>\n      puts &#8220;Nginx restarted successfully!&#8221;<br \/>\n    end<br \/>\n  end<br \/>\nend<\/p>\n<p>after &#8216;deploy:finishing&#8217;, &#8216;nginx:restart&#8217;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0639\u06cc\u0628 \u06cc\u0627\u0628\u06cc \u0645\u0633\u0627\u0626\u0644 \u0631\u0627\u06cc\u062c<\/p>\n<p>  1. SSH Authentication Errors<\/p>\n<p>\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u06a9\u0644\u06cc\u062f SSH \u0634\u0645\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0648 \u0628\u0647 \u0639\u0627\u0645\u0644 SSH \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>ssh-add ~\/.ssh\/id_rsa<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  2. \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u062c\u0648\u0632<\/p>\n<p>\u0627\u06af\u0631 \u0628\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u062c\u0648\u0632 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u06cc\u062f\u060c \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>sudo chown -R deploy:deploy \/var\/www\/my_app<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  3. \u0645\u0634\u06a9\u0644\u0627\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u062e\u0632\u0646 \u06af\u06cc\u062a<\/p>\n<p>\u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0644\u06cc\u062f SSH \u0634\u0645\u0627 \u0628\u0647 \u0645\u062e\u0632\u0646 Git \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u062f \u0648 \u0627\u0631\u0633\u0627\u0644 \u0639\u0627\u0645\u0644 SSH \u0641\u0639\u0627\u0644 \u0627\u0633\u062a:<\/p>\n<p>set :ssh_options, forward_agent: true<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Capistrano<\/p>\n<p>\u0627\u0632 SSH Key Forwarding \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f: \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0644\u06cc\u062f SSH \u062e\u0635\u0648\u0635\u06cc \u0634\u0645\u0627 \u062f\u0631 \u0633\u0631\u0648\u0631 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0627\u0646\u062a\u0634\u0627\u0631 \u0645\u062d\u062f\u0648\u062f: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f set :keep_releases, 5 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u067e\u0631 \u06a9\u0631\u062f\u0646 \u0633\u0631\u0648\u0631 \u0628\u0627 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc.<\/p>\n<p>\u062a\u0633\u062a \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f &#8211;dry-run \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0627\u06cc\u0645\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f \u0628\u062f\u0648\u0646 \u0627\u06cc\u062c\u0627\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a.<\/p>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/p>\n<p>Capistrano \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0642\u0648\u06cc \u0648 \u0647\u0645\u0647 \u06a9\u0627\u0631\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0622\u0646\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u0635\u0631\u0641\u0647 \u062c\u0648\u06cc\u06cc \u06a9\u0646\u06cc\u062f\u060c \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u0646\u0633\u0627\u0646\u06cc \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u062f\u060c \u0648 \u0628\u0647 \u062c\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u060c \u0628\u0631 \u0631\u0648\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0633\u0627\u062e\u062a\u0645\u0627\u0646 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0646\u0627\u0633\u0628 \u0648 \u0648\u0638\u0627\u06cc\u0641 \u0633\u0641\u0627\u0631\u0634\u06cc\u060c Capistrano \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u062f\u0631 \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0631\u06cc DevOps \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u062f \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0634\u0645\u0627 \u0631\u0627 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Capistrano \u0631\u0627 \u0627\u0632 \u0627\u0645\u0631\u0648\u0632 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f \u0648 \u0631\u0648\u0646\u062f \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0633\u0637\u062d \u0628\u0639\u062f\u06cc \u0628\u0628\u0631\u06cc\u062f. \ud83d\ude80<\/p>\n<p>\u0627\u0639\u0632\u0627\u0645 \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<div data-article-id=\"2102049\" id=\"article-body\">\n<p>\u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0641\u0631\u0622\u06cc\u0646\u062f\u06cc \u0632\u0645\u0627\u0646 \u0628\u0631 \u0648 \u0645\u0633\u062a\u0639\u062f \u062e\u0637\u0627 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 <strong>\u06a9\u0627\u067e\u06cc\u0633\u062a\u0631\u0627\u0646\u0648<\/strong> \u0648\u0627\u0631\u062f \u0639\u0645\u0644 \u0645\u06cc \u0634\u0648\u062f &#8211; \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0631\u0648\u0628\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0648 \u0633\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639\u060c Capistrano \u0686\u06cc\u0633\u062a\u060c \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u0622\u0645\u0648\u0632\u0634 \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0628\u0627 \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Ruby on Rails \u062e\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%DA%A9%D8%A7%D9%BE%DB%8C%D8%B3%D8%AA%D8%B1%D8%A7%D9%86%D9%88_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >\u06a9\u0627\u067e\u06cc\u0633\u062a\u0631\u0627\u0646\u0648 \u0686\u06cc\u0633\u062a\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D9%88%DB%8C%DA%98%DA%AF%DB%8C_%D9%87%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C%D8%AF%DB%8C_Capistrano\" >\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc Capistrano:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_Capistrano\" >\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Capistrano<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\" >\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_Capistrano\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc Capistrano<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D9%81%D8%A7%DB%8C%D9%84_%D9%87%D8%A7%DB%8C_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_Capistrano_%D8%AA%D9%88%D8%B6%DB%8C%D8%AD_%D8%AF%D8%A7%D8%AF%D9%87_%D8%B4%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA\" >\u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Capistrano \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#1_Capfile\" >1. Capfile<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#2_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%D8%AC%D9%87%D8%A7%D9%86%DB%8C_configdeployrb\" >2. \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062c\u0647\u0627\u0646\u06cc (config\/deploy.rb)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#3_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%D9%85%D8%AD%DB%8C%D8%B7_configdeployproductionrb\" >3. \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u062d\u06cc\u0637 (config\/deploy\/production.rb)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%DA%AF%D8%B1%D8%AF%D8%B4_%DA%A9%D8%A7%D8%B1_%D8%A7%D8%B3%D8%AA%D9%82%D8%B1%D8%A7%D8%B1_%D8%AA%D9%88%D8%B6%DB%8C%D8%AD_%D8%AF%D8%A7%D8%AF%D9%87_%D8%B4%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA\" >\u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA_%D8%A8%D9%87_%D8%B9%D9%82%D8%A8_%D8%A7%D8%B3%D8%AA%D9%82%D8%B1%D8%A7%D8%B1\" >\u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0639\u0642\u0628 \u0627\u0633\u062a\u0642\u0631\u0627\u0631<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D9%88%D8%B8%D8%A7%DB%8C%D9%81_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_%D8%AF%D8%B1_Capistrano\" >\u0648\u0638\u0627\u06cc\u0641 \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 Capistrano<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D9%85%D8%AB%D8%A7%D9%84_1_%D9%BE%D8%A7%DA%A9_%DA%A9%D8%B1%D8%AF%D9%86_%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4_%D9%87%D8%A7%DB%8C_Sidekiq\" >\u0645\u062b\u0627\u0644 1: \u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u06af\u0632\u0627\u0631\u0634 \u0647\u0627\u06cc Sidekiq<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D9%85%D8%AB%D8%A7%D9%84_2_%D8%A8%D9%87_%D8%B1%D9%88%D8%B2_%D8%B1%D8%B3%D8%A7%D9%86%DB%8C_%D9%85%D8%AC%D9%88%D8%B2%D9%87%D8%A7%DB%8C_%D9%81%D8%A7%DB%8C%D9%84\" >\u0645\u062b\u0627\u0644 2: \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D9%85%D8%AB%D8%A7%D9%84_3_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%85%D8%AC%D8%AF%D8%AF_Nginx\" >\u0645\u062b\u0627\u0644 3: \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f Nginx<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D8%B9%DB%8C%D8%A8_%DB%8C%D8%A7%D8%A8%DB%8C_%D9%85%D8%B3%D8%A7%D8%A6%D9%84_%D8%B1%D8%A7%DB%8C%D8%AC\" >\u0639\u06cc\u0628 \u06cc\u0627\u0628\u06cc \u0645\u0633\u0627\u0626\u0644 \u0631\u0627\u06cc\u062c<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#1_SSH_Authentication_Errors\" >1. SSH Authentication Errors<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#2_%D8%AE%D8%B7%D8%A7%D9%87%D8%A7%DB%8C_%D9%85%D8%AC%D9%88%D8%B2\" >2. \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u062c\u0648\u0632<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#3_%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A8%D9%87_%D9%85%D8%AE%D8%B2%D9%86_%DA%AF%DB%8C%D8%AA\" >3. \u0645\u0634\u06a9\u0644\u0627\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u062e\u0632\u0646 \u06af\u06cc\u062a<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D9%88%D8%B4_%D9%87%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Capistrano\" >\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Capistrano<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/nabfollower.com\/blog\/capistrano-the-ultimate-guide-to-automated-deployments-for-rails-applications-1ejh\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%A9%D8%A7%D9%BE%DB%8C%D8%B3%D8%AA%D8%B1%D8%A7%D9%86%D9%88_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  <strong>\u06a9\u0627\u067e\u06cc\u0633\u062a\u0631\u0627\u0646\u0648 \u0686\u06cc\u0633\u062a\u061f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Capistrano \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0631\u0627\u0647 \u062f\u0648\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0627\u0633\u062a. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u06a9\u0627\u0631\u0647\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0648\u0627\u06a9\u0634\u06cc \u06a9\u062f\u060c \u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u060c \u0645\u0647\u0627\u062c\u0631\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0633\u0631\u0648\u0631 \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0627 \u0633\u0631\u06cc\u0639\u060c \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0648 \u0633\u0627\u0632\u06af\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%88%DB%8C%DA%98%DA%AF%DB%8C_%D9%87%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C%D8%AF%DB%8C_Capistrano\"><\/span>\n<p>  <strong>\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc Capistrano:<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<strong>\u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631:<\/strong> \u062e\u0637\u0627\u06cc \u0627\u0646\u0633\u0627\u0646\u06cc \u0631\u0627 \u0628\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0645\u06a9\u0631\u0631 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<li>\n<strong>\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0686\u0646\u062f \u0633\u0631\u0648\u0631:<\/strong> \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0648 \u0646\u0642\u0634 \u0645\u0633\u062a\u0642\u0631 \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c <code>web<\/code>\u060c <code>app<\/code>\u060c <code>db<\/code>).<\/li>\n<li>\n<strong>\u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0639\u0642\u0628:<\/strong> \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u060c \u0628\u0647 \u0633\u0631\u0639\u062a \u0628\u0647 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0628\u0627\u0632\u06af\u0631\u062f\u06cc\u062f.<\/li>\n<li>\n<strong>\u0648\u0638\u0627\u06cc\u0641 \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645:<\/strong> \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0648\u0638\u0627\u06cc\u0641 \u0633\u0641\u0627\u0631\u0634\u06cc \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0627\u062f\u063a\u0627\u0645 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628:<\/strong> \u0627\u0632 \u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f <code>capistrano-rails<\/code>\u060c <code>capistrano-rvm<\/code>\u060c \u0648 <code>capistrano-bundler<\/code> \u0628\u0631\u0627\u06cc \u0648\u0638\u0627\u06cc\u0641 \u062e\u0627\u0635 Rails \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u0633\u062e\u0647 Ruby.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_Capistrano\"><\/span>\n<p>  <strong>\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Capistrano<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  <strong>\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0628\u062a\u062f\u0627 Capistrano \u0648 \u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 Rails \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f <code>Gemfile<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"c1\"># Gemfile<\/span>\n<span class=\"n\">gem<\/span> <span class=\"s1\">'capistrano'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'~&gt; 3.17'<\/span>\n<span class=\"n\">gem<\/span> <span class=\"s1\">'capistrano-rails'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'~&gt; 1.6'<\/span>\n<span class=\"n\">gem<\/span> <span class=\"s1\">'capistrano-rvm'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'~&gt; 0.2.0'<\/span>\n<span class=\"n\">gem<\/span> <span class=\"s1\">'capistrano-bundler'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'~&gt; 2.0'<\/span>\n<span class=\"n\">gem<\/span> <span class=\"s1\">'capistrano-passenger'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'~&gt; 0.2'<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>bundle install<\/code> \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u0633\u0646\u06af\u0647\u0627\u06cc \u0642\u06cc\u0645\u062a\u06cc<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_Capistrano\"><\/span>\n<p>  <strong>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc Capistrano<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 Capistrano \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>bundle <span class=\"nb\">exec <\/span>cap <span class=\"nb\">install<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<ul>\n<li>\n<strong><code>Capfile<\/code><\/strong>: \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a.<\/li>\n<li>\n<strong><code>config\/deploy.rb<\/code><\/strong>: \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062c\u0647\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631.<\/li>\n<li>\n<strong><code>config\/deploy\/production.rb<\/code><\/strong>: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0627\u0635 \u0645\u062d\u06cc\u0637 (\u0645\u062b\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f).<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%81%D8%A7%DB%8C%D9%84_%D9%87%D8%A7%DB%8C_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_Capistrano_%D8%AA%D9%88%D8%B6%DB%8C%D8%AD_%D8%AF%D8%A7%D8%AF%D9%87_%D8%B4%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA\"><\/span>\n<p>  <strong>\u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Capistrano \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_Capfile\"><\/span>\n<p>  <strong>1. Capfile<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 <code>Capfile<\/code> \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0648 \u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"nb\">require<\/span> <span class=\"s1\">'capistrano\/setup'<\/span>\n<span class=\"nb\">require<\/span> <span class=\"s1\">'capistrano\/deploy'<\/span>\n<span class=\"nb\">require<\/span> <span class=\"s1\">'capistrano\/rvm'<\/span>\n<span class=\"nb\">require<\/span> <span class=\"s1\">'capistrano\/bundler'<\/span>\n<span class=\"nb\">require<\/span> <span class=\"s1\">'capistrano\/rails'<\/span>\n<span class=\"nb\">require<\/span> <span class=\"s1\">'capistrano\/passenger'<\/span>\n\n<span class=\"n\">install_plugin<\/span> <span class=\"no\">Capistrano<\/span><span class=\"o\">::<\/span><span class=\"no\">RVM<\/span>\n<span class=\"n\">install_plugin<\/span> <span class=\"no\">Capistrano<\/span><span class=\"o\">::<\/span><span class=\"no\">Bundler<\/span>\n<span class=\"n\">install_plugin<\/span> <span class=\"no\">Capistrano<\/span><span class=\"o\">::<\/span><span class=\"no\">Rails<\/span><span class=\"o\">::<\/span><span class=\"no\">Migrations<\/span>\n<span class=\"n\">install_plugin<\/span> <span class=\"no\">Capistrano<\/span><span class=\"o\">::<\/span><span class=\"no\">Passenger<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"2_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%D8%AC%D9%87%D8%A7%D9%86%DB%8C_configdeployrb\"><\/span>\n<p>  <strong>2. \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062c\u0647\u0627\u0646\u06cc (<code>config\/deploy.rb<\/code>)<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 <code>deploy.rb<\/code> \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"n\">set<\/span> <span class=\"ss\">:application<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"my_app\"<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:repo_url<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"git@github.com:username\/my_app.git\"<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:deploy_to<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"\/var\/www\/<\/span><span class=\"si\">#{<\/span><span class=\"n\">fetch<\/span><span class=\"p\">(<\/span><span class=\"ss\">:application<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span><span class=\"s2\">\"<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:branch<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"main\"<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:format<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:pretty<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:log_level<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:info<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:keep_releases<\/span><span class=\"p\">,<\/span> <span class=\"mi\">5<\/span>\n\n<span class=\"c1\"># RVM Configuration<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:rvm_type<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:user<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:rvm_ruby_version<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'2.7.8'<\/span>\n\n<span class=\"c1\"># Linked Files &amp; Directories<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:linked_files<\/span><span class=\"p\">,<\/span> <span class=\"sx\">%w{config\/database.yml .env}<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:linked_dirs<\/span><span class=\"p\">,<\/span> <span class=\"sx\">%w{log tmp\/pids tmp\/cache tmp\/sockets public\/system}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"3_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%D9%85%D8%AD%DB%8C%D8%B7_configdeployproductionrb\"><\/span>\n<p>  <strong>3. \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u062d\u06cc\u0637 (<code>config\/deploy\/production.rb<\/code>)<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062c\u0632\u0626\u06cc\u0627\u062a \u0633\u0631\u0648\u0631 \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u062d\u06cc\u0637\u06cc \u062e\u0627\u0635 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"n\">server<\/span> <span class=\"s1\">'123.45.67.89'<\/span><span class=\"p\">,<\/span> <span class=\"ss\">user: <\/span><span class=\"s1\">'deploy'<\/span><span class=\"p\">,<\/span> <span class=\"ss\">roles: <\/span><span class=\"sx\">%w{app web db}<\/span><span class=\"p\">,<\/span> <span class=\"ss\">primary: <\/span><span class=\"kp\">true<\/span>\n\n<span class=\"n\">set<\/span> <span class=\"ss\">:rails_env<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'production'<\/span>\n<span class=\"n\">set<\/span> <span class=\"ss\">:ssh_options<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n  <span class=\"ss\">keys: <\/span><span class=\"sx\">%w(~\/.ssh\/id_rsa)<\/span><span class=\"p\">,<\/span>\n  <span class=\"ss\">forward_agent: <\/span><span class=\"kp\">true<\/span><span class=\"p\">,<\/span>\n  <span class=\"ss\">auth_methods: <\/span><span class=\"sx\">%w(publickey)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%AF%D8%B1%D8%AF%D8%B4_%DA%A9%D8%A7%D8%B1_%D8%A7%D8%B3%D8%AA%D9%82%D8%B1%D8%A7%D8%B1_%D8%AA%D9%88%D8%B6%DB%8C%D8%AD_%D8%AF%D8%A7%D8%AF%D9%87_%D8%B4%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA\"><\/span>\n<p>  <strong>\u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Capistrano \u062f\u0631 \u0637\u0648\u0644 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u06cc\u06a9 \u0633\u0631\u06cc \u0645\u0631\u0627\u062d\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<ol>\n<li>\n<strong>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc:<\/strong> \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0627 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f (\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f <code>\/releases<\/code> \u0648 <code>\/shared<\/code>).<\/li>\n<li>\n<strong>\u0648\u0627\u06a9\u0634\u06cc \u06a9\u062f:<\/strong> \u0622\u062e\u0631\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u0627\u0632 \u0645\u062e\u0632\u0646 Git \u0645\u06cc \u06a9\u0634\u062f.<\/li>\n<li>\n<strong>\u0646\u0635\u0628 Dependencies:<\/strong> \u0627\u0632 Bundler \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Ruby gems (<code>bundle install<\/code>).<\/li>\n<li>\n<strong>\u0627\u062c\u0631\u0627\u06cc \u0645\u0647\u0627\u062c\u0631\u062a:<\/strong> \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f <code>rake db:migrate<\/code> \u0628\u0631\u0627\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0637\u0631\u062d \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647<\/li>\n<li>\n<strong>\u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627\u06cc \u067e\u06cc\u0634 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644:<\/strong> \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f <code>rake assets:precompile<\/code> \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0631\u06cc\u0644.<\/li>\n<li>\n<strong>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0633\u0631\u0648\u0631:<\/strong> \u0633\u0631\u0648\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 (\u0645\u062b\u0644\u0627\u064b \u0645\u0633\u0627\u0641\u0631 \u06cc\u0627 \u067e\u0648\u0645\u0627) \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u067e\u0627\u06a9\u0633\u0627\u0632\u06cc:<\/strong> \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0632\u0627\u062f \u06a9\u0631\u062f\u0646 \u0641\u0636\u0627\u06cc \u062f\u06cc\u0633\u06a9 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ol>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>bundle <span class=\"nb\">exec <\/span>cap production deploy\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA_%D8%A8%D9%87_%D8%B9%D9%82%D8%A8_%D8%A7%D8%B3%D8%AA%D9%82%D8%B1%D8%A7%D8%B1\"><\/span>\n<p>  <strong>\u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0639\u0642\u0628 \u0627\u0633\u062a\u0642\u0631\u0627\u0631<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06af\u0631 \u0645\u0634\u06a9\u0644\u06cc \u067e\u06cc\u0634 \u0622\u0645\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u0628\u0647 \u0646\u0633\u062e\u0647 \u0642\u0628\u0644\u06cc \u0628\u0631\u06af\u0631\u062f\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>bundle <span class=\"nb\">exec <\/span>cap production deploy:rollback\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%88%D8%B8%D8%A7%DB%8C%D9%81_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_%D8%AF%D8%B1_Capistrano\"><\/span>\n<p>  <strong>\u0648\u0638\u0627\u06cc\u0641 \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 Capistrano<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Capistrano \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0648\u0638\u0627\u06cc\u0641 \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u0646\u062f \u0645\u062b\u0627\u0644 \u0645\u0641\u06cc\u062f \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84_1_%D9%BE%D8%A7%DA%A9_%DA%A9%D8%B1%D8%AF%D9%86_%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4_%D9%87%D8%A7%DB%8C_Sidekiq\"><\/span>\n<p>  <strong>\u0645\u062b\u0627\u0644 1: \u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u06af\u0632\u0627\u0631\u0634 \u0647\u0627\u06cc Sidekiq<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"n\">namespace<\/span> <span class=\"ss\">:logs<\/span> <span class=\"k\">do<\/span>\n  <span class=\"n\">desc<\/span> <span class=\"s2\">\"Clear Sidekiq logs\"<\/span>\n  <span class=\"n\">task<\/span> <span class=\"ss\">:clear_sidekiq_log<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">on<\/span> <span class=\"n\">roles<\/span><span class=\"p\">(<\/span><span class=\"ss\">:app<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n      <span class=\"n\">execute<\/span> <span class=\"s2\">\"echo '' &gt; <\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/log\/sidekiq.log\"<\/span>\n      <span class=\"nb\">puts<\/span> <span class=\"s2\">\"Sidekiq logs cleared!\"<\/span>\n    <span class=\"k\">end<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"n\">after<\/span> <span class=\"s1\">'deploy:finished'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'logs:clear_sidekiq_log'<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84_2_%D8%A8%D9%87_%D8%B1%D9%88%D8%B2_%D8%B1%D8%B3%D8%A7%D9%86%DB%8C_%D9%85%D8%AC%D9%88%D8%B2%D9%87%D8%A7%DB%8C_%D9%81%D8%A7%DB%8C%D9%84\"><\/span>\n<p>  <strong>\u0645\u062b\u0627\u0644 2: \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"n\">namespace<\/span> <span class=\"ss\">:deploy<\/span> <span class=\"k\">do<\/span>\n  <span class=\"n\">desc<\/span> <span class=\"s2\">\"Update permissions\"<\/span>\n  <span class=\"n\">task<\/span> <span class=\"ss\">:update_permissions<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">on<\/span> <span class=\"n\">roles<\/span><span class=\"p\">(<\/span><span class=\"ss\">:app<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n      <span class=\"n\">execute<\/span> <span class=\"s2\">\"chmod -R 755 <\/span><span class=\"si\">#{<\/span><span class=\"n\">release_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/\"<\/span>\n      <span class=\"nb\">puts<\/span> <span class=\"s2\">\"Permissions updated for <\/span><span class=\"si\">#{<\/span><span class=\"n\">release_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">\"<\/span>\n    <span class=\"k\">end<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"n\">after<\/span> <span class=\"s1\">'deploy:finishing'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'deploy:update_permissions'<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84_3_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%85%D8%AC%D8%AF%D8%AF_Nginx\"><\/span>\n<p>  <strong>\u0645\u062b\u0627\u0644 3: \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f Nginx<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"n\">namespace<\/span> <span class=\"ss\">:nginx<\/span> <span class=\"k\">do<\/span>\n  <span class=\"n\">desc<\/span> <span class=\"s2\">\"Restart Nginx\"<\/span>\n  <span class=\"n\">task<\/span> <span class=\"ss\">:restart<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">on<\/span> <span class=\"n\">roles<\/span><span class=\"p\">(<\/span><span class=\"ss\">:web<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n      <span class=\"n\">execute<\/span> <span class=\"s2\">\"sudo systemctl restart nginx\"<\/span>\n      <span class=\"nb\">puts<\/span> <span class=\"s2\">\"Nginx restarted successfully!\"<\/span>\n    <span class=\"k\">end<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"n\">after<\/span> <span class=\"s1\">'deploy:finishing'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'nginx:restart'<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B9%DB%8C%D8%A8_%DB%8C%D8%A7%D8%A8%DB%8C_%D9%85%D8%B3%D8%A7%D8%A6%D9%84_%D8%B1%D8%A7%DB%8C%D8%AC\"><\/span>\n<p>  <strong>\u0639\u06cc\u0628 \u06cc\u0627\u0628\u06cc \u0645\u0633\u0627\u0626\u0644 \u0631\u0627\u06cc\u062c<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_SSH_Authentication_Errors\"><\/span>\n<p>  <strong>1. SSH Authentication Errors<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u06a9\u0644\u06cc\u062f SSH \u0634\u0645\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0648 \u0628\u0647 \u0639\u0627\u0645\u0644 SSH \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>ssh-add ~\/.ssh\/id_rsa\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"2_%D8%AE%D8%B7%D8%A7%D9%87%D8%A7%DB%8C_%D9%85%D8%AC%D9%88%D8%B2\"><\/span>\n<p>  <strong>2. \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u062c\u0648\u0632<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06af\u0631 \u0628\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u062c\u0648\u0632 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u06cc\u062f\u060c \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">sudo chown<\/span> <span class=\"nt\">-R<\/span> deploy:deploy \/var\/www\/my_app\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"3_%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A8%D9%87_%D9%85%D8%AE%D8%B2%D9%86_%DA%AF%DB%8C%D8%AA\"><\/span>\n<p>  <strong>3. \u0645\u0634\u06a9\u0644\u0627\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u062e\u0632\u0646 \u06af\u06cc\u062a<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0644\u06cc\u062f SSH \u0634\u0645\u0627 \u0628\u0647 \u0645\u062e\u0632\u0646 Git \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u062f \u0648 \u0627\u0631\u0633\u0627\u0644 \u0639\u0627\u0645\u0644 SSH \u0641\u0639\u0627\u0644 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"n\">set<\/span> <span class=\"ss\">:ssh_options<\/span><span class=\"p\">,<\/span> <span class=\"ss\">forward_agent: <\/span><span class=\"kp\">true<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D9%88%D8%B4_%D9%87%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Capistrano\"><\/span>\n<p>  <strong>\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Capistrano<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<strong>\u0627\u0632 SSH Key Forwarding \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/strong> \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0644\u06cc\u062f SSH \u062e\u0635\u0648\u0635\u06cc \u0634\u0645\u0627 \u062f\u0631 \u0633\u0631\u0648\u0631 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0627\u0646\u062a\u0634\u0627\u0631 \u0645\u062d\u062f\u0648\u062f:<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>set :keep_releases, 5<\/code> \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u067e\u0631 \u06a9\u0631\u062f\u0646 \u0633\u0631\u0648\u0631 \u0628\u0627 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc.<\/li>\n<li>\n<strong>\u062a\u0633\u062a \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc:<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>--dry-run<\/code> \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0627\u06cc\u0645\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f \u0628\u062f\u0648\u0646 \u0627\u06cc\u062c\u0627\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  <strong>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Capistrano \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0642\u0648\u06cc \u0648 \u0647\u0645\u0647 \u06a9\u0627\u0631\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0622\u0646\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u0635\u0631\u0641\u0647 \u062c\u0648\u06cc\u06cc \u06a9\u0646\u06cc\u062f\u060c \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u0646\u0633\u0627\u0646\u06cc \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u062f\u060c \u0648 \u0628\u0647 \u062c\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u060c \u0628\u0631 \u0631\u0648\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0633\u0627\u062e\u062a\u0645\u0627\u0646 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0646\u0627\u0633\u0628 \u0648 \u0648\u0638\u0627\u06cc\u0641 \u0633\u0641\u0627\u0631\u0634\u06cc\u060c Capistrano \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u062f\u0631 \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0631\u06cc DevOps \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u062f \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0634\u0645\u0627 \u0631\u0627 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Capistrano \u0631\u0627 \u0627\u0632 \u0627\u0645\u0631\u0648\u0632 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f \u0648 \u0631\u0648\u0646\u062f \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0633\u0637\u062d \u0628\u0639\u062f\u06cc \u0628\u0628\u0631\u06cc\u062f. \ud83d\ude80<\/p>\n<p>\u0627\u0639\u0632\u0627\u0645 \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0641\u0631\u0622\u06cc\u0646\u062f\u06cc \u0632\u0645\u0627\u0646 \u0628\u0631 \u0648 \u0645\u0633\u062a\u0639\u062f \u062e\u0637\u0627 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u067e\u06cc\u0633\u062a\u0631\u0627\u0646\u0648 \u0648\u0627\u0631\u062f \u0639\u0645\u0644 \u0645\u06cc \u0634\u0648\u062f &#8211; \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0631\u0648\u0628\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0648 \u0633\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":83647,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-83646","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/83646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=83646"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/83646\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/83647"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=83646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=83646"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=83646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}