কম্পিউটার টিউটোরিয়াল

Capistrano দিয়ে Ruby on Rails ডিপ্লয়মেন্ট সুव्यবস্থিত করুন: ধাপে ধাপে গাইড

এই আর্টিকেলে, আমরা একটি Ruby on Rails অ্যাপ্লিকেশনে Capistrano কনফিগার করব। তারপর অ্যাপটি একটি ক্লাউড ইনস্ট্যান্সে ডিপ্লয় করব যা Ubuntu ऑপারেটিং সিস্টেম চালাচ্ছে, আপনার হোস্টিং প্রোভাইডারের থেকে স্বাধীন। আপনি যেকোনো ক্লাউড সার্ভিস, বা এমনকি একটি অন-প্রিমাইসেস সার্ভার ব্যবহার করতে পারেন ধাপগুলো টেস্ট বা রিপ্লিকেট করার জন্য।

অ্যাপটি ডিপ্লয় করার পর, আমরা সংক্ষেপে দেখব কীভাবে আপনি AppSignal ব্যবহার করে আপনার অ্যাপের ডিপ্লয়মেন্ট মনিটর করতে পারেন।

একahn, আপনি জিজ্ঞাসা করতে পারেন: আমি প্রথমে কেন Capistrano ব্যবহার করব?

আপনার Ruby on Rails অ্যাপের জন্য কেন Capistrano বেছে নেবেন?

আপনি বিচার করতে পারেন আজকাল ডিপ্লয়মেন্ট এবং কন্টিনিউয়াস ইন্টিগ্রেশনের জন্য অনেক টুল ও সার্ভিস থাকা সত্ত্বেও Capistrano ব্যবহার করা কি এখনো অর্থসাধক। সেটা বুঝতে, আমাদের Capistrano-এর উৎপত্তি এবং বর্তমান দিন পর্যন্ত এর বিবর্তন পুনরাবলোকন করতে হবে। Capistrano রিপোজিটরির প্রথম ট্যাগ ২০০৬ সালে তৈরি হয়েছিল। এর উদ্দেশ্য ছিল SSH-এর মাধ্যমে রিমোটলে কমান্ড এক্সিকিউট করতে দেয়া সমান্তরালভাবে অনেক মেশিনে, সব DSL ব্যবহার করে। স उस समय থেকে, Capistrano প্রতিটি ভার্সনে অনেক ফিচার যোগ করে বিবর্তিত হয়েছে।

বর্তমানে ১৬ বছর পর ভার্সন 3-এ, Capistrano সক্রিয়ভাবে উন্নত হচ্ছে এবং এখন এটি স্বয়ংক্রিয় ডিপ্লয়মেন্ট স্ক্রিপ্ট বিল্ড করার জন্য একটি ফ্রেমওয়ার্ক হিসেবে পরিচিত।

তাই এখন এটি শুধু রিমোট মেশিনে কমান্ড চালানোর টুল নয়। Capistrano-এর ফিচারগুলোর পাশাপাশি, অনেক প্লাগইন এবং অন্যান্য জেম আছে যা সপেসিফিক্যালি Capistrano-র সাথে চলে।

এই কারণ এবং বড় কমিউনিটি এখনো Capistrano ব্যবহার করছে এই সত্ত্বে, এটি অটোমেটেড ডিপ্লয়মেন্টের জন্য একটি চমৎকার টুল।

আপনার Ruby on Rails অ্যাপে Capistrano যোগ করা

প্রথমে, আপনাকে একটি Ruby on Rails অ্যাপ্লিকেশন কনফিগার করতে হবে Capistrano-র সাথে ইন্টিগ্রেট করার জন্য। আপনি Capistrano-এর ডকুমেন্টেশন ফলো করতে পারেন। তবে, এই পোস্টের স্কোপের চেয়ে তাতে বেশি ইনফরমেশন আছে। তাই সিম্পলিসিটির জন্য, এই আর্টিকেলে শুধু প্রয়োজনীয় ধাপ এবং কনফিগারেশনই থাকবে।

কনফিগারেশন শুরু করতে, আপনার Gemfile-এর development সেকশনে Capistrano জেম যোগ করুন:


