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