Comment installer et configurer mod_deflate sur Ubuntu 14.04

introduction

Mod_deflate est un module Apache qui permet de compresser la sortie de votre serveur Web avant son envoi au client. Une fois que la taille du contenu de votre site est compressée, sa taille est réduite et les clients peuvent le télécharger plus rapidement. Cette fonctionnalité est précieuse non seulement pour les clients disposant d'une bande passante inférieure, mais elle est également prise en compte par les moteurs de recherche lors de l'évaluation des performances de votre site et de son classement dans les pages.

En plus de la compression du contenu, mod_deflate peut également être utilisé à des fins de décompression. Cette technique serait applicable si vous utilisez Apache en tant que proxy inverse et que vous souhaitez traiter plus avant le contenu qui transite par le proxy. Cependant, cette technique a un usage très limité. Nous allons continuer à mettre l'accent sur l'utilisation de mod_deflate pour la compression.

Conditions préalables

Ce guide a été testé sur Ubuntu 14.04. Pour CentOS 7, veuillez vérifierthis guide. L'installation et la configuration du module ne dépendent pas du système d'exploitation ou de la version du système d'exploitation, mais l'emplacement des fichiers de configuration peut varier en fonction du système d'exploitation et de ses versions.

Cela suppose également que vous utilisez Apache 2.4.0 ou une version ultérieure. Pour installer Apache, veuillez suivre l'étape 1 de l'articleHow To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 14.04.

Toutes les commandes de ce didacticiel doivent être exécutées en tant qu'utilisateur non root. Si un accès root est requis pour la commande, il sera précédé desudo. Si vous ne l'avez pas déjà configuré, suivez ce tutoriel:Initial Server Setup with Ubuntu 14.04.

Installation

Mod_deflate est inclus et activé dans l'installation par défaut d'Apache sur Ubuntu 14.04. Pour confirmer cette exécution deapachectl, l'interface de contrôle du serveur Apache, et filtrer la sortie avecgrep pour le mot-clédeflate comme ceci:

apachectl -t -D DUMP_MODULES |grep deflate

[.note] #Note:Siapachectl n'est pas dans votre chemin, vous devrez peut-être utiliser le chemin complet de la commande:/usr/sbin/apachectl.
#

Vous devriez voirdeflate_module (shared) si mod_deflate est installé et activé. Si vous ne le voyez pas, suivez les étapes de dépannage suivantes:

  1. Assurez-vous que le fichier de module est installé. Ce fichier fait partie du package coreapache2 que vous devriez déjà avoir installé conformément aux prérequis mentionnés précédemment. Par défaut, il se trouve dans/usr/lib/apache2/modules/mod_deflate.so. En outre, le serveur Web devrait pouvoir ouvrir ce fichier. Pour cela,mod_deflate.so doit disposer d'autorisations de lecture universelle telles que 644.

  2. Vérifiez si le module a été chargé. Ouvrez le fichier de configuration du module/etc/apache2/mods-enabled/deflate.load, qui est un lien symbolique vers/etc/apache2/mods-available/deflate.load, et assurez-vous que cette ligne est présente et non commentée:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

[.note] #Note: N'oubliez pas de redémarrer Apache si vous avez dû apporter une modification à la configuration d'Apache. La commande de redémarrage estsudo apachectl restart.
#

Configuration

Pour commencer à utiliser mod_deflate, vous devez spécifier quels types de fichiers doivent être compressés. D’une part, les formats de texte brut peuvent être considérablement réduits en taille par compression, c’est pourquoi il est judicieux de l’appliquer à des fichiers HTML, CSS ou JavaScript. Par ailleurs, de nombreux formats multimédia, tels que Flash et les images, sont déjà compressés et une compression supplémentaire sera vaine.

Pour commencer, vous pouvez utiliser la configuration par défaut dans le fichier/etc/apache2/mods-enabled/deflate.conf, un lien symbolique vers/etc/apache2/mods-available/deflate.conf, qui est:

/etc/apache2/mods-enabled/deflate.conf


        
                # these are known to be safe with MSIE 6
                AddOutputFilterByType DEFLATE text/html text/plain text/xml

                # everything else may cause problems with MSIE 6
                AddOutputFilterByType DEFLATE text/css
                AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
                AddOutputFilterByType DEFLATE application/rss+xml
                AddOutputFilterByType DEFLATE application/xml
        

Le code ci-dessus signifie que lorsqu'un fichier correspond aux extensions, toute extension de fichier texte populaire telle que.html,.txt,.xml,.css,.js, etc. il sera compressé par l’action deflate de mod_deflate. Si vous ne savez pas comment les extensions sont mappées par les types mime, vérifiez le fichier/etc/mime.types. Vous voudrez peut-être ajouter d'autres extensions spécifiques à votre site.

 +