আপনাকে capistrano-rails জেম প্রয়োজন আপনার ডেটাবেসে মাইগ্রেশন চালানোর জন্য এবং অ্যাসেট হ্যান্ডেল করার জন্য যা আমরা পরবর্তী সেকশনে দেখব।

এখন bundle install চালান Capistrano আপনার অ্যাপ্লিকেশনে যোগ করতে:


তারপর আপনি Capistrano ইনস্টল করতে পারেন:


এই কমান্ডটি একটি ফাইল তৈরি করবে যেটি Capfile নামে, যা প্রয়োজনীয় লাইব্রেরিগুলো ইম্পорт ও কনফিগার করে। উপরন্তু, config ফোল্ডারের ভিতরে deploy.rb নামে একটি ফাইল তৈরি হবে যেটিতে Capistrano-র সাথে ডিপ্লয়মেন্টে অন্তর্ভুক্ত হওয়া সব কনফিগারেশন থাকবে।

নোট: Capistrano deploy.rb কনফিগারেশন ওভাররাইড করার জন্য একটি ফাইল তৈরি করে স্টেজিং এবং প্রোডাকশন এনভায়রনমেন্ট উভয়ের জন্য, কিন্তু এই আর্টিকেলে সেটি কভার করা হবে না।

এবার আপনি আপনার Ruby on Rails অ্যাপ্লিকেশন এবং সার্ভারের মধ্যে কনফিগারেশন এবং যোগাযোগ শুরু করার জন্য রেডি।

আপনার Rails অ্যাপের জন্য Capistrano-র সাথে সার্ভার কনফিগারেশন

এই ধাপে, আমরা Capistrano কনফিগারেশন ফাইলে ইনস্ট্রাকশন যোগ করব। ইনস্ট্রাকশনগুলো আপনার সার্ভারের সাথে যোগাযোগ করবে আপনার অ্যাপ কোথায় ডিপ্লয় হবে সেটি বলে দিয়ে। এটি হলো যেখানে আমরা অ্যাক্সেস ইনফরমেশন এবং সিকিউরিটি কনফিগারেশন ডিফাইন করব।

নিশ্চিত করতে হলে আপনার প্রোডাকশন এনভায়রনমেন্ট ডেভেলপমেন্টে আপনার ব্যবহৃত Ruby সংস্করণের সেম সংস্করণ চালাচ্ছে, একটি Ruby ভার্সন ম্যানেজার ব্যবহার করুন, যেমন RVM বা rbenv (Capistrano উভয়ই সাপোর্ট করে)।

এই আর্টিকেলে, আমরা RVM ব্যবহার করব। নিশ্চিত করুন আপনার ডেভেলপমেন্ট মেশিন এবং প্রোডাকশন সার্ভার দুটোতেই RVM ইনস্টলড আছে। এছাড়া চেক করুন আপনার Ruby সংস্করণ দুটি এনভায়রনমেন্ট এবং প্রজেক্টে একই কিনা।

capistrano-rvm জেম যোগ করা

Capistrano প্রজেক্ট একটি জেম প্রদান করে যেটি capistrano-gem নামে যা RVM সহজে কনফিগার করতে দেয়। আপনার প্রজেক্টে এটি ইনক্লুড করতে, আপনার Gemfile-এ আপনার development গ্রুপে এটি যোগ করুন, এবং আবার bundle install চালান।


আপনার Capfile আপডেট করুন capistrano-rvm ইম্পор্ট দিয়ে:


deploy ফাইলে, Ruby সংস্করণ এবং RVM পাথ সেট করার জন্য একটি কনফিগারেশন যোগ করুন (বিশেষ করে যদি আপনি RVM ইনস্টল করার জন্য আলাদা পাথ ব্যবহার করেন)।

যদি Ruby-এর কোনো সংস্করণ ডিফাইন না করা থাকে, Capistrano সার্ভারে ইনস্টল করা লেটেস্ট ভার্সন বেছে নেবে যেখানে আপনার অ্যাপ্লিকেশন ডিপ্লয় হবে।


