例としてApache 2.4、PHP 7、Ubuntu 18.04 LTSを使用してHTTP / 2を構成する

おそらく、Apacheは新しいプロジェクトを起動するための現在の選択肢ではないかもしれませんが、Apacheは存在し、存続し、プロジェクトは機能します。 彼の選択は、個人的な好み、互換性の要件、またはその他の理由のためではなく、ポイントではありません。 この記事では、Apache WebサーバーでHTTP / 2プロトコルのサポートを設定する方法をステップごとに説明します。私はそれを自分で使用 、そのような記事でそれ必要としているので、実際に誰かに役立つことを願っています。



HTTP / 2とは何ですか? 名前が示すように、これはHTTPプロトコルの2番目のバージョンです。 少なくともWikipediaで利点についての詳細を読むことができます。 私に代わって、共有ホスティングをホストしていない場合は、このプロトコルをサポートする必要があります。たとえば、HTTPSも必要です。 はい。HTTP/ 2が機能するためには、sshまたはその他の方法で、マシンのコンソール(仮想)に完全にアクセスする必要があります。また、既に構成済みのHTTPS(TLS / SSL)が必要です。 さて、ビジネスに取りかかりましょう。



最初のステップ。 Apacheアップデート



HTTP / 2プロトコルはバージョン2.4.24からのApacheサーバーでサポートされているため、古いバージョンがインストールされている場合は、それを更新します。 しかし、最初に確認してください:



apache -v
      
      





このコマンドは次のようなものを生成します。



 Server version: Apache/2.4.37 (Ubuntu) Server built: 2018-10-28T15:27:08
      
      





最初の行は、サーバーのバージョンを示しています。 2.4.24以上であれば、安全に2番目のステップに進むことができます。 それ以外の場合は、Apacheを更新する必要があります。Apacheの現在のバージョンは、有名な開発者のPPAで見つけることができます(すでにDebian / Ubuntuに新しいものを追加する必要がある場合)-OndřejSurý。 PPAは、公式の配布リポジトリに含まれていない個人用パッケージです。 したがって、それらを使用するには、まずシステムに何をどこで入手するかを教える必要があります。



 sudo add-apt-repository ppa:ondrej/apache2
      
      





男は良い仕事をしていて、小さなドーナツを手に入れることを気にしません。これは彼のカブに接続するときに非常に明確に述べられています...



さらに、実際には、パッケージを更新します。



 sudo apt update sudo apt upgrade
      
      





また、Apacheのバージョンを確認します。 すべてがうまくいけば、Apacheがサーバーにインストールされ、HTTP / 2を構成できます。 すべてがうまくいかなかった場合-これはこの記事のトピックではないようです。 次に、2番目のステップに進みます。



ステップ2 FastCGIを使用する



FastCGIとは何ですか-少なくともWikipediaで述べたように、簡単に説明することはできないため、読んでおく方が良いでしょう。 FastCGIモードで実行しているPHP(php-fpm)に切り替える必要があります。 仕組み- トースターで適切な答えが得られます。 ここではそのようなニュアンスには触れませんが、すぐにインストールに進みます。



 sudo apt install php-fpm
      
      





インストール後、文字通り次のように通知されます。Apache2でPHP 7.2 FPMを有効にするには、次のようにします。



 sudo a2enmod proxy_fcgi setenvif sudo a2enconf php7.2-fpm
      
      





します。 その後、mod_phpを無効にする必要があります。その代わりに、現在php-fpmがあります。



 sudo a2dismod php7.2
      
      





一般的に言えば、それまでに異なるバージョンのPHPを使用していた可能性があります。 / etc / apache2 / mods-available /ディレクトリのシステムにインストールしたモジュールを見ることができ、 / etc / apache2 / mods-enabledでアクティブになっています。



次に、Apacheを再起動します



 sudo service apache2 restart
      
      





そして、3番目のステップに進みます。



ステップ3 Preforkからイベントへの切り替え



MPMとは何か、prefork、event、workerの違いは何ですか? この素晴らしい記事でここで読むことができます...しかし、今では、「標準」preforkはHTTP / 2とあまり互換性がないため、より適切なものを使用する必要があります。 。 一方をオフにし、もう一方をオンにして、Apacheを再起動します。



 sudo a2dismod mpm_prefork sudo a2enmod mpm_event service apache2 restart
      
      





4番目のステップ。 HTTP / 2を有効にする



/ etc / apache2 / sites-enabled /ディレクトリまたは/etc/apache2/apache2.confサーバーの構成自体にあるホスト構成ファイルのいずれかで、新しいプロトコルのサポートが必要であると言います。

Protocols h2 h2c http/1.1







本当に重要なのはh2です。 他の2つのポイントはあなたの裁量です。 h2cは、TCPを介したHTTP / 2サポートです(TLSではありません)。 http / 1.1 -HTTPの古いバージョンのサポート。



http2モジュールをオンにして、サーバーを再起動します。



 sudo a2enmod http2 service apache2 restart
      
      





到着しました



これから。 リソースはHTTP / 2で動作を開始するはずです。 リソースにアクセスしてChromeを使用すると、ブラウザーの右上隅にある稲妻が青色に点灯する様子がわかります。 その上にカーソルを合わせると、HTTP / 2対応(h2)プロンプトが表示されます。 Firefoxで、開発者パネルに移動し、[ネットワーク]タブで[プロトコル]列をオンにします。サイトのリソースについては、HTTP / 2.0がリストされているはずです。 リソースがWeb上の多くのサイトの1つでこのプロトコルをサポートしているかどうかも確認できます。 しかし、 HTTP / 3は既にその真っon中にあるので、リラックスしないでください:)



All Articles