উবুন্টুতে অ্যাপাচে কীভাবে HTTP/2 সক্ষম করবেন


ওয়ার্ল্ড ওয়াইড ওয়েব (www) প্রতিষ্ঠার পর থেকে এইচটিটিপি প্রোটোকলটি ইন্টারনেটের মাধ্যমে সুরক্ষিত এবং দ্রুত ডিজিটাল সামগ্রী সরবরাহ করার জন্য কয়েক বছর ধরে বিবর্তিত হয়েছে।

সর্বাধিক ব্যবহৃত সংস্করণটি হল HTTP 1.1 এবং এটি পূর্ববর্তী সংস্করণগুলির ত্রুটিগুলি সমাধান করার জন্য বৈশিষ্ট্য বর্ধন এবং পারফরম্যান্স অপ্টিমাইজেশনের সাথে প্যাক করেছে, এটি HTTP/2 দ্বারা সম্বোধন করা কয়েকটি অন্যান্য প্রধান বৈশিষ্ট্যগুলির চেয়ে কম।

এইচটিটিপি/১.১ প্রোটোকলটি নিম্নোক্ত ত্রুটিগুলি দ্বারা পরিপূর্ণ যা বিশেষত উচ্চ ট্র্যাফিক ওয়েব সার্ভার চালানোর সময় এটিকে কম আদর্শ করে তোলে:

  1. দীর্ঘ HTTP শিরোনামের কারণে ওয়েব পৃষ্ঠাগুলি লোড করতে বিলম্ব।
  2. HTTP/1.1 কেবলমাত্র প্রতি টিসিপি সংযোগের জন্য প্রতিটি ফাইলের জন্য একটি অনুরোধ প্রেরণ করতে সক্ষম।
  3. এইচটিটিপি/1.1 প্রদত্ত প্রতিটি টিসিপি সংযোগের জন্য একটি অনুরোধ প্রক্রিয়াকরণ করে, ব্রাউজারগুলি অনুরোধগুলি একযোগে প্রসেস করার জন্য সমান্তরাল টিসিপি সংযোগগুলির প্রলয় পাঠাতে বাধ্য হয়। এটি টিসিপি কনজেশন এবং শেষ পর্যন্ত ব্যান্ডউইথ অপচয় এবং নেটওয়ার্ক অবক্ষয়ের দিকে নিয়ে যায়

উপরে উল্লিখিত সমস্যাগুলি প্রায়শই ব্যান্ডউইথের ব্যবহারে কর্মক্ষমতা হ্রাস এবং উচ্চ ওভারহেড ব্যয়ের দিকে পরিচালিত করে। এইচটিটিপি/2 চিত্রগুলিতে এই সমস্যাগুলির সমাধান করতে এসেছিল এবং এখন এইচটিটিপি প্রোটোকলের ভবিষ্যত।

এটি নিম্নলিখিত সুবিধাগুলি সরবরাহ করে:

  1. শিরোনাম সংক্ষেপণ যা ক্লায়েন্টের অনুরোধগুলি হ্রাস করে এবং এর ফলে ব্যান্ডউইথ খরচ কমিয়ে দেয়। ফলস্বরূপ প্রভাবটি দ্রুত পৃষ্ঠা লোডের গতি
  2. একটি টিসিপি সংযোগের জন্য একাধিক অনুরোধকে একাধিকভাবে যুক্ত করা। সার্ভার এবং ক্লায়েন্ট উভয়ই একাধিক ফ্রেমে একটি HTTP অনুরোধ ভেঙে অন্য প্রান্তে পুনরায় গোষ্ঠীভুক্ত করতে পারে
  3. দ্রুত ওয়েব সম্পাদনা যা ফলস্বরূপ আরও ভাল এসইও রu্যাঙ্কিংয়ের দিকে পরিচালিত করে >
  4. বেশিরভাগ মূলধারার ব্রাউজারগুলি HTTPS এর উপরে HTTP/2 লোড করার কারণে সুরক্ষা উন্নত করা হয়েছে।
  5. HTTP/2 শিরোনাম সংক্ষেপণের বৈশিষ্ট্যটির জন্য আরও মোবাইল-বান্ধব ধন্যবাদ বলে মনে করা হয়