Capistrano::RVM-র RVM-এর জন্য অন্যান্য সেটিংস আছে, কিন্তু এখানে দেখানো গুলো শুরু করার জন্য আপনার প্রয়োজনীয়।

আপনার সার্ভার কনফিগারেশন সেট আপ করুন

ডিপ্লয়মেন্টের জন্য একটি ইউজার ডিফাইন করা ভালো অভ্যাস। আপনার সার্ভারে এই ধাপগুলো ফলো করুন ডিপ্লয়মেন্ট শুরু করার আগে:

  1. আপনার লোকাল মেশিনে জেনারেট করা পাবলিক কী ~/home/YOUR_USER/.ssh/authorized_keys ফাইলে যোগ করুন।
  2. একটি কী তৈরি করুন এবং পাবলিক কী কোড রিপোজিটরিতে ইনক্লুড করুন। এটি আপনাকে প্রোডাকশন সার্ভারে আপনার প্রজেক্ট ক্লোন করতে অ্যাক্সেস দেবে। আপনি যদি GitHub ব্যবহার করেন, তবে এই ডকুমেন্টেশন ফলো করতে পারেন।
  3. /var/www/ ডিরেক্টরিতে লিখার পারমিশন সেট করুন।

আপনি Capistrano কনফিগার করতে পারেন যেকোনো এনভায়রনমেন্টের জন্য যা আপনার প্রয়োজন। আপনার শুধু config/deploy/<environment_name>.rb ভিতরে একটি নতুন কনফিগারেশন ফাইল তৈরি করতে হবে, তারপর IP বা DNS, এবং ইউজারনেম কনফিগার করতে হবে আপনার সার্ভারের সাথে কানেক্ট করার জন্য।


ডিপ্লয়মেন্ট সেটআপ কমপ্লিট করতে, আপনার অ্যাপ্লিকেশন সম্পর্কে ইনফরমেশন ইনক্লুড করুন, যেমন অ্যাপ্লিকেশন নাম এবং কোড রিপোজিটরি URL। যেকোনো ইনফরমেশন যা সব এনভায়রনমেন্টের জন্য একই, সেগুলো config/deploy.rb-এ যোগ করতে হবে। স্পেসিফিক এনভায়রনমেন্ট কনফিগারেশন config/deploy/<environment_name>.rb-এ রাখুন।



আপনার Rails অ্যাপের জন্য capistrano-secrets-yml জেম সেট আপ করুন

আপনাকে capistrano-secrets-yml জেমও সেট আপ করা উচিত।

জেমটি আপনার Gemfile-এ যোগ করুন এবং বান্ডেল চালিয়ে ইনস্টল করুন:


Capfile-এ ইম্পোর্ট করুন:


তারপর আপনার অ্যাপ্লিকেশনে config/secret.yml তৈরি করুন এবং সিক্রেট কী বেস পরিবেশ ভেরিয়েবল হিসেবে ইনক্লুড করুন। এই ভেরিয়েবলটি আপনার প্রোডাকশন সার্ভারে তৈরি হবে। মনে রাখবেন এই ফাইলটি আপনার রিপোজিটরিতে কমিট করা উচিত নয়।


আপনার অ্যাপ্লিকেশন ফোল্ডারের ভিতরে টার্মিনালে, এই কমান্ড চালান সিক্রেট কী বেস জেনারেট করতে:


জেনারেট করা কী কপি করুন এবং আপনার প্রোডাকশন সার্ভারে SECRET_KEY_BASE সেট করতে ব্যবহার করুন। আপনার প্রোডাকশন সার্ভার এক্সেস করুন এবং ফাইনাল ~/.bashrc ফাইলে SECRET_KEY_BASE ভেরিয়েবল এক্সপোর্ট করুন, যাতে এটি সবসময় উপলব্ধ থাকে:


সোর্স চালান এটি তৎক্ষণ আপনার এনভায়রনমেন্টে উপলব্ধ করতে:


এখন, আপনার মেশিনে ফিরে, অ্যাপ্লিকেশন ফোল্ডার টার্মিনালে এক্সেস করুন এবং নিচের Capistrano কমান্ড চালান প্রোডাকশন সার্ভারে config/secrets.yml তৈরি করতে:


