dimanche , 29 novembre 2020

Activer HTTP2 sur un Stack Lamp Bitnami

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).

Ledger Wallet

Check Also

Démarrer automatiquement une stack Bitnami lors du boot du serveur

Debian-like Distributions (Debian, Ubuntu, …) If the stack was installed as the root user, copy …

Laisser un commentaire

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