DirectAdmin(CentOS)でHTTP / 2サポートをアクティブにする方法

HTTP / 2は、SPDYに基づくHTTPプロトコルの最新バージョンです。その開発はGoogleによって開始され、HTTP / 2は主にコードベースとSPDYの概念に基づいています。

SPDYは非推奨となり、HTTP / 2の世界的な採用が進んでいます。多くのホスティング企業は、追加された速度のためにHTTP / 2のサポートをすでに提供しています。

執筆時点では、DirectAdminはHTTP / 2を有効にするワンクリックの方法を提供していません。ただし、HTTP / 2サポートを実現するには複数の方法があります。以下に概説する方法は、最も堅牢で安定したアプローチであることが証明されています。

HTTP / 2を有効にするには、いくつかのコンポーネントを更新する必要があります。このため、スナップショットを取ることを強くお勧めします。可能であれば、完全に新しいサーバーでこのガイドに従ってください。

このガイドは、クライアント(訪問者)のWebサーバー(Apache)でのHTTP / 2サポートの有効化と、cURLでのHTTP / 2のアクティブ化の2つの部分で構成されています。cURLに対してHTTP v2を有効にすると、サーバーから発信されたcURL要求は、可能であれば、宛先サーバーにHTTP / 2を利用するようになります。

キーポイント

  • HTTP / 2を使用するためにApacheとcURLの両方を更新する必要はありません。どちらのガイドも互いに独立して機能するため、どちらのガイドに従っても問題ありません。
  • ApacheとHTTP / 2が正常に機能しているように見える奇妙なケースがいくつかありますが、「ランダムな」ブラウザーでロードが成功し、他のブラウザーではサイトが到達不能(タイムアウト)になります。ApacheはHTTP / 2を認識せず、コンテンツを提供しようとしないため、元のApache構成に戻すだけでこれが修正されます。
  • 常に事前にバックアップを取るか、スナップショットを作成してください。HTTP / 2の有効化は比較的脆弱なプロセスになる可能性があるため、必要に応じて変更を元に戻すことができることが重要です。
  • ソフトウェアを再コンパイルすると、常にわずかなダウンタイムが発生する可能性があります。場合によっては、これは1分未満ですが、正確に伝える方法がありません。少なくとも、ある程度のダウンタイムに備える必要があります。
  • このガイドでは、サーバーへのrootアクセスが必要です。アクセス許可レベルをrootに上げることができない場合は、サーバー管理者に連絡してサーバーでHTTP / 2を有効にする必要があります。

HTTP / 2およびSSL

これはHTTP / 2自体の技術要件ではありませんが、ほとんどの場合、HTTP / 2を使用するにはSSL証明書が必要です。前述のように、HTTP / 2は技術的にこれを必要としませんが、多くのブラウザー(Safari、Chrome、Firefoxなど)がこの標準を作成しています。これらのブラウザーを使用してSSLなしでページをロードすると、コンテンツはHTTP / 2経由で提供されません。ほとんどのユーザーがこの標準に参加しているこれらのブラウザー(およびその他のブラウザー)を使用することを考慮して、SSL証明書を使用する必要があります。

無料のSSL証明書をお探しの場合は、Let's Encryptガイドの1つをご覧ください。

推奨:DirectAdminにLet's Encryptをインストールする

代替制御パネル:

一般的なガイド:

よくある質問

このガイドでは、Brotliのインストールについて説明していますか?

いいえ、この記事では、HTTP / 2と一緒にBrotliをインストールする方法を概説していません。

コンパイルは理由もなく失敗し、私はこの記事で概説されている正確な手順に従いました。どうすれば解決できますか?

これには多くの理由が考えられますが、さまざまな環境などを考慮すると、ロケール設定が正しくない可能性があります。LC_ALL=Cコマンドの前に置くと、Apacheを再コンパイルするためのコマンドは、たとえば次のようになります。とコマンドのLC_ALL=C ./build apache 間のスペースを忘れないでくださいLC_ALL=C

データは失われますか?

ApacheやNginxなどで現在リバースプロキシセットアップを使用している場合は、Apacheに戻す必要があります。この場合、Nginx構成ファイルは実際に失われます。カスタムのVirtualHost構成を作成した場合(コマンドラインまたはDirectAdmin自体を使用)、Apacheバージョンがアクティブなままになるように、ドメインごとにこれらを変更する必要があります。ユーザーデータ、ウェブサイトのコンテンツ、データベースなどに関するデータを失うことはありません。