এটি বলেছিল, আমরা উবুন্টু 20.04 এলটিএস এবং উবুন্টু 18.04 এলটিএসে অ্যাপাচি-তে এইচটিটিপি/2 সক্ষম করতে যাচ্ছি।

শুরু করার আগে, নিশ্চিত করুন যে আপনি HTTP/2 সক্ষম করার আগে অ্যাপাচি ওয়েব সার্ভারে HTTPS সক্ষম করেছেন। এটি কারণ যে সমস্ত মূলধারার ওয়েব ব্রাউজারগুলি এইচটিটিপিএস-এর মাধ্যমে HTTP/2 সমর্থন করে। আমার একটি ডোমেন নাম উবুন্টু ২০.০৪-তে একটি উদাহরণে নির্দেশিত যা লেটস এনক্রিপ্ট শংসাপত্র।

এছাড়াও, আপনার কাছে অ্যাপাচি ২.৪.২6 এবং এইচটিটিপি/২ এ স্থানান্তরিত করতে ইচ্ছুক প্রোডাকশন সার্ভারগুলির জন্য পরবর্তী সংস্করণ রয়েছে বলে প্রস্তাবিত।

আপনি যে অ্যাপাচি চালিয়ে যাচ্ছেন তার সংস্করণটি পরীক্ষা করতে, কমান্ডটি সম্পাদন করুন:

$ apache2 -v

আউটপুট থেকে, আপনি দেখতে পাচ্ছেন যে আমরা সর্বশেষতম সংস্করণটি ব্যবহার করছি, যা এই নিবন্ধটি লেখার সময় অ্যাপাচি ২.৪.৪১।

অ্যাপাচি ভার্চুয়াল হোস্টে HTTP/2 সক্ষম করুন

শুরু করতে, প্রথমে নিশ্চিত করুন যে ওয়েবসারভারটি HTTP/1.1 চলছে। আপনি Ctrl + SHIFT + I সংমিশ্রণটি ব্যবহার করে গুগল ক্রোমে বিকাশকারী সরঞ্জাম বিভাগটি খোলার মাধ্যমে ব্রাউজারে এটি করতে পারেন। ‘নেটওয়ার্ক’ ট্যাবে ক্লিক করুন এবং ‘প্রোটোকল’ কলামটি সন্ধান করুন।

এরপরে, নিম্নলিখিত কমান্ডটি চালিয়ে উবুন্টুতে HTTP/2 মডিউল সক্ষম করুন।

$ sudo a2enmod http2

এরপরে, আপনার এসএসএল ভার্চুয়াল হোস্ট ফাইলটি সন্ধান করুন এবং সম্পাদনা করুন, যদি আপনি লেটস এনক্রিপ্ট ব্যবহার করে এইচটিটিপিএস সক্ষম করে থাকেন, তবে একটি লে-এসএসএল.সিএনএফ প্রত্যয় সহ একটি নতুন ফাইল তৈরি করা হবে।

$ sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf

<ভার্চুয়ালহস্ট *: 443> ট্যাগের পরে নীচে নির্দেশ সন্নিবেশ করুন।

Protocols h2 http/1.1

পরিবর্তনগুলি সংরক্ষণ করতে, অ্যাপাচি ওয়েবসারভার পুনরায় চালু করুন।

$ sudo systemctl restart apache2

HTTP/2 সক্ষম আছে কিনা তা পরীক্ষা করতে নীচের কার্ল কমান্ডটি প্রদর্শন হিসাবে HTTP শিরোনামগুলি আনুন।

$ curl -I --http2 -s https://domain.com/ | grep HTTP

আপনার আউটপুট দেখানো উচিত।

HTTP/2 200

