如何從 Centos Package/yum 啟用 http/2?

如何從 Centos Package/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 上的 HTTP/2 Apache 和 PHP7)關於這個,但它已經有 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 協定的函式庫。

  • 在其自己的配置目錄中配置較新的安裝

    像許多人一樣SCL包,此包的安裝目的是不要與它所替換的包發生衝突,而不是更新它。通常在 中找到的大多數設定檔/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
    
  • 切換服務

    系統服務已經可以使用這個新環境,因此這裡不需要與上一個項目相關的任何內容

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

答案2

相關內容