¿Cómo habilitar http/2 desde un paquete Centos/yum?

¿Cómo habilitar http/2 desde un paquete Centos/yum?

Estoy ejecutando la siguiente versión de Apache en Centos 7:

httpd.x86_64 2.4.6-97.el7.centos.5 @actualizaciones

httpd-tools.x86_64 2.4.6-97.el7.centos.5 @actualizaciones

Este es el paquete predeterminado que viene con el sistema. Quiero poder soportar http/2 pero las instrucciones que encontré requieren que cree/configure el software con ese parámetro. Sin embargo, estoy usando un paquete estándar para facilitar la actualización. ¿Hay alguna manera de habilitar esta función y seguir usando el mismo árbol de actualización? ¿O hay un paquete/repositorio mejor para usar? ¿O hay alguna manera de configurar la instalación existente para habilitar http 2.0? Miré y no vi mod_http2.so. ¿Hay alguna manera de instalarlo y luego habilitarlo mediante la configuración para no tener que reconstruir Apache desde cero?

NOTA: Hay una pregunta existente (HTTP/2 en CentOS 7 en Apache con PHP7) sobre esto, pero tiene 5 años y espero una respuesta más actualizada ya que en ese momento se dijo que http/2 no era tan estable/soportado

Respuesta1

CentOS7 de forma predeterminada está bloqueado con Apache httpd 2.4.6 que no proporciona el mod_http2.somódulo para implementar HTTP/2.

A continuación se explica cómo hacerlo con software compatible y sin recompilación:

  • habilitar elRepositorio de colecciones de software

    Estos son paquetes adicionales compatibles, incluidas versiones más recientes de paquetes existentes. Se instalan en un directorio separado (normalmente /opt/rh) para que no entren en conflicto con la versión original. Esto también significa que hay un poco más de esfuerzo para utilizar algunas de sus funciones.

    yum install centos-release-scl
    

    Esto instalará un nuevo repositorio con los paquetes adicionales.

  • Instalarhttpd24

    yum install httpd24
    

    que en su mayoría extraerá el paquete real httpd24-httpdy, lo que es más importante para esta respuesta, extraerá a su vez httpd24-libnghttp2: una biblioteca que implementa el protocolo HTTP/2.

  • configurar la instalación más nueva en sus propios directorios de configuración

    Como muchosSCLpaquetes, este paquete está diseñado para instalarse sin entrar en conflicto con el paquete que reemplaza, en lugar de actualizarlo. La mayoría de los archivos de configuración que normalmente se encuentran /etc/httpdahora se encuentran en formato /opt/rh/httpd24/root/etc/httpd.

    Así que copie y adapte (si hay algunas referencias absolutas al directorio en las configuraciones, etc.) la configuración en el nuevo lugar:/opt/rh/httpd24/root/etc/httpd

    Esta versión viene con 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 la sintaxis, etc.

    Esto es parte de las peculiaridades de SCL. Se deben ejecutar comandos preparatorios para utilizar la ruta y las bibliotecas correctas para los componentes agregados.

    De forma interactiva (pero en su lugar se podría ejecutar inmediatamente un comando no interactivo):

    # scl enable httpd24 -- bash -l
    

    El nuevo shell hereda un entorno 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
    

    y ahora puede ejecutar comandos como:

    # httpd -v
    Server version: Apache/2.4.34 (Red Hat)
    Server built:   Feb  1 2022 14:11:48
    
  • Cambiar el servicio

    sistemadLos servicios ya están diseñados para utilizar este nuevo entorno, por lo que aquí no se necesita nada relacionado con el punto anterior.

    systemctl disable --now httpd
    systemctl enable --now httpd24-httpd
    

Respuesta2

información relacionada