*Note:* In Ubuntu the Apache configuration is organized intuitively in multiple files. Also, configuration files are usually not enabled. For example, the modules configuration files reside in the directory `+/etc/apache2/mods-available/+`, e.g. `+/etc/apache2/mods-available/deflate.conf+`. A module configuration file is enabled only when a symlink to it is created in the directory `+/etc/apache2/mods-enabled/+` such as `+/etc/apache2/mods-enabled/deflate.conf+`. +

En outre, mod_deflate a quelques-unes de ses propres options de configuration importantes:

  • DeflateCompressionLevel - Le niveau de compression à appliquer. Par défaut, ce niveau est 9, le niveau de compression le plus élevé. 1 est le niveau de compression le moins élevé. Une compression plus élevée rendrait la sortie la plus faible au prix d'une utilisation plus importante de la CPU du serveur.

  • DeflateMemLevel - La quantité de mémoire zlib que la bibliothèque de compression peut utiliser. La valeur par défaut est 9, qui est également la valeur la plus élevée. Pour calculer précisément la mémoire autorisée, vous devez multiplier la valeur deDeflateMemLevel par 16 Ko.

  • DeflateWindowSize - La taille de la fenêtre de compression. Par défaut, c’est la valeur la plus élevée possible de 15. Plus le nombre est élevé, plus le niveau de compression est élevé, encore une fois, au prix de ressources de serveur plus importantes.

Dans la plupart des cas, vous pouvez laisser les valeurs ci-dessus à leurs valeurs par défaut. Cependant, si vous pensez que les performances de votre serveur se sont considérablement détériorées après avoir utilisé mod_deflate, vous pouvez configurer des valeurs inférieures dans votre fichier de configuration/etc/apache2/mods-enabled/deflate.conf comme ceci:

DeflateCompressionLevel 1

Ce qui précède diminuera le niveau de compression, ce qui aura pour effet de rendre les fichiers plus volumineux. Cependant, mod_deflate utilisera moins de processeur de cette façon. Assurez-vous de redémarrer Apache si vous décidez d'appliquer de telles modifications.

Essai

Il existe différentes manières de tester mod_deflate, mais la plus simple consiste à utiliser wget, le téléchargeur de réseau non interactif. Si vous ne l'avez pas déjà sur votre droplet Ubuntu 14.04, vous pouvez l'installer avec la commandesudo apt-get install wget.

Pour le test, vous aurez besoin d’un fichier texte d’au moins quelques centaines de Ko, qui devrait devenir plus petit une fois compressé. Si vous n’avez pas un tel fichier sous la main, vous pouvez téléchargerJQuery qui est une bibliothèque JavaScript populaire et le télécharger sur votre site. Si vous ne savez pas où placer le fichier, vous pouvez simplement le télécharger à la racine du document par défaut d'Apache qui est/var/www/html/ dans Ubuntu 14.04. Ainsi, le fichier sera disponible dans le répertoire racine de votre site par défaut.

 +
*Note:* In order for mod_deflate to compresses the output the client (usually the browser) has to support compression. If the client does not support compression the file will be sent as is. +

Une fois le fichier de test d'exemple téléchargé sur votre site, téléchargez-le avecwget. Vous pouvez effectuer ce test à partir de votre ordinateur local ou de Droplet. comme ça:

wget --header="Accept-Encoding: gzip" http:///jquery-1.11.3.js

Dans l'exemple ci-dessus, vous téléchargez le fichierjquery-1.11.3.js depuis votre serveur Apache. Pour utiliser la compression, nous transmettons l'argument d'en-têtewget supplémentaireAccept-Encoding: gzip.

Une fois téléchargé de la manière ci-dessus, le fichierjquery-1.11.3.js doit être de 83 Ko. En fait, il ne s'agit pas exactement du même fichier JavaScript d'origine, il doit en outre être extrait par le client, ce qui entraîne également une surcharge du côté client. Cependant, la taille transférée sur le réseau ne sera que de 83 Ko, ce qui est plus de trois fois plus petit que le fichier d'origine (278 Ko).

Vous pouvez d'abord confirmer le calcul ci-dessus en vérifiant la taille du fichier téléchargé avec la commande Linux pour lister le contenu du répertoirels comme ceci:

ls -lah jquery-1.11.3.js
-rw-r--r-- 1 user user 83K Apr 28 12:20 jquery-1.11.3.js

Ensuite, vous pouvez à nouveau comparer le résultat avec le fichier d'origine sur votre site avec la commandels:

ls -lah /var/www/html/jquery-1.11.3.js
-rw-r--r-- 1 apache apache 278K Apr 28 12:20 /var/www/html/jquery-1.11.3.js

Conclusion

Comme vous l'avez vu dans cet article et dans les exemples concrets de la bibliothèque JQuery, Mod_deflate peut vous aider à réduire considérablement les besoins en bande passante de votre site. Pour continuer plus loin avec l'optimisation de votre site, lisez à propos deApache content caching, qui est la prochaine étape logique après l'activation de mod_deflate.