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.so
CentOS7 はデフォルトで、 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/