برنامه نویسی

Capistrano: راهنمای نهایی برای استقرار خودکار برای برنامه های ریل

Summarize this content to 400 words in Persian Lang
استقرار برنامه های کاربردی وب به صورت دستی می تواند فرآیندی زمان بر و مستعد خطا باشد. اینجاست که کاپیسترانو وارد عمل می شود – یک ابزار قدرتمند مبتنی بر روبی که برای خودکارسازی و ساده سازی استقرار برنامه های کاربردی وب طراحی شده است. در این راهنمای جامع، Capistrano چیست، چگونه کار می‌کند، ویژگی‌های کلیدی آن را بررسی می‌کنیم و یک آموزش گام به گام با مثال‌های عملی ارائه می‌کنیم تا به شما کمک کند آن را برای برنامه Ruby on Rails خود تنظیم کنید.

کاپیسترانو چیست؟

Capistrano یک ابزار منبع باز برای خودکار کردن استقرار برنامه های کاربردی وب به سرورهای راه دور از طریق SSH است. این کار کارهای تکراری مانند واکشی کد، نصب وابستگی، مهاجرت پایگاه داده و راه اندازی مجدد سرور را ساده می کند و فرآیند استقرار را سریع، قابل اعتماد و سازگار می کند.

ویژگی های کلیدی Capistrano:

استقرار خودکار: خطای انسانی را با خودکار کردن وظایف استقرار مکرر کاهش می دهد.

پشتیبانی از چند سرور: به راحتی برنامه ها را در چندین سرور و نقش مستقر می کند (به عنوان مثال، web، app، db).

بازگشت به عقب: به شما امکان می دهد در صورت عدم موفقیت در استقرار، به سرعت به نسخه های قبلی بازگردید.

وظایف قابل تنظیم: انعطاف پذیری را برای تعریف وظایف سفارشی متناسب با نیازهای برنامه شما فراهم می کند.

ادغام با ابزارهای محبوب: از افزونه هایی مانند capistrano-rails، capistrano-rvm، و capistrano-bundler برای وظایف خاص Rails و مدیریت نسخه Ruby.

شروع کار با Capistrano

نصب و راه اندازی

ابتدا Capistrano و افزونه های لازم را به پروژه Rails خود اضافه کنید Gemfile:

# Gemfile
gem ‘capistrano’, ‘~> 3.17’
gem ‘capistrano-rails’, ‘~> 1.6’
gem ‘capistrano-rvm’, ‘~> 0.2.0’
gem ‘capistrano-bundler’, ‘~> 2.0’
gem ‘capistrano-passenger’, ‘~> 0.2’

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرا کنید bundle install برای نصب سنگهای قیمتی

راه اندازی Capistrano

برای مقداردهی اولیه Capistrano در پروژه خود، اجرا کنید:

bundle exec cap install

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این دستور فایل های زیر را تولید می کند:

Capfile: فایل پیکربندی اصلی که در آن افزونه ها مورد نیاز است.

config/deploy.rb: تنظیمات پیکربندی جهانی برای استقرار.

config/deploy/production.rb: پیکربندی خاص محیط (مثلاً برای تولید).

فایل های پیکربندی Capistrano توضیح داده شده است

1. Capfile

این Capfile جایی است که به کتابخانه ها و افزونه های لازم نیاز دارید:

require ‘capistrano/setup’
require ‘capistrano/deploy’
require ‘capistrano/rvm’
require ‘capistrano/bundler’
require ‘capistrano/rails’
require ‘capistrano/passenger’

install_plugin Capistrano::RVM
install_plugin Capistrano::Bundler
install_plugin Capistrano::Rails::Migrations
install_plugin Capistrano::Passenger

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. پیکربندی جهانی (config/deploy.rb)

این deploy.rb فایل پیکربندی اصلی برنامه شما را تعریف می کند:

set :application, “my_app”
set :repo_url, “git@github.com:username/my_app.git”
set :deploy_to, “/var/www/#{fetch(:application)}”
set :branch, “main”
set :format, :pretty
set :log_level, :info
set :keep_releases, 5

# RVM Configuration
set :rvm_type, :user
set :rvm_ruby_version, ‘2.7.8’

# Linked Files & Directories
set :linked_files, %w{config/database.yml .env}
set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets public/system}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. پیکربندی محیط (config/deploy/production.rb)

این فایل جزئیات سرور و تنظیمات محیطی خاص را مشخص می کند:

server ‘123.45.67.89’, user: ‘deploy’, roles: %w{app web db}, primary: true

set :rails_env, ‘production’
set :ssh_options, {
keys: %w(~/.ssh/id_rsa),
forward_agent: true,
auth_methods: %w(publickey)
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

گردش کار استقرار توضیح داده شده است

Capistrano در طول فرآیند استقرار یک سری مراحل خودکار را دنبال می کند:

راه اندازی: ساختار استقرار را روی سرور راه اندازی می کند (دایرکتوری هایی مانند /releases و /shared).

واکشی کد: آخرین کد را از مخزن Git می کشد.

نصب Dependencies: از Bundler برای نصب Ruby gems (bundle install).

اجرای مهاجرت: اجرا می کند rake db:migrate برای به روز رسانی طرح پایگاه داده

دارایی های پیش کامپایل: اجرا می شود rake assets:precompile برای برنامه های ریل.

راه اندازی مجدد سرور: سرور برنامه (مثلاً مسافر یا پوما) را مجدداً راه اندازی می کند.

پاکسازی: نسخه های قدیمی را برای آزاد کردن فضای دیسک حذف می کند.

برای استقرار برنامه خود، اجرا کنید:

bundle exec cap production deploy

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بازگشت به عقب استقرار

اگر مشکلی پیش آمد، می‌توانید به سرعت به نسخه قبلی برگردید:

bundle exec cap production deploy:rollback

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وظایف سفارشی در Capistrano

Capistrano به شما امکان می دهد وظایف سفارشی را متناسب با نیازهای استقرار خود تعریف کنید. در اینجا چند مثال مفید آورده شده است:

مثال 1: پاک کردن گزارش های Sidekiq

namespace :logs do
desc “Clear Sidekiq logs”
task :clear_sidekiq_log do
on roles(:app) do
execute “echo ” > #{shared_path}/log/sidekiq.log”
puts “Sidekiq logs cleared!”
end
end
end

after ‘deploy:finished’, ‘logs:clear_sidekiq_log’

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال 2: به روز رسانی مجوزهای فایل

namespace :deploy do
desc “Update permissions”
task :update_permissions do
on roles(:app) do
execute “chmod -R 755 #{release_path}/”
puts “Permissions updated for #{release_path}”
end
end
end

after ‘deploy:finishing’, ‘deploy:update_permissions’

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال 3: راه اندازی مجدد Nginx

namespace :nginx do
desc “Restart Nginx”
task :restart do
on roles(:web) do
execute “sudo systemctl restart nginx”
puts “Nginx restarted successfully!”
end
end
end

after ‘deploy:finishing’, ‘nginx:restart’

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

عیب یابی مسائل رایج

1. SSH Authentication Errors

مطمئن شوید که کلید SSH شما به درستی پیکربندی شده و به عامل SSH اضافه شده است:

ssh-add ~/.ssh/id_rsa

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. خطاهای مجوز

اگر با خطاهای مجوز مواجه شدید، مجوزهای دایرکتوری استقرار را تنظیم کنید:

sudo chown -R deploy:deploy /var/www/my_app

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. مشکلات دسترسی به مخزن گیت

بررسی کنید که کلید SSH شما به مخزن Git دسترسی دارد و ارسال عامل SSH فعال است:

set :ssh_options, forward_agent: true

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بهترین روش ها برای استفاده از Capistrano

از SSH Key Forwarding استفاده کنید: این کار از ذخیره کلید SSH خصوصی شما در سرور جلوگیری می کند.

تاریخچه انتشار محدود: استفاده کنید set :keep_releases, 5 برای جلوگیری از پر کردن سرور با نسخه های قدیمی.

تست استقرار به صورت محلی: استفاده کنید –dry-run برای تست ایمن دستورات استقرار خود بدون ایجاد تغییرات.

نتیجه گیری

Capistrano یک ابزار قوی و همه کاره است که می تواند سناریوهای استقرار پیچیده را به راحتی مدیریت کند. با استفاده از قابلیت های اتوماسیون آن، می توانید در زمان صرفه جویی کنید، خطاهای انسانی را کاهش دهید، و به جای مدیریت استقرار، بر روی ویژگی های ساختمان تمرکز کنید. با پیکربندی مناسب و وظایف سفارشی، Capistrano می تواند به طور یکپارچه در جریان کاری DevOps شما قرار بگیرد و استقرار شما را قابل اعتماد و کارآمد کند.

استفاده از Capistrano را از امروز شروع کنید و روند استقرار خود را به سطح بعدی ببرید. 🚀

اعزام مبارک!

استقرار برنامه های کاربردی وب به صورت دستی می تواند فرآیندی زمان بر و مستعد خطا باشد. اینجاست که کاپیسترانو وارد عمل می شود – یک ابزار قدرتمند مبتنی بر روبی که برای خودکارسازی و ساده سازی استقرار برنامه های کاربردی وب طراحی شده است. در این راهنمای جامع، Capistrano چیست، چگونه کار می‌کند، ویژگی‌های کلیدی آن را بررسی می‌کنیم و یک آموزش گام به گام با مثال‌های عملی ارائه می‌کنیم تا به شما کمک کند آن را برای برنامه Ruby on Rails خود تنظیم کنید.

کاپیسترانو چیست؟

Capistrano یک ابزار منبع باز برای خودکار کردن استقرار برنامه های کاربردی وب به سرورهای راه دور از طریق SSH است. این کار کارهای تکراری مانند واکشی کد، نصب وابستگی، مهاجرت پایگاه داده و راه اندازی مجدد سرور را ساده می کند و فرآیند استقرار را سریع، قابل اعتماد و سازگار می کند.

ویژگی های کلیدی Capistrano:

  • استقرار خودکار: خطای انسانی را با خودکار کردن وظایف استقرار مکرر کاهش می دهد.
  • پشتیبانی از چند سرور: به راحتی برنامه ها را در چندین سرور و نقش مستقر می کند (به عنوان مثال، web، app، db).
  • بازگشت به عقب: به شما امکان می دهد در صورت عدم موفقیت در استقرار، به سرعت به نسخه های قبلی بازگردید.
  • وظایف قابل تنظیم: انعطاف پذیری را برای تعریف وظایف سفارشی متناسب با نیازهای برنامه شما فراهم می کند.
  • ادغام با ابزارهای محبوب: از افزونه هایی مانند capistrano-rails، capistrano-rvm، و capistrano-bundler برای وظایف خاص Rails و مدیریت نسخه Ruby.

شروع کار با Capistrano

نصب و راه اندازی

ابتدا Capistrano و افزونه های لازم را به پروژه Rails خود اضافه کنید Gemfile:

# Gemfile
gem 'capistrano', '~> 3.17'
gem 'capistrano-rails', '~> 1.6'
gem 'capistrano-rvm', '~> 0.2.0'
gem 'capistrano-bundler', '~> 2.0'
gem 'capistrano-passenger', '~> 0.2'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرا کنید bundle install برای نصب سنگهای قیمتی

راه اندازی Capistrano

برای مقداردهی اولیه Capistrano در پروژه خود، اجرا کنید:

bundle exec cap install
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این دستور فایل های زیر را تولید می کند:

  • Capfile: فایل پیکربندی اصلی که در آن افزونه ها مورد نیاز است.
  • config/deploy.rb: تنظیمات پیکربندی جهانی برای استقرار.
  • config/deploy/production.rb: پیکربندی خاص محیط (مثلاً برای تولید).

فایل های پیکربندی Capistrano توضیح داده شده است

1. Capfile

این Capfile جایی است که به کتابخانه ها و افزونه های لازم نیاز دارید:

require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rvm'
require 'capistrano/bundler'
require 'capistrano/rails'
require 'capistrano/passenger'

install_plugin Capistrano::RVM
install_plugin Capistrano::Bundler
install_plugin Capistrano::Rails::Migrations
install_plugin Capistrano::Passenger
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. پیکربندی جهانی (config/deploy.rb)

این deploy.rb فایل پیکربندی اصلی برنامه شما را تعریف می کند:

set :application, "my_app"
set :repo_url, "git@github.com:username/my_app.git"
set :deploy_to, "/var/www/#{fetch(:application)}"
set :branch, "main"
set :format, :pretty
set :log_level, :info
set :keep_releases, 5

# RVM Configuration
set :rvm_type, :user
set :rvm_ruby_version, '2.7.8'

# Linked Files & Directories
set :linked_files, %w{config/database.yml .env}
set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets public/system}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. پیکربندی محیط (config/deploy/production.rb)

