如何从 Centos 包/yum 启用 http/2?

如何从 Centos 包/yum 启用 http/2?

我在 Centos 7 上运行以下版本的 Apache:

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

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

这是系统自带的默认软件包。我希望能够支持 http/2,但我找到的说明要求我使用该参数构建/配置软件。但是,我使用标准软件包以便于更新。有没有办法启用此功能并仍然使用相同的更新树?或者有没有更好的软件包/存储库可用?或者有没有办法配置现有安装以启用 http 2.0?我查看了但没有看到 mod_http2.so - 有没有办法安装它然后通过配置启用它,这样我就不必从头开始重新构建 Apache?

注意:有一个现有问题(CentOS 7 上基于 Apache 和 PHP7 的 HTTP/2)但这个问题已经有 5 年了,我希望得到一个更新的答案,因为当时有人说 http/2 不太稳定/支持

答案1

CentOS7 默认使用 Apache httpd 2.4.6,它不提供mod_http2.so实现 HTTP/2 的模块。

使用受支持的软件且无需重新编译的操作方法如下:

  • 启用软件集合存储库

    这些是受支持的附加软件包,包括现有软件包的较新版本。它们安装在单独的目录中(通常/opt/rh),因此不会与原始版本冲突。这也意味着使用它们的某些功能需要付出更多努力。

    yum install centos-release-scl
    

    这将安装一个带有附加软件包的新存储库

  • 安装httpd24

    yum install httpd24
    

    它主要会拉取实际的包httpd24-httpd,对于这个答案来说更重要的是,会依次拉取httpd24-libnghttp2:一个实现 HTTP/2 协议的库。

  • 在自己的配置目录中配置较新的安装

    像许多人一样新加坡软件包,此软件包旨在不与它所替换的软件包冲突的情况下进行安装,而不是更新它。通常在 中找到的大多数配置文件/etc/httpd现在可以在 中找到/opt/rh/httpd24/root/etc/httpd

    因此,请复制并调整(如果配置等中有一些绝对目录引用)新位置的设置:/opt/rh/httpd24/root/etc/httpd

    此版本启用了 HTTP/2:

    # 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
    
  • 验证语法等

    这是 SCL 的特性之一。必须运行准备命令才能使用添加组件的正确路径和库。

    以交互方式(但可以立即运行非交互命令):

    # scl enable httpd24 -- bash -l
    

    新的 shell 继承了附加环境:

    # 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
    

    现在可以运行如下命令:

    # httpd -v
    Server version: Apache/2.4.34 (Red Hat)
    Server built:   Feb  1 2022 14:11:48
    
  • 切换服务

    systemd服务已经可以使用这个新环境,因此这里不需要与上一个项目相关的内容

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

答案2

相关内容