সব হয়ে গেলো! এখন Capistrano কনফিগার করার সময় ডেটাবেস মাইগ্রেশন চালানোর জন্য।

Capistrano কনফিগার করা ডেটাবেস মাইগ্রেশন পারফর্ম করার জন্য

এখন Capistrano কনফিগার করার সময় ডেটাবেস-রিলেটেড কমান্ড চালানোর জন্য।

capistrano-rails জেম যা ইতিমধ্যে আপনার Gemfile-এ আছে, সেটি কনফিগার করা যায় প্রতিটি ডিপ্লয়মেন্টে মাইগ্রেশন পারফর্ম করতে। আমাদের শুধু Capfile-এ ইম্পোর্ট করতে হবে:


কিন্তু আপনি যদি ডিপ্লয়মেন্টে সিডস চালাতে চান, তবে আপনাকে একটি নতুন টাস্ক তৈরি করতে হবে মাইগ্রেশনের পর চালানোর জন্য:


এখন, আপনার অ্যাপ সุดান্তে ডিপ্লয় হওয়ার জন্য রেডি!

আপনার Ruby on Rails অ্যাপের ডিপ্লয়মেন্ট শুরু করুন

চলুন দেখি কীভাবে আমাদের লোকাল মেশিন থেকে সরাসরি ডিপ্লয়মেন্ট পারফর্ম করতে হয় আমাদের সার্ভারকে আপনার অ্যাপ্লিকেশনের নতুন ভার্সনে আপডেট করে।

যখন আপনি একটি ডিপ্লয়মেন্ট কমান্ড এক্সিকিউট করেন, Capistrano আপনার সার্ভারের সাথে কানেক্ট হবে। সেখান থেকে, Capistrano কনফিগারেশন ফাইলে ডিফাইন করা রিপোজিটরি থেকে কোড ক্লোন করার চেষ্টা করবে। তারপর অন্যান্য টাস্কগুলো ডিপ্লয়মেন্ট ফ্লো অনুসরণ করে পারফর্ম হবে।

Capistrano-এর deploy:check কমান্ড যাচাই করে যে Git কনফিগারেশন ঠিক আছে এবং Capistrano-র ডিপ্লয়মেন্টে ব্যবহৃত ডিরেক্টরিগুলোর সঠিক অ্যাক্সেস আছে কিনা।

এটি ব্যবহার করতে, এনভায়রনমেন্ট পাস করুন। এই কেসে, আমরা প্রোডাকশন ব্যবহার করছি:


যদি কনফিগারেশন সব ঠিক থাকে, আপনি প্রোডাকশনে আপনার ডিপ্লয়মেন্ট শুরু করতে পারেন:


অতিরিক্তভাবে, আপনি Capistrano-এ উপলব্ধ সব টাস্ক চেক করতে পারেন কমান্ড দিয়ে:


এখন, আমাদের চূড়ান্ত ধাপে, আমাদের Ruby on Rails অ্যাপ্লিকেশনকে AppSignal-র সাথে ইন্টিগ্রেট করি এবং মনিটরিং শুরু করি।

Capistrano এবং আপনার Rails অ্যাপের সাথে AppSignal ইন্টিগ্রেট করা

AppSignal একটি মনিটরিং টুল, তাই আপনি জিজ্ঞাসা করতে পারেন কেন এটি এই আর্টিকেলে ইনক্লুড করা হয়েছে। সেটা একটি বৈধ প্রশ্ন, কারণ মনিটরিং সরাসরি ডিপ্লয়মেন্টের সাথে সম্পর্কিত নয়।

そう言うと, AppSignal একটি মূল্যবান টুল যখন আপনার Ruby on Rails অ্যাপ্লিকেশন মনিটর করার কথা এবং প্রতিটি এনভায়রনমেন্টে ডিপ্লয়মেন্ট ট্র্যাক করার কথা। তাই চলুন দেখি কীভাবে আমরা আপনার অ্যাপের জন্য AppSignal সেট আপ করতে পারি।