ব্রাউজারে, আপনার সাইটটি পুনরায় লোড করুন। তারপরে বিকাশকারী সরঞ্জামগুলিতে ফিরে যান এবং ‘প্রোটোকল’ কলামে h2 লেবেল দ্বারা চিহ্নিত HTTP/2 টি নিশ্চিত করুন।

অ্যাপাচি সহ Mod_php মডিউল ব্যবহার করার সময়

আপনি যদি Mod_php মডিউলটির পাশাপাশি অ্যাপাচি চালিয়ে যাচ্ছেন তবে আপনাকে পিএইচপি-এফপিএম পরিবর্তন করতে হবে। এর কারণ হল মোড_এফপি মডিউল প্রিফার্ক এমপিএম মডিউল ব্যবহার করে যা HTTP/2 দ্বারা সমর্থিত নয়। আপনাকে প্রিফোর্ক এমপিএম আনইনস্টল করতে হবে এবং এমপিএম_ভেন্য্ট মডিউলটিতে স্যুইচ করতে হবে যা এইচটিটিপি/2 দ্বারা সমর্থিত হবে।

আপনি যদি পিএইচপি 7.4 মোড_এফপি মডিউল ব্যবহার করেন, উদাহরণস্বরূপ, এটি প্রদর্শিত হিসাবে অক্ষম করুন:

$ sudo a2dismod php7.4 

এরপরে, প্রিফের্ক এমপিএম মডিউলটি অক্ষম করুন।

$ sudo a2dismod mpm_prefork

মডিউলগুলি অক্ষম করার পরে, ইভেন্ট এমপিএম, ফাস্ট_সিজিআই এবং সেটিংভিফ মডিউলগুলি প্রদর্শিত হিসাবে সক্ষম করুন।

$ sudo a2enmod mpm_event proxy_fcgi setenvif

উবুন্টুতে পিএইচপি-এফপিএম ইনস্টল করুন

এরপরে, পিএইচপি-এফপিএম প্রদর্শিত হিসাবে ইনস্টল করুন এবং শুরু করুন।

$ sudo apt install php7.4-fpm 
$ sudo systemctl start php7.4-fpm

তারপরে বুট সময় শুরু করতে পিএইচপি-এফপিএম সক্ষম করুন।

$ sudo systemctl enable php7.4-fpm

এরপরে, পিএইচপি-এফপিএমটিকে অ্যাপাচি পিএইচপি হ্যান্ডলার হিসাবে সক্ষম করুন এবং পরিবর্তনগুলি প্রভাবিত হওয়ার জন্য অ্যাপাচি ওয়েবসারভার পুনরায় চালু করুন।

$ sudo a2enconf php7.4-fpm

অ্যাপাচি উবুন্টুতে HTTP/2 সমর্থন সক্ষম করুন

তারপরে আগের মতো HTTP/2 মডিউল সক্ষম করুন।

$ sudo a2enmod http2

সমস্ত পরিবর্তন সিঙ্ক্রোনাইজ করতে অ্যাপাচি পুনরায় চালু করুন।

$ sudo systemctl restart apache2

অবশেষে, আপনি পরীক্ষা করতে পারেন যে আপনার সার্ভারটি HTTP/2 প্রোটোকলটি কার্ল কমান্ডটি প্রদর্শিত হিসাবে ব্যবহার করে ব্যবহার করছে।

$ curl -I --http2 -s https://domain.com/ | grep HTTP

আপনি আগের ডকুমেন্ট হিসাবে যাচাই করতে গুগল ক্রোম ব্রাউজারে বিকাশকারী সরঞ্জামগুলি ব্যবহার করতে বেছে নিতে পারেন। আমাদের এই গাইডটির শেষ অবধি আছে, আমরা আশা করি আপনি মূল্যবান তথ্যটি খুঁজে পেয়েছেন এবং আপনি আরামে সহজেই এপাচি-তে এইচটিটিপি/2 সক্ষম করতে পারবেন।