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-enabledEm 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 / 3 já
está seguindo :)