HTTP 2 não funciona no Ubuntu 16.04 com o Apache2: Como depurar isso?

2

Informações do sistema:

Ubuntu 16.04

Apache 2.4.29

PHP 7.0.22 (CLI)

Para ativar o Apache 2, segui as etapas seguidas neste tutorial: link .

Incluindo:

Adicionamos Protocols h2 h2c http/1.1 ao apache2.conf , bem como ao Virtual Hosts configuration .

fez com sucesso:

a2enmod mpm_event
a2enmod http2 

Reiniciado:

service apache2 restart
sudo service php7.0-fpm reload

Ainda assim, o servidor se recusa a falar HTTP 2 . Tentei vários tutoriais.

Eu sou relativamente novo no Ubuntu: O que posso estar perdendo e quais etapas eu posso fazer para depurar este problema?

    
por Blackbam 23.11.2017 / 01:36

1 resposta

3

Problema

Navegar no arquivo /var/log/apache2/error.log contém algo assim:

[http2:warn] [pid 3220] AH10034: The mpm modum module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be will be inactive.

Pré-requisitos

Execute o comando terminal para obter suas próprias variáveis:

  • Versão do Ubuntu: lsb_release -a
  • Versão do Apache: apache2 -v
  • versão do PHP: php -v

Esta pergunta é para:

Ubuntu 16.04
Apache 2.4.29
PHP 7.0.22 (CLI)

Esta resposta é exatamente para:

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)

O PHP 7.1.12 foi construído seguindo as etapas dadas em (ver pergunta): Como habilitar o suporte a HTTP / 2 no Apache , última atualização em 5 nov 2017.

Aviso de isenção

Faça por sua conta e risco; não use este analisador em nenhum servidor de produção. Você é bem-vindo ;-).

Resposta

Cite, mesmo tutorial chamado antes:

Apache 2.4.27, HTTP/2 not supported in prefork

Devemos alterar o modo prefork para o evento mode ou worker, mas ATENÇÃO você precisará usar PHP como FastCGI .

Passo a passo

Primeiro passo

Primeiro adicione o repositório do Ondřej Surý (por favor note os caracteres UTF8) no seu Ubuntu, estas instruções foram tiradas deste O tutorial do DigitalOcean . Você precisará dos direitos de root, aqui usaremos o comando 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

Etapa dois

sudo apt-get install php7.1

Sim, certo, sem brincadeira. Depois disso, o próximo passo.

Etapa três

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

Troubleshootting

Se você tiver algum problema com

sudo a2dismod php7.1

apenas tente isto:

sudo a2dismod php7.0

(tivemos este problema também: sudo a2dismod php7.1 )

Possível melhoria

Se você quiser usar o pacote mais recente:

sudo apt-get install php7.2-fpm

( Instalamos, veja a imagem )

Verificando um trabalho bem feito

Veja a próxima foto do nosso resultado e visite o link para seu próprio teste (defina o ufw primeiro!)

Verificação HTTP2.Pro

Conclusão

Uma tecnologia muito nova está chegando! Veja outros protocolos futuros aqui !

Obrigado por visitar o AskUbuntu!

por Jimmy Olano 16.12.2017 / 17:42