این فایل جزئیات سرور و تنظیمات محیطی خاص را مشخص می کند:

server '123.45.67.89', user: 'deploy', roles: %w{app web db}, primary: true

set :rails_env, 'production'
set :ssh_options, {
  keys: %w(~/.ssh/id_rsa),
  forward_agent: true,
  auth_methods: %w(publickey)
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

گردش کار استقرار توضیح داده شده است

Capistrano در طول فرآیند استقرار یک سری مراحل خودکار را دنبال می کند:

  1. راه اندازی: ساختار استقرار را روی سرور راه اندازی می کند (دایرکتوری هایی مانند /releases و /shared).
  2. واکشی کد: آخرین کد را از مخزن Git می کشد.
  3. نصب Dependencies: از Bundler برای نصب Ruby gems (bundle install).
  4. اجرای مهاجرت: اجرا می کند rake db:migrate برای به روز رسانی طرح پایگاه داده
  5. دارایی های پیش کامپایل: اجرا می شود rake assets:precompile برای برنامه های ریل.
  6. راه اندازی مجدد سرور: سرور برنامه (مثلاً مسافر یا پوما) را مجدداً راه اندازی می کند.
  7. پاکسازی: نسخه های قدیمی را برای آزاد کردن فضای دیسک حذف می کند.

برای استقرار برنامه خود، اجرا کنید:

bundle exec cap production deploy
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بازگشت به عقب استقرار

اگر مشکلی پیش آمد، می‌توانید به سرعت به نسخه قبلی برگردید:

bundle exec cap production deploy:rollback
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وظایف سفارشی در Capistrano

Capistrano به شما امکان می دهد وظایف سفارشی را متناسب با نیازهای استقرار خود تعریف کنید. در اینجا چند مثال مفید آورده شده است:

مثال 1: پاک کردن گزارش های Sidekiq

namespace :logs do
  desc "Clear Sidekiq logs"
  task :clear_sidekiq_log do
    on roles(:app) do
      execute "echo '' > #{shared_path}/log/sidekiq.log"
      puts "Sidekiq logs cleared!"
    end
  end
end

after 'deploy:finished', 'logs:clear_sidekiq_log'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال 2: به روز رسانی مجوزهای فایل

namespace :deploy do
  desc "Update permissions"
  task :update_permissions do
    on roles(:app) do
      execute "chmod -R 755 #{release_path}/"
      puts "Permissions updated for #{release_path}"
    end
  end
end

after 'deploy:finishing', 'deploy:update_permissions'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال 3: راه اندازی مجدد Nginx

namespace :nginx do
  desc "Restart Nginx"
  task :restart do
    on roles(:web) do
      execute "sudo systemctl restart nginx"
      puts "Nginx restarted successfully!"
    end
  end
end

after 'deploy:finishing', 'nginx:restart'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

عیب یابی مسائل رایج

1. SSH Authentication Errors

مطمئن شوید که کلید SSH شما به درستی پیکربندی شده و به عامل SSH اضافه شده است:

ssh-add ~/.ssh/id_rsa
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. خطاهای مجوز

اگر با خطاهای مجوز مواجه شدید، مجوزهای دایرکتوری استقرار را تنظیم کنید:

sudo chown -R deploy:deploy /var/www/my_app
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. مشکلات دسترسی به مخزن گیت

بررسی کنید که کلید SSH شما به مخزن Git دسترسی دارد و ارسال عامل SSH فعال است:

set :ssh_options, forward_agent: true
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بهترین روش ها برای استفاده از Capistrano

  • از SSH Key Forwarding استفاده کنید: این کار از ذخیره کلید SSH خصوصی شما در سرور جلوگیری می کند.
  • تاریخچه انتشار محدود: استفاده کنید set :keep_releases, 5 برای جلوگیری از پر کردن سرور با نسخه های قدیمی.
  • تست استقرار به صورت محلی: استفاده کنید --dry-run برای تست ایمن دستورات استقرار خود بدون ایجاد تغییرات.

نتیجه گیری

Capistrano یک ابزار قوی و همه کاره است که می تواند سناریوهای استقرار پیچیده را به راحتی مدیریت کند. با استفاده از قابلیت های اتوماسیون آن، می توانید در زمان صرفه جویی کنید، خطاهای انسانی را کاهش دهید، و به جای مدیریت استقرار، بر روی ویژگی های ساختمان تمرکز کنید. با پیکربندی مناسب و وظایف سفارشی، Capistrano می تواند به طور یکپارچه در جریان کاری DevOps شما قرار بگیرد و استقرار شما را قابل اعتماد و کارآمد کند.

استفاده از Capistrano را از امروز شروع کنید و روند استقرار خود را به سطح بعدی ببرید. 🚀

اعزام مبارک!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا