كيفية تمكين HTTP/2 في Apache على أوبونتو

منذ تأسيس الشبكة العالمية الويب (www)، تطور البروتوكول HTTP على مر السنين لتوفير محتوى رقمي آمن وسريع على الإنترنت.

أكثر الإصدارات استخدامًا هو HTTP 1.1 وفي حين أنه يأتي مع تحسينات وظائف وتحسينات أداء لمعالجة نقاط القصور في الإصدارات السابقة، فإنه يفتقر إلى بعض الميزات البارزة الأخرى التي تم معالجتها بواسطة HTTP/2.

ما هي نقاط القصور في HTTP/1.1؟

يعاني البروتوكول HTTP/1.1 من النقاط الضعف التالية التي تجعله أقل مثالية خاصة عند تشغيل خوادم ويب عالية الحركة:

  1. تأخيرات في تحميل صفحات الويب بسبب روابط HTTP الطويلة.
  2. يمكن لـ HTTP/1.1 إرسال طلب واحد لكل ملف لكل اتصال TCP.
  3. بالنظر إلى أن HTTP/1.1 يعالج طلبًا واحدًا لكل اتصال TCP، يضطر المتصفحات إلى إرسال كمية هائلة من الاتصالات TCP المتوازية لمعالجة الطلبات في وقت واحد. هذا يؤدي إلى ازدحام TCP وفي النهاية هدر الحزمة الشفافة وتدهور الشبكة.

كانت المشكلات المذكورة أعلاه غالبًا ما تؤدي إلى تدهور الأداء وتكاليف عالية في استخدام الحزم الشفافة. HTTP/2 ظهر لمعالجة هذه المشكلات وهو الآن المستقبل للبروتوكولات HTTP.

مزايا استخدام HTTP/2

يقدم الأتمتة التالية:

  1. Compressão de cabeçalho que minimiza as solicitações do cliente e, assim, reduz o consumo de largura de banda. O efeito resultante é velocidades de carregamento de páginas mais rápidas.
  2. تضاعف العديد من الطلبات عبر اتصال TCP واحد. يمكن للسيرفر والعميل على حد سواء تقسيم طلب HTTP إلى عدة إطارات وإعادة تجميعها في الطرف الآخر.
  3. أداء ويب أسرع مما يؤدي بالتالي إلى تحسين تصنيف SEO.
  4. تحسين الأمان نظرًا لأن معظم المتصفحات الرئيسية تحمل HTTP/2 عبر HTTPS.
  5. يُعتبر HTTP/2 أكثر ودية للهواتف المحمولة بفضل ميزة ضغط العنوان.

هذا وقد قررنا تمكين HTTP/2 على Apache على Ubuntu 20.04 LTS و Ubuntu 18.04 LTS.

المتطلبات الأساسية:

قبل البدء، تأكد من تمكين HTTPS على خادم الويب Apache قبل تمكين HTTP/2. هذا لأن جميع متصفحات الويب الرئيسية تدعم HTTP/2 عبر HTTPS. لدي اسم نطاق يشير إلى نسخة على Ubuntu 20.04 تعمل على خادم Apache مؤمن باستخدام شهادة Let’s Encrypt.

أيضًا، من المستحسن أن تكون لديك Apache 2.4.26 والإصدارات الأحدث لخوادم الإنتاج التي تنوي التحول إلى HTTP/2.

للتحقق من إصدار Apache الذي تستخدمه، قم بتنفيذ الأمر:

$ apache2 -v
Check Apache Version in Ubuntu

من الإخراج، يمكنك أن ترى أننا نستخدم أحدث إصدار، وهو Apache 2.4.41 في وقت كتابة هذه المقالة.

تمكين HTTP/2 على استضافة افتراضية Apache

للبدء، قم أولاً بالتأكد من أن خادم الويب يعمل بـ HTTP/1.1. يمكنك القيام بذلك على المتصفح عن طريق فتح قسم أدوات المطور على جوجل كروم باستخدام التركيبة Ctrl +SHIFT + I. انقر على علامة التبويب ‘ شبكة‘ وابحث عن العمود ‘بروتوكول‘.

