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 در طول فرآیند استقرار یک سری مراحل خودکار را دنبال می کند:
-
راه اندازی: ساختار استقرار را روی سرور راه اندازی می کند (دایرکتوری هایی مانند
/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 را از امروز شروع کنید و روند استقرار خود را به سطح بعدی ببرید. 🚀
اعزام مبارک!