Articles

Activer HTTP2 sur un Stack Lamp Bitnami

ExoConsult

Statut de vérification technique indisponible

Dans cet article

Pour améliorer les performances d’affichage de votre site web, il est (vraiment) recommandé d’activer HTTP/2.

Avant propos !

HTTP/2 fonctionne exclusivement avec HTTPS. Il est donc nécessaire que votre site utilise HTTPS (avec certificat Let’s Encrypt par exemple).

Pour pouvoir profiter de HTTP/2 sur votre site WordPress, il est nécessaire que votre template soit prévu pour HTTP/2. En effet, le code de chargement des ressources (js, css) doit être adapté pour HTTP/2.

Activer mod_http2 dans Apache

Le stack Bitnami est livré avec mod_http2 pré-installé mais non activé par défaut. Il est relativement simple d’activer le module sur Apache :

Editer le fichier de configuration Apache :

sudo nano /opt/bitnami/apache2/conf/httpd.conf

Décommenter la ligne (enlever le caractère # en début de ligne) permettant de charger le module mod_http2.so.

LoadModule http2_module modules/mod_http2.so

Redémarrer Apache et vérifier que le module http2 est correctement chargé

sudo /opt/bitnami/ctlscript.sh restart apache

Pour vérifier que le module http2 est correctement chargé

sudo /opt/bitnami/apache2/bin/apachectl -M | grep http2

Le résultat devrait être :

 http2_module (shared)

Activer le support HTTP/2 pour vos applications web

Maintenant que le module http2 est chargé au niveau d’Apache, il faut encore « dire » à Apache quels applications web doivent utiliser le protocole HTTP/2.

Ajouter les 2 lignes suivantes dans le fichier /opt/bitnami/apache2/conf/bitnami/bitnami.conf.

sudo nano /opt/bitnami/apache2/conf/bitnami/bitnami.conf
<VirtualHost _default_:80>
  ...
  Protocols h2 h2c http/1.1
</VirtualHost>

...

<VirtualHost _default_:443>
  ...
  Protocols h2 h2c http/1.1
</VirtualHost>

Vous devez également effectuer la modification pour tous les hôtes virtuels configurés sur votre machine.

sudo nano /opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf
<VirtualHost *:80>
  Protocols h2 h2c http/1.1
  ...
</VirtualHost>

...

<VirtualHost *:443>
  Protocols h2 h2c http/1.1
  ...
</VirtualHost>
sudo nano /opt/bitnami/apps/wordpress2/conf/httpd-vhosts.conf
sudo nano /opt/bitnami/apps/wordpress3/conf/httpd-vhosts.conf
...

Il est temps maintenant de redémarrer Apache et vérifier si votre application web est passée en mode http2.

sudo /opt/bitnami/ctlscript.sh restart apache

Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd stopped
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80

Tester si votre serveur est en HTTP/2

Il existe 2 méthodes pour tester si vous avez correctement activé le module HTTP/2 sur votre serveur ou votre application web.

Utiliser le site http2.pro

Rendez-vous sur le site web https://http2.pro/ et entrez dans la zone l’url de votre site web.

Si vous voyez le message ci-dessus, bravo, vous venez d’activer HTTP/2 sur votre serveur. Vous devriez dès à présent voir une différence de performance.

Utiliser le mode développeur de Firefox ou Chrome.

Rendez-vous sur votre site web en utilisant le navigateur Firefox et appuyez sur la touche F12. Rendez-vous dans l’onglet « Console » et rechargez la page en appuyant sur F5.

Si vous voyez « HTTP/2 » à coté d’une ressource chargée depuis votre site web, c’est que tout est bon pour vous !

HTTP/2 ne fonctionne pas après avoir suivi ce tutoriel ?

Dans le cas où vous avez suivi ce tutoriel mais votre site ou serveur n’utilise toujours pas HTTP/2, voici ce que vous pouvez faire.

Regarder dans les logs Apache si une erreur apparaît

Afficher les 100 dernières erreurs Apache :

sudo tail -n 100 /opt/bitnami/apache2/logs/error_log

Voyez-vous l’erreur suivante

[Sun Nov 22 13:14:49.170194 2020] [http2:warn] [pid 282808] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive.
[Sun Nov 22 13:14:49.192745 2020] [mpm_prefork:notice] [pid 282808] AH00163: Apache/2.4.43 (Unix) OpenSSL/1.1.1d PHP/7.4.8 configured -- resuming normal operations
[Sun Nov 22 13:14:49.192830 2020] [core:notice] [pid 282808] AH00094: Command line: '/opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf'

Comment corriger l’erreur AH10034 et AH00163

Pour résoudre ce problème, vous devez installer et utiliser le package php-fpm. Ce package est déjà pré-installé par Bitnami.

  1. Activer le script de contrôle de PHP-FPM
sudo mv /opt/bitnami/php/scripts/ctl.sh.disabled /opt/bitnami/php/scripts/ctl.sh

2. Démarrer PHP-FPM

sudo /opt/bitnami/ctlscript.sh start php-fpm

Vous devriez voir le message suivant :

/opt/bitnami/php/scripts/ctl.sh : php-fpm started

3. Désactivez le module php7_module en commentant le ligne ci-dessous dans le fichier de configuration d’Apache

sudo nano /opt/bitnami/apache2/conf/httpd.conf

Commentez la ligne suivante (ajoutez un # au début de la ligne)

#LoadModule php7_module        modules/libphp7.so

4. Dans le même fichier, désactivez (commentez) le ligne qui indique à Apache de charger le module mpm_prefork :

#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

5. Toujours dans le même fichier, activez (décommentez) la ligne qui indique à Apache de charger le module mpm_event :

LoadModule mpm_event_module modules/mod_mpm_event.so

6. Sauvez (CTRL+O) et quittez (CTRL+X) le fichier de configuration.

7. Redémarrez Apache.

sudo /opt/bitnami/ctlscript.sh restart apache
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd stopped
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80

8. Vérifiez si HTTP2 est actif (voir méthode ci-dessus).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous avez une mission ou un projet en tête ?

Parlez-moi de ce dont votre équipe a besoin ou du problème que vous cherchez à résoudre.