これらのカスタムバージョンにより、将来パッケージやソフトウェアを更新できなくなりますか?

通常、このことを心配する必要はありません。DirectAdminのモジュラーセットアップ(したがってCustomBuildのセットアップ)を考慮すると、問題なく他のソフトウェアバージョンにダウングレードまたはアップグレードできるはずです。将来、別のアップグレードパスが必要になった場合に備えて変更を文書化する必要がありますが、新しいソフトウェアリリースとの非互換バージョンについて心配する必要はありません。

DirectAdminはそのままではHTTP / 2を提供しません。確かにそれは互換性がないか、そうでない理由があるということです。なぜこの回避策が必要なのですか?

以下で説明するHTTP / 2のインストールと有効化の方法はあまり回避策ではなく、単にパッケージの更新と構成の変更にすぎません。DirectAdminのモジュラーセットアップにより、これらの変更は完全に問題なく、問題やその他の問題を引き起こすことはありません。作者がこれについての説明をしていないので、DirectAdminがそのままではこれをサポートしない理由を特定するのは困難です。ただし、かなり確かな結論として、DirectAdminはオペレーティングシステムによってバージョンパッケージを使用します。これらは通常、以下のパッケージほど最新ではありません。HTTP / 2、テクノロジー自体、およびその互換性に問題はありません。他の多くのテクノロジーと同様に、ネイティブに適応するには時間がかかる場合があります。

ApacheでHTTP / 2をアクティブ化することで起こり得るリスクは何ですか?

HTTP / 2のアクティブ化(アップグレードおよび構成プロセスで構成される)には、非標準であることが判明する可能性のある多くの変数があります。ただし、最大のリスクは人的ミスにあります。事前にスナップショットを作成し、メンテナンスをユーザーに通知し(サーバー上に自分以外に存在する場合)、注意してください。さらに、最初に何をするかを考えずにコマンドをコピーして貼り付けないでください。

DirectAdminを使用して個別のVultrクラウドインスタンスを一時的に起動し、手順を実行することを強くお勧めします。「新規」インストールで問題が発生した場合は、どこでどのようにデバッグすればよいかがわかるので、実稼働環境で行う必要はありません。

パート1:Apache(Webサーバー)

現在リバースプロキシを使用している場合は、Apacheのみの環境に切り替える必要があります。これは、問題が発生した場合、HTTP / 2はデバッグが非常に難しいためです。Apacheの統合されたHTTP / 2機能を利用できることで、トラブルの大部分を効果的に排除できます。

ステップ1:OpenSSLのアップグレード

多くの場合、OpenSSLバージョンは、HTTP / 2に必要なALPNと互換性がありません。したがって、OpenSSLを更新してALPNを有効にしましょう。

まず、次のコマンドを実行して、OpenSSLのバージョンに互換性がないことを確認します。

openssl version

OpenSSLのバージョンが1.1.0f未満の場合は、rootとして以下を実行します。それ以外の場合は、手順2に進みます。

cd ~
wget ftp://ftp.openssl.org/source/openssl-1.1.0f.tar.gz
tar xzf openssl-1.1.0f.tar.gz
cd openssl-1.1.0f
./config --prefix=/usr/local/lib_http2 no-ssl2 no-ssl3 zlib-dynamic -fPIC
make depend
make install

ステップ2:nghttp2のインストール

HTTP / 2が機能するためには、nghttp2をインストールする必要があります。Nghttp2は、CでのHTTP / 2(およびHPACK)の実装です。Nghttp2は、CでのHTTP / 2クライアント、サーバー、およびプロキシを組み合わせたバージョンです。

nghttp2をインストールするには、次のコマンドを実行します。幸い、nghttp2はCustomBuildから直接ビルドできます。

cd /usr/local/directadmin/custombuild
./build update
./build nghttp2

ステップ3:ApacheでHTTP / 2を有効にする

HTTP / 2を使用するには、Apache構成ファイルのいくつかの値を��更する必要があります。Webサーバーが代替HTTPバージョンを使用するための指示を取得していない場合、それはそれを利用しません。したがって、HTTP / 2を構成ファイルに追加する必要があります。

これらの変更を有効にするには、CustomBuildによるApacheの再構築が必要です。ソフトウェアのビルド時にCustomBuildで使用されるパラメーターと値は専用の構成ファイルで決定されるため、ベストプラクティスはこれらの変更を専用のカスタム構成ファイルに入れることです。

