Capistrano একটি স্বয়ংক্রিয় ডেপ্লয়মেন্ট টুল যা মূলত রুবি অন রেইলস অ্যাপ্লিকেশনগুলোকে সহজ এবং দ্রুত ডেপ্লয় করতে ব্যবহৃত হয়। Capistrano বিভিন্ন সার্ভারে অ্যাপ্লিকেশনকে ডেপ্লয় করতে পারে এবং এটি সঠিকভাবে পরিবেশ কনফিগার করা, কোড আপলোড করা এবং অন্যান্য কাজগুলো অটোমেট করতে সক্ষম।
Rails অ্যাপ্লিকেশন ডেপ্লয় করার জন্য Capistrano অত্যন্ত কার্যকর এবং এটি একটি সিস্টেমে একাধিক সার্ভারে কোড আপলোড, মাইগ্রেশন চালানো, লগিং ও অন্যান্য কাজের প্রক্রিয়াকে সঠিকভাবে পরিচালনা করে।
Capistrano দিয়ে Deployment-এর প্রক্রিয়া
১. Capistrano ইনস্টল করা
প্রথমে আপনাকে আপনার রুবি অন রেইলস প্রজেক্টে Capistrano ইনস্টল করতে হবে। এজন্য আপনার প্রজেক্টে Gemfile-এ Capistrano সংযুক্ত করুন।
gem 'capistrano', '~> 3.0'
এবার bundle install কমান্ড চালিয়ে ইনস্টলেশন সম্পন্ন করুন:
bundle install
২. Capistrano কনফিগারেশন ফাইল তৈরি করা
Capistrano ইনস্টল করার পর আপনাকে কিছু কনফিগারেশন ফাইল তৈরি করতে হবে। প্রথমে cap install কমান্ড দিয়ে Capistrano কনফিগারেশন ফাইলগুলো ইনিশিয়ালাইজ করুন:
bundle exec cap install
এই কমান্ডটি নিম্নলিখিত ফাইলগুলো তৈরি করবে:
Capfile: Capistrano টাস্কগুলোর মূল কনফিগারেশন ফাইল।config/deploy.rb: মূল ডেপ্লয়মেন্ট কনফিগারেশন।config/deploy/production.rb: প্রোডাকশন পরিবেশের জন্য কনফিগারেশন।config/deploy/staging.rb: স্টেজিং পরিবেশের জন্য কনফিগারেশন।
৩. Capistrano কনফিগারেশন সম্পাদনা করা
আপনার config/deploy.rb ফাইলে কিছু মৌলিক কনফিগারেশন যোগ করুন:
# config/deploy.rb
lock '3.16.0' # Capistrano version
set :application, 'your_app_name'
set :repo_url, 'git@github.com:yourusername/your-repo.git' # আপনার রিপোজিটরি URL
set :deploy_to, '/var/www/your_app_name' # আপনার সার্ভারে অ্যাপ্লিকেশন কোথায় ডেপ্লয় হবে
set :branch, 'main' # আপনি যেই ব্রাঞ্চে ডেপ্লয় করতে চান
# রিলিজের সংখ্যা সীমিত করা
set :keep_releases, 5
# সার্ভারের রিলিজ ডিরেক্টরি সেট করা
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system')
# পরিবেশ পরিবর্তন সেট করা (যেমন, production)
set :rails_env, 'production'
এখন আপনাকে আপনার পরিবেশ (যেমন production.rb বা staging.rb) কনফিগার করতে হবে। উদাহরণস্বরূপ, config/deploy/production.rb ফাইলে আপনি এইভাবে কনফিগার করতে পারেন:
# config/deploy/production.rb
server 'your-server-ip', user: 'deploy', roles: %w{app db web}
set :stage, :production
set :branch, 'main'
set :deploy_to, '/var/www/your_app_name'
# SSH কনফিগারেশন
set :ssh_options, {
forward_agent: true,
auth_methods: ['publickey'],
user: 'deploy'
}
৪. ডিপ্লয়মেন্ট স্ক্রিপ্ট চালানো
আপনার সব কনফিগারেশন সম্পূর্ণ হলে, এবার Capistrano দিয়ে অ্যাপ্লিকেশন ডেপ্লয় করতে পারেন।
প্রথম ডেপ্লয়মেন্টের জন্য কমান্ডটি হবে:
bundle exec cap production deploy
এটি আপনার অ্যাপ্লিকেশনকে আপনার প্রোডাকশন সার্ভারে ডেপ্লয় করবে। ডেপ্লয়মেন্ট প্রক্রিয়ায় Capistrano নিচের কাজগুলো করবে:
- Git Pull: রিমোট সার্ভারে সর্বশেষ কোড গিট রিপোজিটরি থেকে নিয়ে আসবে।
- Asset Precompilation: এসেট (CSS, JavaScript) ফাইল প্রিপ্রসেস এবং কম্পাইল করবে।
- Database Migrations: প্রয়োজনীয় মাইগ্রেশন চলবে (যদি থাকে)।
- Restarting the Application: অ্যাপ্লিকেশন পুনরায় শুরু হবে (পাসঅফলাইন বা ডাউনটাইম ছাড়া)।
৫. Rollback (পূর্ববর্তী ভার্সনে ফিরে যাওয়া)
যদি কোনো কারণে নতুন ভার্সন প্রয়োগে সমস্যা হয় এবং পূর্ববর্তী ভার্সনে ফিরে যেতে চান, তবে আপনি সহজেই Capistrano এর মাধ্যমে রোলব্যাক করতে পারেন:
bundle exec cap production deploy:rollback
এটি আগের রিলিজে ফিরে যাবে এবং অ্যাপ্লিকেশন পুনরায় চালু করবে।
৬. ডেপ্লয়মেন্ট টাস্ক কাস্টমাইজেশন
Capistrano এর মাধ্যমে আপনি সহজেই কিছু কাস্টম টাস্ক লিখে নিতে পারেন। যেমন, আপনি ডেপ্লয়মেন্টের পর কিছু নির্দিষ্ট কাজ করতে চাইলে সেগুলো deploy.rb ফাইলে নির্দিষ্ট করে দিতে পারেন।
# উদাহরণস্বরূপ, ডেপ্লয়মেন্টের পর ইমেইল পাঠানো
after 'deploy:published', 'deploy:send_notification'
namespace :deploy do
task :send_notification do
on roles(:app) do
execute "echo 'Deployment Complete!' | mail -s 'Deployment Status' your-email@example.com"
end
end
end
৭. Capistrano Extensions
Capistrano এর অনেক এক্সটেনশন রয়েছে যা ডেপ্লয়মেন্টের কাজগুলো আরো সহজ এবং কার্যকরী করে তোলে। কিছু জনপ্রিয় এক্সটেনশন হল:
- Capistrano::Rails: Rails অ্যাপ্লিকেশনের জন্য ডেপ্লয়মেন্ট কনফিগারেশন সহজ করে।
- Capistrano::Bundler: Bundler ব্যবহার করে ডিপেনডেন্সি ইনস্টলেশন।
- Capistrano::Rbenv: Rbenv ব্যবহার করে Ruby ভার্সন নিয়ন্ত্রণ।
এগুলো ইনস্টল ও কনফিগার করার জন্য আপনাকে Gemfile-এ সংশ্লিষ্ট জেমগুলো যোগ করতে হবে এবং Capfile এ সেগুলি লোড করতে হবে।
সারমর্ম
Capistrano হল একটি শক্তিশালী এবং স্বয়ংক্রিয় ডেপ্লয়মেন্ট টুল যা রুবি অন রেইলস অ্যাপ্লিকেশনগুলোকে দ্রুত এবং কার্যকরভাবে প্রোডাকশন পরিবেশে ডেপ্লয় করতে সহায়তা করে। এটি গিট রেপোজিটরি থেকে কোড আপলোড, অ্যাসেট কম্পাইল, ডেটাবেস মাইগ্রেশন এবং অ্যাপ্লিকেশন পুনরায় শুরু করার মতো গুরুত্বপূর্ণ কাজগুলো এক ক্লিকে করে দেয়। Capistrano ব্যবহার করে আপনি সহজে ডেপ্লয়মেন্ট প্রক্রিয়া অটোমেট করতে পারেন এবং প্রয়োজনে রোলব্যাকও করতে পারবেন।
Read more