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.so
mó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.
Instalar
httpd24
yum install httpd24
que en su mayoría extraerá el paquete real
httpd24-httpd
y, lo que es más importante para esta respuesta, extraerá a su vezhttpd24-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/httpd
ahora 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
Vea las instrucciones de Red Hat/Fedora aquí:https://www.ubuntupit.com/how-to-enable-http-2-in-apache-on-linux-system/