注:これらの変更をカスタムファイルに含めない場合、変更が上書きされる可能性が高く、セットアップが中断します。以下の説明に従ってください。

次のコマンドを実行してファイルを作成し、デフォルト値を事前に入力して、後で変更できるようにします。

mkdir -p /usr/local/directadmin/custombuild/custom/ap2
cp -p /usr/local/directadmin/custombuild/configure/ap2/configure.apache /usr/local/directadmin/custombuild/custom/ap2/configure.apache

現在のところ、CustomBuildで使用されるApacheのデフォルト設定ファイルと同じカスタムファイルがあります。/usr/local/directadmin/custombuild/custom/ap2/configure.apache次の文字列を置き換えることにより、ファイルを変更する必要があります。

"--with-ssl=/usr" \

と:

"--enable-http2" \
"--enable-ssl-staticlib-deps" \
"--with-ssl=/usr/local/lib_http2" \

注:バックスラッシュの後に空白ないことを確認してください。余計な空白があると、ビルドが中断します。

次に、Apacheを再ビルドします。CustomBuildは、作成したばかりのカスタム構成ファイルを使用します。

./build apache

ステップ4:Apache構成の変更

Apacheは、HTTP / 2に必要なモジュールと設定を含めて再構築されました。つまり、HTTP / 2をサポートするApacheバージョンがサーバーにインストールされましたが、実際にそれを最初に使用するようApacheに指示する必要があります。

次の行を追加します/etc/httpd/conf/extra/httpd-includes.conf

ProtocolsHonorOrder On
Protocols h2 h2c http/1.1

これらの変更を保存して構成ファイルを書き直し、再構築後も永続的になるようにします。

cd /usr/local/directadmin/custombuild
./build rewrite_confs

HTTP / 2がWeb(Apache)サーバーでアクティブになっているはずです。

ステップ5:サーバーを再起動する

サーバーを再起動して、再起動後も変更が維持されることを確認します。Vultrコントロールパネルから、またはrebootコマンドを実行してサーバーを再起動してください。

ステップ6:HTTP / 2をテストする

HTTP / 2の機能は、次のツールを使用して簡単にテストできます。HTTP/ 2テスト

HTTP / 2はサーバー固有であり、特定のドメインまたはWebサイトのペアに制限できないため、サーバーを指すドメイン名を入力するか、サーバーのIPアドレスでさえ機能するはずです。

テストは、HTTP / 2を介してWebサーバーに到達できるかどうかを通知します。サーバーでHTTP / 2がアクティブになっているとツールが言った場合、DirectAdmin WebサイトにはHTTP / 1.1またはHTTP / 2のいずれかでアクセスできます。クライアント(ビジター)がHTTP / 2サポートを利用できない場合、ブラウザーはHTTP / 1.1にフォールバックします。

ツールがHTTP / 2経由でWebサーバーに到達できない場合は、上記の手順を再度実行してください。一般に(上記の手順では何もアクティブに上書きされないため)、これによってセットアップが破損したり壊れたりすることはありません。

パート2:cURL

HTTP / 2をサポートするサーバーに到達できるようにcURLを更新することをお勧めします。サーバーがHTTP / 2をサポートしていない場合は、HTTP / 1.1にフォールバックします。

ステップ1:カスタム構成ファイルを追加する

Apacheと同様に、カスタム構成ファイルを作成して、CustomBuildによって構築されたcURLがカスタム設定を使用するようにします。

ディレクトリを作成します。

mkdir -p /usr/local/directadmin/custombuild/custom/curl

ファイルを作成します。

touch /usr/local/directadmin/custombuild/custom/curl/configure.curl

次の内容をコピーしてファイルに貼り付けます。

#!/bin/sh
perl -pi -e 's|CURL_CHECK_PKGCONFIG\(zlib\)|#CURL_CHECK_PKGCONFIG(zlib)|g' configure.ac
LIBS="-ldl" ./configure --with-nghttp2=/usr/local --with-ssl=/usr/local/lib_http2

ご覧のとおり、これらのコンテンツはcURLにlib_http2SSLライブラリを使用してコンパイルするように指示しています。

ファイルを保存して、適切な権限を付与します。

chmod 700 /usr/local/directadmin/custombuild/custom/curl/configure.curl

ステップ2:cURLを構築する

次に、cURLを作成するだけです。

cd /usr/local/directadmin/custombuild
./build curl

cURLがHTTP 2サポート付きでコンパイルされました。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。