Ubuntu

Налаштування HTTP/2 на прикладі Apache 2.4, PHP 7 та Ubuntu 20.04 LTS

Крок перший. Оновлення Apache


Протокол HTTP/2 підтримується сервером Apache з версії 2.4.24, тому, якщо у Вас встановлена ​​стара версія, - саме час її оновити. Але спочатку перевіримо:
 

apache -v


Ця команда видасть щось на кшталт такого:
 

Server version: Apache/2.4.37 (Ubuntu)
Server built:   2018-10-28T15:27:08


У першому рядку вказана версія сервера. Якщо вона більша або дорівнює 2.4.24, можемо сміливо переходити до другого кроку. Інакше потрібно оновити апач, актуальні версії якого Ви зможете знайти в PPA відомого (якщо Вам вже доводилося ставити щось свіженьке на Debian/Ubuntu) розробника - Ondřej Surý. PPA – це персональні пакети, які не включені в офіційні репозиторії дистрибутивів. Тому, щоб скористатися ними, спочатку треба навчити систему, що й звідки брати:
 

sudo add-apt-repository ppa:ondrej/apache2


Хлопець робить гарну справу, і не проти отримати невеликий донат, про що дуже недвозначно заявляє при підключенні до його ріп…

Далі, власне, оновлюємо пакети:
 

sudo apt update
sudo apt upgrade


І знову перевіряємо версію Apache. Якщо все пройшло добре, на Вашому сервері буде стояти Apache, на якому можна налаштувати HTTP/2. Якщо все пішло погано – боюся, це вже не тема цієї статті. А тепер переходимо до другого кроку.
 

Крок другий. Використання FastCGI

 

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-enabled

Далі перезапускаємо Apache
 

sudo service apache2 restart


та переходимо до третього кроку.
 

Крок третій. Перехід із модуля Prefork на Event

 

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
service apache2 restart

 

Крок четвертий. Включаємо HTTP/2


Або в конфігураційний файл хоста, знайти який можна в директорії /etc/apache2/sites-enabled/ , або в конфізі самого сервера /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

Перший спосіб: звернутися до інструментів веб-розробника, які надаються самим браузером. Розглянемо на прикладі браузера Chrome :

  1. Відкрийте у браузері будь-яку сторінку сайту.

  2. Активуйте панель інструментів розробника.
    За замовчуванням: Ctrl+ Shift+ I.

  3. Активуйте вкладку Network .

  4. Оновіть сторінку.
    За замовчуванням: Ctrl+ F5.

Якщо файл кешується, то в колонці Size замість розміру файлу буде відображатися запис (from memory cache) або (from disk cache) :