web-dev-qa-db-fra.com

HTTP 2 ne fonctionne pas dans Ubuntu 16.04 avec Apache2: Comment puis-je déboguer cela?

Informations système:

Ubuntu 16.04

Apache 2.4.29

PHP 7.0.22 (CLI)

Afin d’activer Apache 2, j’ai suivi les étapes suivantes de ce tutoriel: https://http2.pro/doc/Apache .

Comprenant:

Ajout de Protocols h2 h2c http/1.1 à Apache2.conf ainsi qu’au Virtual Hosts configuration.

A réussi:

a2enmod mpm_event
a2enmod http2 

Redémarré:

service Apache2 restart
Sudo service php7.0-fpm reload

Le serveur refuse toujours de parler HTTP 2 . Essayé divers tutoriels.

Ubuntu est relativement nouveau pour moi: que puis-je manquer et quelles étapes puis-je suivre pour résoudre ce problème?

2
Blackbam

Problème

Parcourir l'archive /var/log/Apache2/error.log contient quelque chose comme ceci:

[http2: warn] [pid 3220] AH10034: Le module mpm modum (prefork.c) n'est pas pris en charge par mod_http2. Le mpm détermine la façon dont les choses sont traitées sur votre serveur. HTTP/2 a plus de demandes à cet égard et le mpm actuellement sélectionné ne le fera tout simplement pas. Ceci est un avertissement. Votre serveur continuera à fonctionner, mais le protocole HTTP/2 sera inactif.

Prérequis

Exécuter à la commande de terminal pour obtenir vos propres variables:

  • Version Ubuntu: lsb_release -a
  • Version Apache: Apache2 -v
  • Version PHP: php -v

Cette question est pour:

Ubuntu 16.04
Apache 2.4.29
PHP 7.0.22 (CLI)

Cette réponse est exactement pour:

Ubuntu 16.04.3 LTS
Apache/2.4.29 (Ubuntu)
PHP 7.1.12-3+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Dec 14 2017 15:37:13)

Le PHP 7.1.12 a été construit en suivant les étapes décrites à (voir question): Comment activer le support HTTP/2 dans Apache , dernière mise à jour le 5 nov 2017.


Avertissement

Faites-le à vos risques et périls; n'utilisez pas cette réponse sur un serveur de production. Je vous en prie ;-) .


Répondre

Citer, même tutoriel nommé avant:

Apache 2.4.27, HTTP/2 non pris en charge dans prefork

Nous devons changer le mode prefork en mode event ou worker, mais ATTENTION, vous devrez utiliser PHP comme FastCGI .

Pas à pas

Première étape

Ajoutez d’abord le référentiel d’Ondřej Surý (notez les caractères UTF8) à votre Ubuntu. Ces instructions sont extraites de ce tutoriel de DigitalOcean . Vous aurez besoin des droits root, ici nous allons utiliser la commande Sudo :

Sudo add-apt-repository ppa:ondrej/php
Sudo apt-get install -y language-pack-en-base
Sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
Sudo apt-get update

Deuxième étape

Sudo apt-get install php7.1

Ouais, c'est vrai, sans blague. Après cela, prochaine étape.

Troisième étape

Sudo apachectl stop
Sudo apt-get install php7.1-fpm 
Sudo a2enmod proxy_fcgi setenvif
Sudo a2enconf php7.1-fpm 
Sudo a2dismod php7.1 
Sudo a2dismod mpm_prefork 
Sudo a2enmod mpm_event 
Sudo apachectl start

Dépannage

Si vous avez un problème avec

Sudo a2dismod php7.1

essayez juste ceci:

Sudo a2dismod php7.0

(Nous avons eu ce problème aussi: Sudo a2dismod php7.1 )

Amélioration possible

Si vous voulez utiliser le dernier pack:

Sudo apt-get install php7.2-fpm

( Nous l'avons installé, voir l'image )

Vérifier un travail bien fait

Voir la photo suivante pour notre résultat et visiter https://http2.pro pour votre propre test (définir ufw en premier!)

vérification HTTP2.Pro

Conclusion

Une toute nouvelle technologie arrive! Voir autre futurs protocoles ici !

Merci de visiter AskUbuntu!


3
Jimmy Olano