image de mise en avant pour l'article Compiler le module Brotli Apache et l'extension Brotli PHP pour Ubuntu 18.04

Compiler le module Brotli Apache et l’extension Brotli PHP pour Ubuntu 18.04

Temps de lecture estimé: 2 minutes

Comme je le disais dans l’autre article, je me suis pencher sur les performances du blog.

Un d’entre eux était l’activation de la compression Brotli, qui permet de compresser les données entre le serveur et le client / navigateur.

Il n’y a malheureusement pas de paquet tout fait pour activer cette compression avec le serveur web Apache sur Ubuntu 18.04.
Il faut passer par la case compilation…

Je détaille dans cet article les étapes que j’ai suivies.

mod_brotli Apache

De ce que j’ai compris le module Brotli sera intégré à apache à partir de la version 2.5 sur Ubuntu normalement. Donc, si comme moi tu es sur apache 2.4.29, Tu vas passer par l’étape de compilation du module. J’ai pris comme base https://github.com/kjdev/apache-mod-brotli et adapté aux besoins de ma distrib et des librairies déjà installées.

Il faut quelques outils s’ils ne sont pas déjà installés et le package -dev d’apache:

apt install libbrotli1 brotli libtool automake apache2-dev

Ensuite il faut cloner le dépôt pour compiler le module mod_brotli:

cd ~
git clone --depth=1 --recursive https://github.com/kjdev/apache-mod-brotli.git
cd apache-mod-brotli

Pour répondre aux standards d’Apache et pour correspondre au plugin WordPress et éviter les erreurs 500:

.htaccess: Unknown filter provider BROTLI_COMPRESS

J’ai modifié la ligne 47 du fichier mod_brotli.c pour changer:

static const char brotliFilterName[] = "BROTLI";

En:

static const char brotliFilterName[] = "BROTLI_COMPRESS";

Puis on peut passer à la compilation:

./autogen.sh
./configure
make
install -p -m 755 -D .libs/mod_brotli.so  /usr/lib/apache2/modules/mod_brotli.so

Je créer maintenant les fichiers de config pour apache:

nano /etc/apache2/mods-available/brotli.load

Dans lequel je mets:

# Load module
LoadModule brotli_module /usr/lib/apache2/modules/mod_brotli.so

Puis:

nano /etc/apache2/mods-available/brotli.conf

Dans lequel je mets:

<IfModule brotli_module>
  # Compression
  ## BrotliCompressionLevel: 0-11 (default: 11)
  BrotliCompressionLevel 10
  ## BrotliWindowSize: 10-24 (default: 22)
  BrotliWindowSize 22
 
 
  # Logging
  # Filter note
  BrotliFilterNote Input  brotli_in
  BrotliFilterNote Output brotli_out
  BrotliFilterNote Ratio  brotli_ratio
 
 
  # Specifies how to change the ETag header when the response is compressed
  ## BrotliAlterEtag: AddSuffix, NoChange, Remove (default: AddSuffix)
  BrotliAlterEtag AddSuffix
 
  #LogFormat '"%r" %{brotli_out}n/%{brotli_in}n (%{brotli_ratio}n)' brotli
  #CustomLog ${APACHE_LOG_DIR}/brotli_access.log brotli
 
 
  # Output filter
  AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/css text/xml application/x-javascript application/javascript application/rss+xml application/xml application/json
 
 
  # Global output filer if necessary.
  # SetOutputFilter BROTLI_COMPRESS
  # SetEnvIfNoCase Request_URI \.txt$ no-br
 
 
</IfModule>

On peut ensuite tester l’installation en activant le module apache et en redémarrant le serveur apache:

a2enmod brotli
systemctl restart apache2

Extension Php Brotli

Après le module brotli pour apache, celui pour Php. J’ai pris comme base https://github.com/kjdev/php-ext-brotli. Comme Apache, on commence avec les outils nécessaires:

apt install php-dev

Puis on clone le projet et on compile le module:

cd ~
git clone --recursive --depth=1 https://github.com/kjdev/php-ext-brotli.git
cd php-ext-brotli
phpize
./configure
make
make install

Je crée le fichier de config:

nano /etc/php/7.2/mods-available/brotli.ini

Dans lequel je mets:

extension=brotli.so

On peut ensuite tester l’installation en activant le module php et en redémarrant le serveur apache:

phpenmod brotli
systemctl restart apache2

Voilà!! Le serveur est prêt à répondre et à compresser les requêtes avec Brotli.

Partagez l'article:
FacebookTwitterEmailLinkedIn

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.