আপনাকে একটি AppSignal অ্যাকাউন্ট প্রয়োজন, যা আপনি AppSignal-এর সাইন-আপ পেজে তৈরি করতে পারেন। Ruby আপনার ভাষা হিসেবে পিক করুন এবং AppSignal আপনার অ্যাপ্লিকেশনে ইনস্টল করার ধাপগুলো ফলো করুন।

একবার ইনস্টল হলে, AppSignal কনফিগার করার জন্য একটি ফাইল তৈরি হবে। এখানে গুরুত্বপূর্ণ হলো revision ডিফাইন করা—যে ইনফরমেশন ডিপ্লয়মেন্টের পর চেক করা হবে দেখতে নতুন ভার্সন ডিপ্লয় হয়েছে কিনা। এই কেসে, আমরা Git লগ ব্যবহার করব revision ইনফরমেশন হিসেবে নিশ্চিত করতে যে প্রতিটি নতুন কোড ডিপ্লয় AppSignal-কে নোটিফাই করবে।


এছাড়া এনভায়রনমেন্ট ভেরিয়েবল এক্সপোর্ট করা ভালো অভ্যাস আপনার প্রোডাকশন সার্ভারে (বিশেষ করে API কী, যাতে AppSignal কনফিগারেশন ফাইলে না থাকে)।


এখন আমরা আবার ডিপ্লয়মেন্ট চালাতে পারি। যদি সব ঠিক থাকে, আপনি ডিপ্লয়মেন্টের শেষে এই মত একটি মেসেজ দেখবেন:


এখন আপনি AppSignal-এ আপনার অ্যাপ্লিকেশন দেখতে পারবেন! 🎉

Capistrano দিয়ে Ruby on Rails ডিপ্লয়মেন্ট সুव्यবস্থিত করুন: ধাপে ধাপে গাইড

এবং যেকোনো ডিপ্লয়মেন্ট সম্পর্কে ইনফরমেশন:

Capistrano দিয়ে Ruby on Rails ডিপ্লয়মেন্ট সুव्यবস্থিত করুন: ধাপে ধাপে গাইড

AppSignal-এর ডিপ্লয়মেন্ট ডকুমেন্টেশন পেজ ভিজিট করুন ডিপ্লয়মেন্ট ইন্টিগ্রেশন এবং Ruby on Rails অ্যাপ্লিকেশনের জন্য উপলব্ধ অন্যান্য ফিচার সম্পর্কে জানতে।

মোটামুটি সমাপ্তি এবং পরবর্তী ধাপ

এই পোস্টে, আমরা এক্সপ্লোর করেছি কীভাবে Capistrano ব্যবহার করে আপনার Ruby on Rails অ্যাপ ডিপ্লয় করতে হয়। আমরা প্রথমে একটি অ্যাপে Capistrano যোগ করেছি, তারপর কনফিগার এবং ডিপ্লয় করেছি, এবং শেষে AppSignal-র সাথে মনিটরিং সেট আপ করেছি।

আপনি যদি আরও এক্সপ্লোর করতে চান, আপনি Capistrano কনফিগার করতে পারেন আপনার রিপোজিটরির পাইপলাইন থেকে কানেক্টেড একটি ইন্টিগ্রেশন থেকে চালানোর জন্য। Bitbucket, GitHub, এবং GitLab-এর মত টুলগুলো এই প্রসেস ম্যানেজ করার জন্য সেটিংস দেয় এবং Capistrano-র সাথে কনজংশনে ব্যবহার করা যায়।

হ্যাপি কোডিং!

P.S. আপনি যদি Ruby Magic পোস্টগুলো প্রেস থেকে বের होते ही পড়তে চান, আমাদের Ruby Magic নিউজলেটার সাবস্ক্রাইব করুন এবং কখনো একটি পোস্ট মিস করবেন না!

  1. ডেটা স্ট্রাকচরে এক্সপ্রেশন ট্রি কনস্ট্রাক্ট করার অ্যালগরিদম

  2. How can I validate EditText input in Android?

  3. পাইথন পান্ডাস দিয়ে ডেটাসেট প্লট করে আপট্রেন্ড দেখানো

  4. জাভাতে Cursor ক্লাসের গুরুত্ব