আপনি যখন আপনার Rails অ্যাপটি কীভাবে স্থাপন করবেন তা নিয়ে গবেষণা করলে, আপনি অনেক নাম দেখতে পাবেন:Apache, Unicorn, Puma, Phusion Passenger, Nginx, Rainbows এবং আরও অনেক কিছু। এগুলি সমস্ত সফ্টওয়্যারের "ডিপ্লয়িং রেল" বিভাগের অধীনে মাপসই বলে মনে হচ্ছে, তবে তাদের মধ্যে একটি মূল পার্থক্য রয়েছে। কিছু হল "ওয়েব সার্ভার," এবং অন্যগুলি হল "অ্যাপ সার্ভার।"
একবার আপনি বুঝতে পারবেন কোনটি কোনটি, এবং যেখানে প্রতিটি বিভাগ আপনার সিস্টেমে ফিট করে, স্থাপনাটি অনেক বেশি অর্থবহ হবে৷ কিন্তু বিভাগগুলো সবসময় পরিষ্কার হয় না।
একটি ওয়েব সার্ভার কি এবং এটি কিভাবে একটি অ্যাপ সার্ভারের থেকে আলাদা? আপনি অন্য ছাড়া একটি ব্যবহার করতে পারেন? এবং কোথায় র্যাক ফিট করে?
ওয়েব সার্ভার কি?
একটি ওয়েব সার্ভার একটি প্রোগ্রাম যা ব্যবহারকারীর কাছ থেকে আপনার ওয়েবসাইটে একটি অনুরোধ নেয় এবং এটিতে কিছু প্রক্রিয়াকরণ করে। তারপর, এটি আপনার রেল অ্যাপকে অনুরোধ করতে পারে৷৷ Nginx এবং Apache হল দুটি বড় ওয়েব সার্ভার যা আপনি চালাবেন।
যদি অনুরোধটি এমন কিছুর জন্য হয় যা প্রায়শই পরিবর্তিত হয় না, যেমন CSS, JavaScript, বা চিত্র, আপনার Rails অ্যাপের সম্ভবত এটি দেখার প্রয়োজন নেই। ওয়েব সার্ভার আপনার অ্যাপের সাথে কথা না বলে নিজেই অনুরোধটি পরিচালনা করতে পারে। এটি সাধারণত সেভাবে দ্রুত হবে।
ওয়েব সার্ভারগুলি SSL অনুরোধগুলি পরিচালনা করতে পারে, স্ট্যাটিক ফাইল এবং সম্পদগুলি পরিবেশন করতে পারে, অনুরোধগুলি সংকুচিত করতে পারে এবং অন্যান্য অনেক কিছু করতে পারে যা প্রায় প্রতিটি ওয়েবসাইটের প্রয়োজন হয়৷ এবং যদি আপনার Rails অ্যাপ করেন একটি অনুরোধ পরিচালনা করতে হবে, ওয়েব সার্ভার এটি আপনার অ্যাপ সার্ভারে প্রেরণ করবে৷
অ্যাপ সার্ভার কি?
একটি অ্যাপ সার্ভার সেই জিনিস যা আসলে আপনার Rails অ্যাপ চালায়৷৷ আপনার অ্যাপ সার্ভার আপনার কোড লোড করে এবং আপনার অ্যাপকে মেমরিতে রাখে। যখন আপনার অ্যাপ সার্ভার আপনার ওয়েব সার্ভার থেকে একটি অনুরোধ পায়, তখন এটি আপনার রেল অ্যাপকে এটি সম্পর্কে বলে। আপনার অ্যাপের অনুরোধটি পরিচালনা করার পরে, অ্যাপ সার্ভার ওয়েব সার্ভারে (এবং অবশেষে ব্যবহারকারীকে) প্রতিক্রিয়া পাঠায়।
আপনি নিজেরাই বেশিরভাগ অ্যাপ সার্ভার চালাতে পারেন, এটির সামনে কোনও ওয়েব সার্ভার ছাড়াই৷ এটি সম্ভবত আপনি উন্নয়ন মোডে কি করেন! উৎপাদনে, যদিও, আপনার সামনে সাধারণত একটি ওয়েব সার্ভার থাকবে৷৷ এটি একসাথে একাধিক অ্যাপ্লিকেশান পরিচালনা করবে, আপনার সম্পদগুলিকে দ্রুত রেন্ডার করবে এবং প্রতিটি অনুরোধে আপনি যে প্রক্রিয়াগুলি করবেন তার সাথে মোকাবিলা করবে৷
একটি টন আছে Mongrel (যা এখন আর বেশি ব্যবহার করা হয় না), Unicorn, Thin, Rainbows এবং Puma সহ Rails অ্যাপের জন্য অ্যাপ সার্ভারের। প্রত্যেকের আলাদা আলাদা সুবিধা এবং ভিন্ন দর্শন রয়েছে। কিন্তু শেষ পর্যন্ত, তারা সবাই একই জিনিস সম্পাদন করে – আপনার Rails অ্যাপটি চালু রাখা এবং অনুরোধগুলি পরিচালনা করা।
যাত্রী সম্পর্কে কি?
ফিউশন প্যাসেঞ্জার একটু ইউনিক। "স্বতন্ত্র মোডে" এটি একটি অ্যাপ সার্ভারের মতো কাজ করতে পারে। কিন্তু এটি সরাসরি একটি ওয়েব সার্ভারে তৈরি করা যেতে পারে, তাই আপনার প্রয়োজন নেই আপনার রেল অ্যাপগুলি চালানোর জন্য একটি পৃথক অ্যাপ সার্ভার৷৷
এই সত্যিই সুবিধাজনক হতে পারে. বিশেষ করে যদি আপনি একগুচ্ছ অ্যাপ চালানোর পরিকল্পনা করছেন এবং প্রতিটির জন্য একটি অ্যাপ সার্ভার সেট আপ করতে সময় ব্যয় করতে চান না। প্যাসেঞ্জার ইন্সটল করার পর, আপনি ওয়েব সার্ভারকে সরাসরি আপনার Rails অ্যাপে নির্দেশ করুন (একটি অ্যাপ সার্ভারের পরিবর্তে), এবং আপনার Rails অ্যাপ অনুরোধগুলি পরিচালনা করা শুরু করবে!
যাত্রী একটি চমৎকার বিকল্প, কিন্তু একটি পৃথক অ্যাপ সার্ভার থাকা এখনও ভাল হতে পারে। অ্যাপ সার্ভারকে আলাদা রাখা আপনাকে এমন একটি অ্যাপ সার্ভার বেছে নেওয়ার নমনীয়তা দেয় যা আপনার প্রয়োজনে সবচেয়ে উপযুক্ত হয় এবং আপনি নিজে থেকে এটি চালাতে এবং স্কেল করতে পারেন। তবুও, পরের বার যখন আমি একটি নতুন ছোট অ্যাপ স্থাপন করব তখন আমি এটি আবার চেষ্টা করতে যাচ্ছি। আমি আশা করছি এটি একই সার্ভারে ভবিষ্যতের অ্যাপ স্থাপন করা সহজ করে তুলবে।
র্যাক সম্পর্কে কি?
র্যাক হল সেই জাদু যা এই অ্যাপ সার্ভারগুলির যেকোন একটিকে আপনার রেল অ্যাপ চালাতে দেয়৷ (বা সিনাট্রা অ্যাপ, বা প্যাড্রিনো অ্যাপ, বা…)
আপনি র্যাককে একটি সাধারণ ভাষা হিসাবে ভাবতে পারেন যা রুবি ওয়েব ফ্রেমওয়ার্ক (যেমন রেল) এবং অ্যাপ সার্ভার উভয়ই কথা বলে। যেহেতু প্রতিটি পক্ষ একই ভাষা জানে, এর অর্থ হল রেলগুলি ইউনিকর্নের সাথে এবং ইউনিকর্ন থেকে রেলের সাথে কথা বলতে পারে, রেল বা ইউনিকর্ন কেউই অপরটির সম্পর্কে কিছু জানে না৷
তারা কিভাবে সম্পর্ক করে?
তাহলে, কিভাবে এই সব একসাথে ফিট করে?
এই টুকরোগুলির মধ্যে, একটি ওয়েব অনুরোধ প্রথমে আপনার ওয়েব সার্ভারে আঘাত করবে। যদি অনুরোধটি এমন কিছু হয় যা রেলগুলি পরিচালনা করতে পারে, ওয়েব সার্ভার অনুরোধটির উপর কিছু প্রক্রিয়াকরণ করবে এবং এটি অ্যাপ সার্ভারের কাছে হস্তান্তর করবে। অ্যাপ সার্ভার আপনার Rails অ্যাপের সাথে কথা বলার জন্য Rack ব্যবহার করে। যখন আপনার অ্যাপটি অনুরোধের সাথে সম্পন্ন হয়, আপনার Rails অ্যাপটি অ্যাপ সার্ভার এবং ওয়েব সার্ভারের মাধ্যমে আপনার অ্যাপ ব্যবহারকারী ব্যক্তির কাছে প্রতিক্রিয়া ফেরত পাঠায়।
আরও নির্দিষ্টভাবে, Nginx ইউনিকর্নকে একটি অনুরোধ পাঠাতে পারে। ইউনিকর্ন র্যাকে অনুরোধটি দেয়, যা এটি রেল রাউটারকে দেয়, যা এটি সঠিক নিয়ামককে দেয়। তারপর, আপনার প্রতিক্রিয়া ঠিক অন্যভাবে ফিরে যায়৷
এই ওভারভিউ সরলীকৃত হতে পারে. কিন্তু শুধুমাত্র এই বিভাগগুলি জানার ফলে আপনি যে সফ্টওয়্যারটি ব্যবহার করছেন তা সঠিক মানসিক বালতিতে রাখতে সাহায্য করবে৷
অ্যাপ সার্ভার এবং ওয়েব সার্ভারগুলি কীভাবে একত্রে ফিট করে তা আপনি বোঝার পরে, আপনার কাছে থাকা সার্ভারের সমস্যাগুলি ডিবাগ করা অনেক সহজ হবে। আপনি দেখতে পাবেন বিভিন্ন জায়গা এবং তারা কীভাবে ইন্টারঅ্যাক্ট করতে পারে তা আপনি জানতে পারবেন। এবং একবার পরবর্তী আকর্ষণীয় অ্যাপ সার্ভারটি এসে গেলে, এটি অদলবদল করা আপনার পক্ষে আরও সহজ হবে!
আপনি যদি রেলগুলি ওয়েবের সাথে কীভাবে ইন্টারঅ্যাক্ট করে সে সম্পর্কে আরও জানতে চান তবে এই নিবন্ধটি দেখুন:কীভাবে রেল সেশন কাজ করে৷