Confirm HTTP Protocol Version

بعد ذلك، قم بتمكين وحدة HTTP/2 على أوبونتو عن طريق تشغيل الأمر التالي.

$ sudo a2enmod http2
Enable HTTP/2 on Ubuntu

ثم، ابحث عن وعدل ملف استضافة افتراضية SSL الخاص بك، إذا كنت قد قمت بتمكين HTTPS باستخدام Let’s Encrypt، فسيتم إنشاء ملف جديد يحمل تكملة le-ssl.conf.

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

أدخل التوجيه التالي بعد علامة <VirtualHost *:443>.

Protocols h2 http/1.1
Enable HTTP/2 on Apache

لحفظ التغييرات، أعد تشغيل خادم الويب Apache.

$ sudo systemctl restart apache2

للتحقق مما إذا كانت HTTP/2 ممكنة، اجلب رؤوس HTTP باستخدام الأمر curl التالي كما هو موضح.

$ curl -I --http2 -s https://domain.com/ | grep HTTP
Check HTTP/2 Support in Apache

يجب أن تحصل على الإخراج الموضح.

HTTP/2 200

على المتصفح، أعد تحميل موقعك. ثم انتقل إلى أدوات المطور وتحقق من وجود HTTP/2 مشار إليه بالعلامة h2 على عمود ‘بروتوكول‘.

Confirm HTTP/2 Protocol Version

عند استخدام وحدة mod_php مع Apache

إذا كنت تستخدم Apache جنبًا إلى جنب مع وحدة mod_php، فيجب عليك التبديل إلى PHP-FPM. هذا لأن وحدة mod_php تستخدم وحدة prefork MPM التي لا تدعمها HTTP/2. يجب عليك إلغاء تثبيت وحدة prefork MPM والتبديل إلى وحدة mpm_event التي ستكون مدعومة من قبل HTTP/2.

إذا كنت تستخدم وحدة PHP 7.4 mod_php، على سبيل المثال، قم بتعطيلها كما هو موضح:

$ sudo a2dismod php7.4 
Disable mod_php Module

بعد ذلك، قم بتعطيل وحدة prefork MPM.

$ sudo a2dismod mpm_prefork
Disable Prefork MPM in Apache

بعد تعطيل الوحدات، قم بتمكين وحدة Event MPM، Fast_CGI، و setenvif كما هو موضح.

$ sudo a2enmod mpm_event proxy_fcgi setenvif
Enable Event MPM in Apache

قم بتثبيت PHP-FPM على أوبونتو

ثم، قم بتثبيت وتشغيل PHP-FPM كما هو موضح.

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

ثم قم بتمكين PHP-FPM ليبدأ تلقائيًا عند تشغيل النظام.

$ sudo systemctl enable php7.4-fpm

بعد ذلك، قم بتفعيل PHP-FPM كمعالج PHP لـ Apache وأعد تشغيل خادم الويب Apache لتنفيذ التغييرات.

$ sudo a2enconf php7.4-fpm

تمكين دعم HTTP/2 في Apache على أوبونتو

ثم قم بتمكين وحدة HTTP/2 كما هو موضح سابقًا.

$ sudo a2enmod http2

أعد تشغيل Apache لمزامنة جميع التغييرات.

$ sudo systemctl restart apache2

وأخيرًا، يمكنك اختبار ما إذا كان خادمك يستخدم بروتوكول HTTP/2 باستخدام أمر curl كما هو موضح.

$ curl -I --http2 -s https://domain.com/ | grep HTTP
Check HTTP/2 Protocol in Apache

يمكنك أيضًا اختيار استخدام أدوات المطور في متصفح Google Chrome للتحقق كما تم وثق سابقًا. لقد وصلنا إلى نهاية هذا الدليل، نأمل أنك وجدت المعلومات قيمة وأنك يمكنك تمكين HTTP/2 على Apache بسهولة.

Source:
https://www.tecmint.com/enable-http2-in-apache-on-ubuntu/