====== BROTLI sur Debian Stretch ======
* Objet : Installation pour Apache d'un nouvel algorithme de compression de données qui serait plus efficace de 26 % par rapport aux solutions existantes comme GZIP
* Niveau requis : {{tag>avisé}}
* Commentaires : Ayant créé ce tutoriel sur le forum ( j'aime pas les meta-balises de wiki et son formatage ) ayez le reflex d'y passer. \\ Toutefois, je vais //"tenter"// de transposer son contenu ici : \\ https://debian-facile.org/viewtopic.php?id=21684
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Création par [[user>root@rkn]] 19/06/2018
* Testé par <...> le <...> FIXME
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=21843 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
Qu'est-ce que BROTLI ?
Des chercheurs de Google viennent de présenter un nouvel algorithme de compression de données qui serait plus efficace de 26 % par rapport aux solutions existantes comme GZIP.\\
Baptisée « Brotli », il s'agit d'une nouvelle méthode qui s’appuie sur une variété de techniques de traitement de données comme le « modelage contextuel de second ordre » ou la « réutilisation de codes entropiques ».
//On va rester simple toutefois...// ^_^ \\
Pour faire simple, la compression de données s’applique à de nombreux domaines informatiques, que ce soit pour :
* le stockage de données,
* le traitement de contenu multimédia ou
* les flux web !!!
Ce dernier cas m'intéresse tout particulièrement. \\
Cela permet une nette accélération de mes sites, surtout pour les terminaux mobiles.
{{/file-Rc11fb0a6a4884d9c334b7d137d5d9e6c.png}}
Brotli - qui est totalement open source - ne se distingue pas seulement par sa performance, il introduit également un nouveau format de données.
Actuellement, le format le plus utilisé est « Deflate ». Il est utilisé en particulier pour les fichiers de type gzip ou PNG.
Cet algorithme pourrait être implémenté dans nombre d’applications.
Ce n’est pas la première fois que Google s’intéresse à la compression de données. Il y a deux ans, ses chercheurs ont publié un algorithme open source basé sur le format Deflate et baptisé « Zopfli ». \\
Là encore, le nom s’inspire d’une variété de pain en Suisse allemande.
Une chose importante à noter est que les navigateurs ne supporteront que Brotli via HTTPS.
En effet, certains anciens navigateurs (mandataires ) ne gèrent pas bien les nouveaux formats permettant l'activation des nouvelles fonctionnalités.
Aujourd'hui, tous les navigateurs sont supposés supporter Brotli.
Je ne rentrerai pas dans le détail des Cyphers SSL de nos serveurs, mais, suivant la paranoïa de l'admin, certains OS et certains mandataires peuvent être simplement rejetés a la connection ...
== j'écrirais un petit quelque chose la dessus bientôt. ==
===== Prérequis: =====
- une distro Debian sous Apache ( j'ai temporairement laissé tomber NGINX )
- le protocole HTTPS fonctionnel.
- les binaires de Brotli installés.
===== Installation: =====
1 installation des binaires :sudo apt-get install brotli
2 installation des packages Apache2-devsudo apt-get install apache2-dev
3 récupération des sources pour l'apache-mode-brotli via gitcd /opt/sudo apt-get install gitsudo git clone --depth=1 --recursive https://github.com/kjdev/apache-mod-brotli.git
4 Construction du module apache-mde-brotli :cd /opt/apache-mod-brotli
./autogen.sh
./configure
make
install -D .libs/mod_brotli.so /usr/lib/apache2/modules/mod_brotli.so -m 644
5 Initialisation du module : \\
création du liens logique pour le module
cd /etc/apache2/mods-available
echo "LoadModule brotli_module /usr/lib/apache2/modules/mod_brotli.so" > brotli.load
6 Création, tuning de brotli.conf, et démarrage du module :
cd /etc/brotli
nano brotli.conf
Exemple de ma config :
# 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
#LogFormat '"%r" %{brotli_out}n/%{brotli_in}n (%{brotli_ratio}n)' brotli
#CustomLog ${APACHE_LOG_DIR}/brotli_access.log brotli
# Output filter
AddOutputFilterByType BROTLI text/html text/plain text/css text/xml
AddOutputFilterByType BROTLI text/css
AddOutputFilterByType BROTLI application/x-javascript application/javascript
AddOutputFilterByType BROTLI application/rss+xml
AddOutputFilterByType BROTLI application/xml
AddOutputFilterByType BROTLI application/json
# Global output filer if necessary.
# SetOutputFilter BROTLI
# SetEnvIfNoCase Request_URI \.txt$ no-br
# EOF
7 Le tuning de votre système dépendant de votre quantités de rem, de votre bande passante et autre joyeusetés, vous pouvez soit garder ma configuration, soit rechercher sur internet.
8 lorsque votre tuning est fini, copy du .conf en .local pour éviter écrasement si mise a jour des binaires dans le futur :cp brotli.conf brotli.local
9 démarrage du module :
a2enmod brotli
service apache2 restart
10 si besoin, arrêt du module :
a2dismod brotli
service apache2 restart
Vous pouvez tester brotli via [[https://tools.keycdn.com/brotli-test | les outils de CDN.COM]]
{{/file-R5490d02e0f363be0393d2e5006dbbc67.png}}
Et voila.
Pour tester les bénéfices de brotli sur votre serveur, faites un test avant puis un test après avec les outils [[https://tools.keycdn.com/speed | de chez CDN.COM]]
Sur une de mes machines, je suis passé de 45 requetes et 3.7 mb de transfert à 49 requetes et 2.8 mb. \\
Un exemple :
{{/file-R400b5ff01b5c8ed269b289a75cb03a36.png}}
=== Remarques ===
Cette manipulation est nécessaire a chaque grosse mise a jour d'apache. \\
Par exemple de Apache2 2.4.25 à apache 2.4.33 !
.