HTTP 2 не работает в Ubuntu 16.04 с Apache2: как я могу это отладить?

Системная информация:

Ubuntu 16.04

Apache 2.4.29

PHP 7.0.22 (CLI)

Чтобы включить Apache 2, я выполнил следующие шаги в этом руководстве: https://http2.pro/doc/Apache.

В том числе:

добавленной Protocols h2 h2c http/1.1 к apache2.conf, а также к Virtual Hosts configuration,

Успешно сделал:

a2enmod mpm_event
a2enmod http2 

Restarted:

service apache2 restart
sudo service php7.0-fpm reload

Тем не менее сервер отказывается говорить HTTP 2. Пробовал различные уроки.

Я довольно новичок в Ubuntu: что мне может не хватать и какие шаги я могу предпринять для устранения этой проблемы?

1 ответ


проблема

Сидя в /var/log/apache2/error.log архив, содержит что-то вроде этого:

[http2: warn] [pid 3220] AH10034: модуль modm mpm (prefork.c) не поддерживается mod_http2. MPM определяет, как все обрабатывается на вашем сервере. HTTP/2 предъявляет к этому больше требований, и текущий выбранный mpm просто не подходит. Это консультативное предупреждение. Ваш сервер продолжит работать, но протокол HTTP / 2 будет неактивным.

Prerequisits

Запустите команду терминала для получения собственных переменных:

  • Версия Ubuntu: lsb_release -a
  • Версия Apache: apache2 -v
  • Версия PHP: php -v

Этот вопрос для:

Ubuntu 16.04
Apache 2.4.29
PHP 7.0.22 (CLI)

Этот ответ как раз для:

Ubuntu 16.04.3 LTS
Apache/2.4.29 (Ubuntu)
PHP 7.1.12-3+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Dec 14 2017 15:37:13)

PHP 7.1.12 был собран, следуя инструкциям (см. Вопрос): Как включить поддержку HTTP / 2 в Apache, последнее обновление 5 ноября 2017.


отказ

Делайте это на свой страх и риск; не используйте этот ответ на любом производственном сервере. Добро пожаловать;-) .


Ответ

Процитируйте тот же учебник, названный ранее:

Apache 2.4.27, HTTP / 2 не поддерживается в prefork

Мы должны изменить режим prefork на режим события или рабочий, но ВНИМАНИЕ вам нужно будет использовать PHP в качестве FastCGI.

Шаг за шагом

Первый шаг

Сначала добавьте репозиторий Ondřej Surý (обратите внимание на символы UTF8) в вашу Ubuntu, эти инструкции взяты из этого руководства DigitalOcean. Вам потребуются права root, здесь мы будем использовать команду sudo:

sudo add-apt-repository ppa:ondrej/php
sudo apt-get install -y language-pack-en-base
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt-get update

Шаг второй

sudo apt-get install php7.1

Да, верно, не шучу. После этого следующий шаг.

Шаг третий

sudo apachectl stop
sudo apt-get install php7.1-fpm 
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.1-fpm 
sudo a2dismod php7.1 
sudo a2dismod mpm_prefork 
sudo a2enmod mpm_event 
sudo apachectl start

Troubleshotting

Если у вас есть проблемы с

sudo a2dismod php7.1

просто попробуйте это:

sudo a2dismod php7.0

(у нас тоже была эта проблема: sudo a2dismod php7.1)

Возможное улучшение

Если вы хотите использовать последнюю версию пакета:

sudo apt-get install php7.2-fpm

( Мы его установили, смотрите картинку)

Проверка хорошо выполненной работы

Смотрите следующий рисунок для нашего результата и посетите https://http2.pro/ для собственного теста (сначала установите ufw!)

Проверка HTTP2.Pro

Заключение

Скоро появится новая технология! Смотрите другие будущие протоколы здесь!

Спасибо за посещение AskUbuntu!


Другие вопросы по тегам