أفهم أنه ربما ، أباتشي ليس الخيار المفضل حاليًا لإطلاق مشاريع جديدة عليه ، ومع ذلك ، فهو موجود ويعيش عليه وتعمل المشاريع عليه. قد يقع الاختيار بالنسبة له لبعض التفضيلات الشخصية أو لمتطلبات التوافق أو لأسباب أخرى ... ليس الهدف. في هذه المقالة ، أريد أن أصف خطوة بخطوة كيفية تكوين الدعم لبروتوكول HTTP / 2 على خادم الويب Apache ، لأنني أستخدمه بنفسي وأحتاج
إليه في مثل هذه المقالة ، وآمل أن يكون مفيدًا لشخص عمليًا أيضًا.
ما هو HTTP / 2؟ كما يوحي الاسم ، هذا هو الإصدار الثاني من بروتوكول HTTP. يمكنك قراءة المزيد عن الفوائد على الأقل في
ويكيبيديا . نيابة عني ، سأقول فقط أنه إذا كنت لا تستضيف استضافة مشتركة ، فإن دعم هذا البروتوكول أمر لا بد منه ، وكذلك ، على سبيل المثال ، HTTPS. نعم ، لكي يعمل HTTP / 2 ، ستحتاج إلى الوصول الكامل إلى وحدة تحكم الجهاز (وإن كانت افتراضية) من خلال ssh أو بطريقة أخرى ، بالإضافة إلى HTTPS الذي تم تكوينه بالفعل (TLS / SSL). حسنا ، دعنا نبدأ العمل.
الخطوة الأولى. تحديث اباتشي
يدعم بروتوكول Apache بروتوكول HTTP / 2 من الإصدار 2.4.24 ، لذلك إذا كان لديك إصدار قديم مثبت ، فقد حان الوقت لتحديثه. ولكن أولاً ، تحقق:
apache -v
سينتج عن هذا الأمر شيء مثل هذا:
Server version: Apache/2.4.37 (Ubuntu) Server built: 2018-10-28T15:27:08
يعرض السطر الأول إصدار الخادم. إذا كانت أكبر من أو تساوي 2.4.24 ، يمكننا المتابعة بأمان إلى الخطوة الثانية. خلاف ذلك ، تحتاج إلى تحديث Apache ، الإصدار الحالي الذي يمكنك العثور عليه في PPA للمطور الشهير (إذا كان عليك بالفعل وضع شيء جديد على Debian / Ubuntu) - Ondřej Surý. تعد اتفاقيات الشراء العامة حزمًا شخصية غير مدرجة في مستودعات التوزيع الرسمية. لذلك ، لاستخدامها ، تحتاج أولاً إلى تعليم النظام ماذا وأين يمكن الحصول عليه:
sudo add-apt-repository ppa:ondrej/apache2
يقوم الرجل بعمل جيد ، ولا تمانع في الحصول على كعكة صغيرة ، والتي يتم ذكرها بوضوح شديد عند الاتصال بلفت اللفت ...
علاوة على ذلك ، في الواقع ، نقوم بتحديث الحزم:
sudo apt update sudo apt upgrade
ومرة أخرى نتحقق من إصدار Apache. إذا سار كل شيء على ما يرام ، فسيتم تثبيت Apache على خادمك ، حيث يمكنك تكوين HTTP / 2. إذا ساء كل شيء - أخشى أن هذا ليس موضوع هذه المقالة. انتقل الآن إلى الخطوة الثانية.
الخطوة الثانية باستخدام FastCGI
ما هو FastCGI - من الأفضل أن تقرأ ، كما قلت ، على الأقل في
ويكيبيديا ، لأنه لا يمكنك إخبارنا باختصار. تحتاج إلى التبديل إلى PHP قيد التشغيل في وضع FastCGI (php-fpm). كيف يعمل - يتم إعطاء إجابة جيدة على
محمصة . هنا لن أخوض في هذه الفروق الدقيقة ، لكنني سأنتقل فورًا إلى التثبيت:
sudo apt install php-fpm
بعد التثبيت ، سيتم إخبارنا حرفيا بما يلي: لتمكين PHP 7.2 FPM في Apache2 ، قم بما يلي:
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php7.2-fpm
نحن نفعل ذلك. بعد ذلك تحتاج إلى تعطيل mod_php ، لأنه بدلاً من ذلك لديك الآن php-fpm.
sudo a2dismod php7.2
بشكل عام ، ربما كان لديك إصدار مختلف من PHP قبل ذلك. يمكنك إلقاء نظرة على الوحدات التي قمت بتثبيتها في النظام في الدليل
/ etc / apache2 / mods-available / والتي تكون نشطة في
/ etc / apache2 / mods-تمكينبعد ذلك ، أعد تشغيل Apache
sudo service apache2 restart
وانتقل إلى الخطوة الثالثة.
الخطوة الثالثة التحول من Prefork إلى الحدث
ما هو MPM وما الفرق بين prefork ، والحدث ، والعامل - يمكنك القراءة هنا في
هذه المقالة الرائعة ... ولكن من المهم الآن معرفة شيء واحد فقط: بريورك "القياسي" غير متوافق تمامًا مع HTTP / 2 ، لذلك تحتاج إلى استخدام أكثر ملاءمة . قم بإيقاف تشغيل أحدهما ، ثم تشغيل الآخر ، وإعادة تشغيل Apache.
sudo a2dismod mpm_prefork sudo a2enmod mpm_event service apache2 restart
الخطوة الرابعة. تمكين HTTP / 2
إما في ملف تكوين المضيف ، والذي يمكن العثور عليه في الدليل
/ etc / apache2 / المواقع الممكّنة / ، أو في تكوين الخادم
/etc/apache2/apache2.conf نفسه ، نقول أننا بحاجة إلى دعم للبروتوكول الجديد:
Protocols h2 h2c http/1.1
ما يهم حقا هو
H2 . هناك نقطتان أخريان حسب تقديرك.
h2c هو دعم HTTP / 2 عبر TCP (وليس TLS).
http / 1.1 - دعم الإصدار القديم من HTTP.
شغّل وحدة http2 وأعد تشغيل الخادم:
sudo a2enmod http2 service apache2 restart
وصل
من الآن فصاعدا. يجب أن يبدأ موردك في العمل عبر HTTP / 2. إذا كنت تستخدم Chrome بالانتقال إلى المورد ، فسترى كيف يضيء صاعقة البرق في الزاوية اليمنى العلوية من المتصفح باللون الأزرق. عند المرور فوقها ، سترى موجه HTTP / 2 (h2) الممكّن. في فايرفوكس ، انتقل إلى لوحة المطور وعلى علامة التبويب الشبكة ، قم بتشغيل عمود البروتوكول - بالنسبة للموارد من موقعك ، يجب إدراج HTTP / 2.0. يمكنك أيضًا التحقق مما إذا كان المورد الخاص بك يدعم هذا البروتوكول في
أحد المواقع العديدة على الويب. ولكن لا تسترخي ، لأن
HTTP / 3 على أعتابها بالفعل :)