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 

Перезапущено:

service apache2 restart
sudo service php7.0-fpm reload

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

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

2
задан 23 November 2017 в 03:36

1 ответ


Проблема

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

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

Предварительные требования

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

  • Версия 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.


Отказ от ответственности

Делайте это на свой страх и риск; не используйте этот ответ на любом производственном сервере. Пожалуйста! 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

Устранение неполадок

Если у вас возникли проблемы с

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 check

Заключение

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

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


3
ответ дан 23 November 2017 в 03:36

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

Похожие вопросы: