Configurando HTTP / 2 usando Apache 2.4, PHP 7 e Ubuntu 18.04 LTS como exemplo

Entendo que, talvez, o Apache atualmente não seja a escolha preferida para o lançamento de novos projetos, no entanto, ele existe, vive e os projetos funcionam nele. A escolha para ele pode ser por alguma preferência pessoal, por requisitos de compatibilidade ou por outros motivos ... não é esse o ponto. Neste artigo, quero descrever passo a passo como configurar o suporte ao protocolo HTTP / 2 no servidor da web Apache, porque eu o uso pessoalmente e preciso dele nesse artigo, e espero que seja útil para alguém na prática também.

O que é HTTP / 2? Como o nome indica, esta é a segunda versão do protocolo HTTP. Você pode ler mais sobre os benefícios, pelo menos na Wikipedia . Em meu nome, direi apenas que, se você não está hospedando uma hospedagem compartilhada, é necessário ter suporte a este protocolo, além de, por exemplo, HTTPS. Sim, para que o HTTP / 2 funcione para você, você precisará de acesso total ao console da máquina (embora virtual) via ssh ou de alguma outra maneira, além de HTTPS (TLS / SSL) já configurado. Bem, vamos ao que interessa.

Primeiro passo Atualização do Apache


O protocolo HTTP / 2 é suportado pelo servidor Apache da versão 2.4.24; portanto, se você tiver uma versão mais antiga instalada, é hora de atualizá-la. Mas primeiro, verifique:

apache -v 

Este comando produzirá algo como isto:

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

A primeira linha mostra a versão do servidor. Se for maior ou igual a 2.4.24, podemos prosseguir com segurança para o segundo passo. Caso contrário, você precisará atualizar o Apache, cuja versão atual pode ser encontrada no PPA do famoso desenvolvedor (se você já precisou colocar algo novo no Debian / Ubuntu) - Ondřej Surý. Os PPAs são pacotes pessoais que não estão incluídos nos repositórios de distribuição oficiais. Portanto, para usá-los, primeiro você precisa ensinar ao sistema o que e onde obtê-lo:

 sudo add-apt-repository ppa:ondrej/apache2 

O cara está fazendo um bom trabalho, e não se importa de conseguir uma rosquinha pequena, o que é muito claro quando se liga aos nabos ...

Além disso, de fato, atualizamos os pacotes:

 sudo apt update sudo apt upgrade 

E, novamente, verificamos a versão do Apache. Se tudo der certo, o Apache será instalado no seu servidor, no qual você poderá configurar o HTTP / 2. Se tudo der errado - receio que este não seja o tópico deste artigo. Agora vá para o segundo passo.

Etapa dois Usando FastCGI


O que é o FastCGI - é melhor ler, como eu disse, pelo menos na Wikipedia , porque você não pode nos contar brevemente. Você precisa mudar para o PHP em execução no modo FastCGI (php-fpm). Como funciona - uma boa resposta é dada na Torradeira . Aqui não vou entrar em tais nuances, mas vou prosseguir imediatamente para a instalação:

 sudo apt install php-fpm 

Após a instalação, seremos literalmente informados o seguinte: para ativar o PHP 7.2 FPM no Apache2, faça:

 sudo a2enmod proxy_fcgi setenvif sudo a2enconf php7.2-fpm 

Nós fazemos isso. Depois disso, você precisa desativar o mod_php, porque agora você tem o php-fpm.

 sudo a2dismod php7.2 

De um modo geral, você pode ter uma versão diferente do PHP antes disso. Você pode ver os módulos que você instalou no sistema no diretório / etc / apache2 / mods-available / e que estão ativos no / etc / apache2 / mods-enabled

Em seguida, reinicie o Apache

 sudo service apache2 restart 

e vá para o terceiro passo.

Etapa três Mudando do Prefork para o Evento


O que é MPM e qual a diferença entre prefork, evento, worker - você pode ler aqui neste maravilhoso artigo ... mas agora é realmente importante saber apenas uma coisa: o prefork "padrão" não é muito compatível com HTTP / 2, portanto, você deve usar um mais adequado . Desligue um, ligue o outro, reinicie o Apache.

 sudo a2dismod mpm_prefork sudo a2enmod mpm_event service apache2 restart 

O quarto passo. Ativar HTTP / 2


No arquivo de configuração do host, que pode ser encontrado no diretório / etc / apache2 / sites-enabled / , ou na configuração do servidor /etc/apache2/apache2.conf , dizemos que precisamos de suporte para o novo protocolo:
Protocols h2 h2c http/1.1

O que realmente importa é h2 . Dois outros pontos estão a seu critério. h2c é suporte a HTTP / 2 sobre TCP (não TLS). http / 1.1 - suporte para a versão antiga do HTTP.

Ligue o módulo http2 e reinicie o servidor:

 sudo a2enmod http2 service apache2 restart 

Chegaram


De agora em diante. Seu recurso deve começar a trabalhar com HTTP / 2. Se você usa o Chrome acessando o recurso, verá como o raio no canto superior direito do navegador acende em azul. Passando o mouse sobre ele, você verá o prompt habilitado para HTTP / 2 (h2). No Firefox, vá para o painel do desenvolvedor e, na guia Rede, ative a coluna Protocolo - para obter recursos do seu site, o HTTP / 2.0 deve estar listado. Você também pode verificar se seu recurso suporta esse protocolo em um dos muitos sites na Web. Mas não relaxe, porque o HTTP / 3está seguindo :)

Source: https://habr.com/ru/post/pt430188/


All Articles