Como habilitar http/2 de um pacote Centos/yum?

Como habilitar http/2 de um pacote Centos/yum?

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.somó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

  • Instalarhttpd24

    yum install httpd24
    

    que principalmente puxará o pacote real httpd24-httpde, mais importante para esta resposta, puxará por sua vez httpd24-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/httpdagora 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

informação relacionada