Estou executando a seguinte versão do Apache no Centos 7:
httpd.x86_64 2.4.6-97.el7.centos.5 @atualizações
httpd-tools.x86_64 2.4.6-97.el7.centos.5 @atualizações
Este é o pacote padrão que acompanha o sistema. Quero poder oferecer suporte a http/2, mas as instruções que encontrei exigem que eu crie/configure o software com esse parâmetro. No entanto, estou usando um pacote padrão para facilitar a atualização. Existe uma maneira de ativar esse recurso e ainda usar a mesma árvore de atualização? Ou existe um pacote/repo melhor para usar? Ou existe uma maneira de configurar a instalação existente para ativar o http 2.0? Olhei e não vi mod_http2.so - existe uma maneira de instalar isso e ativá-lo por meio da configuração para não precisar reconstruir o Apache do zero?
NOTA: Existe uma pergunta existente (HTTP/2 no CentOS 7 no Apache com PHP7) sobre isso, mas tem 5 anos e espero uma resposta mais atualizada, já que na época foi dito que http/2 não era tão estável/suportado
Responder1
Por padrão, o CentOS7 está preso ao Apache httpd 2.4.6, que não fornece o mod_http2.so
módulo para implementar HTTP/2.
Veja como fazer com software compatível e sem recompilação:
habilitar oRepositório de coleções de software
Estes são pacotes adicionais suportados, incluindo versões mais recentes de pacotes existentes. Eles são instalados em um diretório separado (geralmente
/opt/rh
) para que não entrem em conflito com a versão original. Isso também significa que há um pouco mais de esforço para usar alguns de seus recursos.yum install centos-release-scl
Isto irá instalar um novo repositório com os pacotes adicionais
Instalar
httpd24
yum install httpd24
que principalmente puxará o pacote real
httpd24-httpd
e, mais importante para esta resposta, puxará por sua vezhttpd24-libnghttp2
: Uma biblioteca que implementa o protocolo HTTP/2.configure a instalação mais recente em seus próprios diretórios de configuração
Como muitosSCLpacotes, este pacote deve ser instalado sem entrar em conflito com o pacote que está substituindo, em vez de atualizá-lo. A maioria dos arquivos de configuração normalmente encontrados
/etc/httpd
agora são encontrados em/opt/rh/httpd24/root/etc/httpd
.Portanto, copie e adapte (se houver algumas referências absolutas de diretório nas configurações, etc.) as configurações no novo local:
/opt/rh/httpd24/root/etc/httpd
Esta versão vem com HTTP/2 habilitado:
# grep -r http2 /opt/rh/httpd24/root/etc/httpd/ /opt/rh/httpd24/root/etc/httpd/conf.modules.d/00-base.conf:LoadModule http2_module modules/mod_http2.so
verificar a sintaxe etc.
Isso faz parte das peculiaridades do SCL. É necessário executar comandos preparatórios para usar o caminho e as bibliotecas corretos para os componentes adicionados.
Interativamente (mas um comando não interativo pode ser executado imediatamente):
# scl enable httpd24 -- bash -l
O novo shell herda ambiente adicional:
# printenv |grep /opt/rh MANPATH=/opt/rh/httpd24/root/usr/share/man: LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64 LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64 PATH=/opt/rh/httpd24/root/usr/bin:/opt/rh/httpd24/root/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin PKG_CONFIG_PATH=/opt/rh/httpd24/root/usr/lib64/pkgconfig
e agora pode executar comandos como:
# httpd -v Server version: Apache/2.4.34 (Red Hat) Server built: Feb 1 2022 14:11:48
Mudar o serviço
sistemaserviços já foram feitos para usar esse novo ambiente, então nada relacionado ao item anterior é necessário aqui
systemctl disable --now httpd systemctl enable --now httpd24-httpd
Responder2
Veja as instruções do Red Hat/Fedora aqui:https://www.ubuntupit.com/how-to-enable-http-2-in-apache-on-linux-system/