web-dev-qa-db-ja.com

Apache / 2.4.29でhttp2が機能しないのはなぜですか?

http2で実行しているApache/2.4.29Ubuntu 16.04モジュールを有効にしようとしましたが、機能しないようです。

私はこれが好きでした:

Sudo a2enmod http2

次に、以下を追加して個別にアクティブにします。

Protocols h2 http/1.1

私はmpm_preforkモジュールも実行しています。それがhttp2に問題を引き起こす可能性があります。そうであれば、代わりにmpm_preforkを実行する代わりの方法は何ですか?

共有サーバーを実行しているもう1つのことは、PHP=の実行のみを許可することです。私はsuPHPをチェックしていましたが、Webサイトで次のように述べています。

suPHPはもはやメンテナンスされておらず、セキュリティパッチでさえ、それ以上のアップデートを受信しません。

5
user134969

ここ はあなたを助けるかもしれない簡単な回避策です。

また、mpm_preforkおよびトラブルシューティングセクションの回避策 ここ

Apache 2.4.27以降、Apache MPM(Multi-Processing Module)プリフォークはHTTP/2をサポートしなくなりました。これは、Apacheエラーログで次のように示されます。AH10034:mpmモジュール(prefork.c)はmod_http2ではサポートされていません。 mpmは、サーバーでの処理方法を決定します。 HTTP/2にはこの点でより多くの要求があり、現在選択されているmpmはそうしません。これは勧告的な警告です。サーバーは引き続き機能しますが、HTTP/2プロトコルは非アクティブになります。

11
conorb

私は解決しました、私のケースはPHP、Pythonで、Django直接/プロキシ使用のApache2で、http2を使用できません。次に問題を見つけて以下のように解決します

apachectl stop
apt-get install php7.0-fpm # Install the php-fpm from your PHP repository. This package name depends on the vendor.
a2enmod proxy_fcgi setenvif
a2enconf php7.0-fpm # Again, this depends on your PHP vendor.
a2dismod php7.0 # This disables mod_php.
a2dismod mpm_prefork # This disables the prefork MPM. Only one MPM can run at a time.
a2enmod mpm_event # Enable event MPM. You could also enable mpm_worker.
apachectl start

あなたのローカルによれば、あなたはsetusに正しいphpバージョン、私の場合はphp7.0が必要です。 PHPがない場合は、phpに関連する手順を実行しないでください。

注:mpm_preforkは、http2およびパフォーマンスでもうまく機能しません。私の個人的な提案、mpm_eventまたはworkerを使用

上記の手順を設定したところ、すぐにH2プロトコルを取得しました。あなたの提案はコメントで大歓迎です

0
user1635700