Centos パッケージ/yum から http/2 を有効にする方法は?

Centos パッケージ/yum から http/2 を有効にする方法は?

Centos 7 で次のバージョンの Apache を実行しています。

httpd.x86_64 2.4.6-97.el7.centos.5 @アップデート

httpd-tools.x86_64 2.4.6-97.el7.centos.5 @更新

これはシステムに付属しているデフォルトのパッケージです。http/2 をサポートできるようにしたいのですが、見つけた手順では、そのパラメータを使用してソフトウェアをビルド/構成する必要があります。ただし、更新を簡単にするために標準パッケージを使用しています。この機能を有効にして、同じ更新ツリーを使用する方法はありますか? または、より適切なパッケージ/リポジトリはありますか? または、既存のインストールを構成して http 2.0 を有効にする方法はありますか? 調べたところ、mod_http2.so が見つかりませんでした。これをインストールして構成で有効にし、Apache を最初から再構築しなくても済むようにする方法はありますか?

注: 既存の質問があります (PHP7 を使用した Apache 上の CentOS 7 上の HTTP/2)これについては5年前のことで、当時はhttp/2はそれほど安定/サポートされていなかったと言われていたので、より最新の回答を期待しています。

答え1

mod_http2.soCentOS7 はデフォルトで、 HTTP/2 を実装するためのモジュールを提供しない Apache httpd 2.4.6 を使用しています。

サポートされているソフトウェアを使用して再コンパイルせずに実行する方法は次のとおりです。

  • 有効にするソフトウェアコレクションリポジトリ

    これらは、既存のパッケージの新しいバージョンを含む、サポートされている追加パッケージです。これらは別のディレクトリ (通常は/opt/rh) にインストールされるため、元のバージョンと競合することはありません。これは、一部の機能を使用するために少し手間がかかることも意味します。

    yum install centos-release-scl
    

    これにより、追加のパッケージを含む新しいリポジトリがインストールされます。

  • インストールhttpd24

    yum install httpd24
    

    ほとんどの場合、実際のパッケージがプルされますが、この回答にとってさらに重要なのは、 HTTP/2 プロトコルを実装するライブラリhttpd24-httpdが順番にプルされることです。httpd24-libnghttp2

  • 新しいインストールを独自の構成ディレクトリで構成する

    多くの人と同じように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
    

    新しいシェルは追加の環境を継承します:

    # 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

Red Hat / Fedora の手順については、こちらをご覧ください:https://www.ubuntupit.com/how-to-enable-http-2-in-apache-on-linux-system/

関連情報