Configuration de HTTP / 2 en utilisant Apache 2.4, PHP 7 et Ubuntu 18.04 LTS comme exemple

Je comprends que Apache n'est peut-être pas actuellement le choix préféré pour lancer de nouveaux projets dessus, néanmoins, il existe, vit et les projets y travaillent. Le choix pour lui peut tomber pour une préférence personnelle, pour des exigences de compatibilité, ou pour d'autres raisons ... pas le point. Dans cet article, je veux décrire étape par étape comment configurer la prise en charge du protocole HTTP / 2 sur le serveur Web Apache, car je l'utilise moi-même et j'en ai besoin dans un tel article, et j'espère que cela sera utile à quelqu'un dans la pratique également.

Qu'est-ce que HTTP / 2? Comme son nom l'indique, il s'agit de la deuxième version du protocole HTTP. Vous pouvez en savoir plus sur les avantages au moins sur Wikipedia . Je dirai tout seul que si vous n'hébergez pas d'hébergement mutualisé, la prise en charge de ce protocole est un must have, ainsi que, par exemple, HTTPS. Oui, pour que HTTP / 2 fonctionne pour vous, vous aurez besoin d'un accès complet à la console de la machine (bien que virtuelle) via ssh ou d'une autre manière, ainsi que HTTPS déjà configuré (TLS / SSL). Eh bien, passons aux choses sérieuses.

Première étape. Mise à jour Apache


Le protocole HTTP / 2 est pris en charge par le serveur Apache à partir de la version 2.4.24, donc si vous avez une ancienne version installée, il est temps de la mettre à jour. Mais d'abord, vérifiez:

apache -v 

Cette commande produira quelque chose comme ceci:

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

La première ligne montre la version du serveur. S'il est supérieur ou égal à 2.4.24, nous pouvons procéder en toute sécurité à la deuxième étape. Sinon, vous devez mettre à jour l'Apache, dont vous pouvez trouver la version actuelle dans le PPA du célèbre développeur (si vous deviez déjà mettre quelque chose de nouveau sur Debian / Ubuntu) - Ondřej Surý. Les PPA sont des packages personnels qui ne sont pas inclus dans les référentiels de distribution officiels. Par conséquent, pour les utiliser, vous devez d'abord enseigner au système quoi et où l'obtenir:

 sudo add-apt-repository ppa:ondrej/apache2 

Le mec fait du bon travail, et ça ne me dérange pas d'avoir un petit beignet, ce qui est très clairement indiqué lors de la connexion à ses navets ...

De plus, en fait, nous mettons à jour les packages:

 sudo apt update sudo apt upgrade 

Et encore une fois, nous vérifions la version d'Apache. Si tout s'est bien passé, Apache sera installé sur votre serveur, sur lequel vous pourrez configurer HTTP / 2. Si tout s'est mal passé - je crains que ce ne soit pas le sujet de cet article. Passez maintenant à la deuxième étape.

Deuxième étape Utilisation de FastCGI


Qu'est-ce que FastCGI - il vaut mieux lire, comme je l'ai dit, au moins sur Wikipédia , car vous ne pouvez pas nous le dire brièvement. Vous devez passer à PHP fonctionnant en mode FastCGI (php-fpm). Comment cela fonctionne - une bonne réponse est donnée sur le grille - pain . Ici, je n'entrerai pas dans de telles nuances, mais je procéderai immédiatement à l'installation:

 sudo apt install php-fpm 

Après l'installation, on nous dira littéralement ce qui suit: pour activer PHP 7.2 FPM dans Apache2, faites:

 sudo a2enmod proxy_fcgi setenvif sudo a2enconf php7.2-fpm 

Nous le faisons. Après cela, vous devez désactiver mod_php, car au lieu de cela, vous avez maintenant php-fpm.

 sudo a2dismod php7.2 

De manière générale, vous pourriez avoir eu une version différente de PHP avant cela. Vous pouvez consulter les modules que vous avez installés dans le système dans le répertoire / etc / apache2 / mods-available / , et qui sont actifs dans / etc / apache2 / mods-enabled

Ensuite, redémarrez Apache

 sudo service apache2 restart 

et passez à la troisième étape.

Troisième étape Passer de Prefork à Event


Qu'est-ce que MPM et quelle est la différence entre préfork, événement, travailleur - vous pouvez lire ici dans ce merveilleux article ... mais maintenant il est vraiment important de ne connaître qu'une chose: la préfork "standard" n'est pas très compatible avec HTTP / 2, vous devez donc en utiliser une plus appropriée . Éteignez l'un, allumez l'autre, redémarrez Apache.

 sudo a2dismod mpm_prefork sudo a2enmod mpm_event service apache2 restart 

La quatrième étape. Activer HTTP / 2


Soit dans le fichier de configuration de l'hôte, qui se trouve dans le répertoire / etc / apache2 / sites-enabled / , soit dans la configuration du serveur /etc/apache2/apache2.conf lui-même, nous disons que nous avons besoin de support pour le nouveau protocole:
Protocols h2 h2c http/1.1

Ce qui compte vraiment, c'est h2 . Deux autres points sont à votre discrétion. h2c est un support HTTP / 2 sur TCP (pas TLS). http / 1.1 - prise en charge de l'ancienne version de HTTP.

Allumez le module http2 et redémarrez le serveur:

 sudo a2enmod http2 service apache2 restart 

Sont arrivés


A partir de maintenant. Votre ressource devrait commencer à fonctionner via HTTP / 2. Si vous utilisez Chrome en accédant à la ressource, vous verrez comment l'éclair dans le coin supérieur droit du navigateur s'allume en bleu. En survolant, vous verrez l'invite HTTP / 2-enabled (h2). Dans Firefox, accédez au panneau des développeurs et dans l'onglet Réseau, activez la colonne Protocole - pour les ressources de votre site, HTTP / 2.0 doit être répertorié. Vous pouvez également vérifier si votre ressource prend en charge ce protocole sur l' un des nombreux sites Web. Mais ne vous détendez pas, car HTTP / 3 est déjà sur ses talons :)

Source: https://habr.com/ru/post/fr430188/


All Articles