Comment ajouter ngx_pagespeed à Nginx sur Debian 8

introduction

ngx_pagespeed, ou simplement pagespeed, est un module Nginx conçu pour optimiser automatiquement votre site en réduisant la taille de ses ressources et, partant, le temps nécessaire au navigateur pour le chargement des clients. Si vous ne le connaissez pas déjà, consultez son site officiel.

Cet article vous guidera à travers l’installation et la configuration du module pagespeed pour Nginx. Il est important de savoir que Nginx ne prend pas en charge le "Chargement dynamique de modules" disponible sur d’autres serveurs Web tels que Apache. Nginx ne prenant pas en charge cette fonctionnalité, vous devez créer Nginx à partir de la source pour ajouter le module.

Avoir votre propre package personnalisé présente un inconvénient: vous êtes seul responsable de sa mise à jour lorsqu’il existe une nouvelle version. Tenez-en compte lorsque vous pesez le pour et le contre de l’utilisation de ngx_pagespeed.

Conditions préalables

Ce guide a été écrit pour Debian 8. Un lien: / community / tutorials / comment-ajouter-ngx_pagespeed-à-nginx-on-ubuntu-14-04 [version Ubuntu 14.04] et un lien: / community / tutorials / comment-ajouter-ngx_pagespeed-to -nginx-on-centos-7 [version CentOS 7] est également disponible.

Avant de suivre ce didacticiel, assurez-vous de remplir les conditions préalables suivantes:

Sauf indication contraire, toutes les commandes nécessitant des privilèges root dans ce tutoriel doivent être exécutées en tant qu’utilisateur non root avec des privilèges sudo.

Étape 1 - Télécharger la source et ses dépendances

Avant toute chose, nous devons satisfaire toutes les dépendances nécessaires à l’exécution de Nginx. Pour cela, lancez la commande:

sudo apt-get build-dep nginx

Créez ensuite un dossier dans votre répertoire personnel pour télécharger le paquet source pour Nginx:

mkdir ~/custom-nginx

Accédez à ce répertoire nouvellement créé:

cd ~/custom-nginx

Ensuite, téléchargez le package source Nginx dans ce répertoire avec la commande suivante:

sudo apt-get source nginx

Pour confirmer que nous sommes sur la même page, listez le contenu du dossier + ~ / custom-nginx:

ls ~/custom-nginx

Le résultat devrait ressembler à ceci:

Output of ls ~/custom-nginxnginx-1.6.2  nginx_1.6.2-5.debian.tar.xz  nginx_1.6.2-5.dsc  nginx_1.6.2.orig.tar.gz

Comme vous pouvez le constater, la version du package source Nginx est 1.6.2 au moment de la rédaction de ce didacticiel. Pour commencer à ajouter le module ngx_pagespeed, vous devez d’abord accéder au dossier + modules + dans le dossier extrait + nginx-1.6.2 +:

cd nginx-1.6.2/debian/modules

Dans ce répertoire, téléchargez la dernière archive source ngx_pagespeed à partir de son référentiel Github à l’aide de la commande suivante:

sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip

Une fois le téléchargement terminé, vous aurez besoin de l’utilitaire + unzip + pour l’extraire. Si vous ne possédez pas déjà + unzip +, installez-le avec la commande suivante:

sudo apt-get install unzip

Après cela, extrayez le fichier téléchargé avec la commande:

sudo unzip master.zip

Cela créera un nouveau répertoire appelé + ngx_pagespeed-master + dans votre répertoire + ~ / nginx-1.6.2 / debian / modules +. Pour plus de commodité, renommez ce répertoire simplement + ngx_pagespeed + avec la commande:

sudo mv ngx_pagespeed-master ngx_pagespeed

Allez dans le nouveau répertoire + ngx_pagespeed +:

cd ngx_pagespeed

À partir de là, téléchargez les bibliothèques d’optimisation de pageSpeed ​​(psol) nécessaires à la compilation:

sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz

Si le lien vers l’archive psol ne fonctionne pas au moment où vous lisez cet article, ignorez simplement cette étape. Si vous manquez les bibliothèques lors de la compilation lors des étapes suivantes, vous verrez une erreur avec les instructions mises à jour pour obtenir le package ultérieurement.

Enfin, extrayez le paquet psol dans le répertoire + ~ / custom-nginx / nginx-1.6.2 / debian / modules / ngx_pagespeed +:

sudo tar -xzvf 1.9.32.6.tar.gz

Étape 2 - Personnaliser la source

À ce stade, vous êtes prêt à personnaliser les règles de compilation et à inclure ngx_pagespeed dans l’installation. A cette fin, éditez le fichier + ~ / custom-nginx / nginx-1.6.2 / debian / rules + avec votre éditeur favori:

sudo nano ~/custom-nginx/nginx-1.6.2/debian/rules

Vous avez quatre scénarios différents pour construire les packages de Nginx: + common,` + full`, + light et` + extras`. Comme leur nom l’indique, + common + contient les fichiers Nginx communs sans serveur, + full + inclut un serveur avec les modules les plus populaires, + light + crée un serveur avec uniquement les modules essentiels, et + extras + est pour un serveur avec des modules supplémentaires sophistiqués.

Supposons que vous avez besoin d’une configuration light + + de Nginx plus ngx_pagespeed. Ainsi, ajoutez la fin du bloc de configuration + light_configure_flags + et ajoutez la ligne:

~ / custom-nginx / nginx-1.6.2 / debian / rules

--add-module=$(MODULESDIR)/ngx_pagespeed

N’oubliez pas d’ajouter une barre oblique inverse (+ \ +) à la ligne précédente. Le bloc de configuration entier devrait ressembler à ceci:

~ / custom-nginx / nginx-1.6.2 / debian / rules

light_configure_flags := \
                       $(common_configure_flags) \
                       --with-http_gzip_static_module \
                       --without-http_browser_module \
                       --without-http_geo_module \
                       --without-http_limit_req_module \
                       --without-http_limit_zone_module \
                       --without-http_memcached_module \
                       --without-http_referer_module \
                       --without-http_scgi_module \
                       --without-http_split_clients_module \
                       --without-http_ssi_module \
                       --without-http_userid_module \
                       --without-http_uwsgi_module \
                       --add-module=$(MODULESDIR)/nginx-echo

Vous pouvez également ajouter la même ligne aux autres scénarios de construction si vous trouvez une configuration différente de Nginx plus pratique.

Ensuite, augmentez la version du paquet source, car cela vous aidera à épingler le paquet plus tard. Pour ce faire, ouvrez le fichier + changelog + avec un éditeur de texte:

sudo nano ~/custom-nginx/nginx-1.6.2/debian/changelog

La première ligne du fichier + changelog + représente la version actuelle du paquet (+ 1.6.2-5 +) et le nom de la distribution Debian (+ + instable +). Ajoutez une balise personnalisée telle que + pagespeed + à la fin du numéro de version précédé d’un trait d’union comme ceci:

nginx (1.6.2-5) unstable; urgency=medium

Étape 3 - Construisez et installez Nginx avec le module Pagespeed

Maintenant que vous avez personnalisé la construction pour inclure le module ngx_pagespeed, vous êtes prêt à construire Nginx.

Allez dans le répertoire + ~ / custom-nginx / nginx-1.6.2 / + avec la commande:

cd ~/custom-nginx/nginx-1.6.2/

À partir de là, exécutez la commande pour créer les nouveaux packages Nginx personnalisés:

sudo dpkg-buildpackage -b

Le processus de construction prend environ 10 minutes au maximum. Si vous craignez d’être déconnecté pendant cette période, vous pouvez essayer d’utiliser + screen + comme décrit dans https://www.digitalocean.com/community/articles/how-to-install-and-use-screen-on. -an-ubuntu-cloud-server [cet article].

Si vous avez suivi toutes les instructions, le processus de construction devrait se terminer sans erreur. Pour trouver les nouveaux packages Nginx personnalisés, accédez à un répertoire allant jusqu’à + ~ / custom-nginx / + à l’aide de la commande suivante:

cd ~/custom-nginx/

Répertoriez le contenu du répertoire + ~ / custom-nginx / +:

ls ~/custom-nginx/

Vous devriez trouver beaucoup de paquets + .deb +. Ceux dont vous avez besoin s’appellent + nginx-common_1.6.2-5-pagespeed_all.deb + (contenant les fichiers Nginx communs) et + nginx-light_1.6.2-5-pagespeed_amd64.deb + (contenant votre serveur Light Light personnalisé). La partie + pagespeed + peut varier si vous avez spécifié une balise personnalisée différente dans le fichier + changelog +.

Pour installer votre module Nginx personnalisé avec pagespeed, exécutez la commande suivante:

sudo dpkg -i nginx-common_1.6.2-5-pagespeed_all.deb nginx-light_1.6.2-5-pagespeed_amd64.deb

Étape 4 - Activer le module Pagespeed

Vous avez maintenant Nginx installé. L’étape suivante consiste à activer le module ngx_pagespeed.

Avant d’activer le module, vous devez créer un dossier dans lequel il mettra en cache les fichiers de votre site Web:

sudo mkdir -p /var/ngx_pagespeed_cache

Assurez-vous de changer la propriété de ce dossier en utilisateur Nginx afin que le serveur Web puisse y stocker des fichiers:

sudo chown -R www-data:www-data /var/ngx_pagespeed_cache

Ensuite, ouvrez le fichier de configuration principal de Nginx + nginx.conf + dans votre éditeur de texte préféré comme ceci:

sudo nano /etc/nginx/nginx.conf

Dans ce fichier, ajoutez les lignes suivantes au bloc + http + et enregistrez les modifications:

/etc/nginx/nginx.conf

##
# Pagespeed Settings
##

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;

Vous pouvez ajouter ces lignes n’importe où dans le bloc + http +, mais dans notre exemple, nous l’ajoutons à la fin du bloc.

Voici à quoi devrait ressembler le fichier + / etc / nginx / nginx.conf:

/etc/nginx/nginx.conf

...
http {

       ##
       # Basic Settings
       ##

       sendfile on;
       tcp_nopush on;
       tcp_nodelay on;
       keepalive_timeout 65;
       types_hash_max_size 2048;
       # server_tokens off;

       # server_names_hash_bucket_size 64;
       # server_name_in_redirect off;







...

En outre, vous devez ajouter des lignes de configuration de vitesse de page au fichier bloc every + server + situé dans + / etc / nginx / sites-available +. Par exemple, éditez le fichier + / etc / nginx / sites-available / default +:

sudo nano /etc/nginx/sites-available/default

Ajoutez ce qui suit au bloc + server +:

/ etc / nginx / sites-available

#  Ensure requests for pagespeed optimized resources go to the pagespeed
#  handler and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

Les lignes de configuration vitesse de page ci-dessus garantissent que vitesse de page optimisera les ressources de chaque site.

Enfin, redémarrez le serveur Nginx pour que les modifications prennent effet:

sudo service nginx restart

Étape 5 - Testez l’installation

Pour vérifier si le module ngx_pagespeed a été installé avec succès, exécutez le fichier binaire Nginx comme suit:

sudo /usr/sbin/nginx -V

Si l’installation a réussi, vous devriez voir le module ngx_pagespeed répertorié parmi les autres modules:

Outputnginx version: nginx/1.6.2
...
--add-module=/home//custom-nginx/nginx-1.6.2/debian/modules/ngx_pagespeed

Ce qui précède ne signifie pas encore que la vitesse de rotation des pages est activée et fonctionne pour votre site. Pour confirmer cela, vous pouvez utiliser + curl +, un outil et une bibliothèque pour les transferts d’URL côté client. Si vous n’avez pas déjà installé + curl +, installez-le avec la commande suivante:

sudo apt-get install curl

Après cela, vérifiez l’en-tête + X-Page-Speed ​​+ comme ceci:

curl -I -p http://localhost| grep X-Page-Speed

Si le module ngx_pagespeed fonctionne correctement, vous devriez le voir dans le résultat avec sa version:

OutputX-Page-Speed: 1.9.32.6-7321

Si vous ne voyez pas cet en-tête, assurez-vous que vous avez activé la vitesse de transmission des pages conformément aux instructions de l’étape précédente.

Étape 6 - Épinglez votre paquet Nginx personnalisé

Pour éviter que votre paquet personnalisé Nginx ne soit remplacé à l’avenir par + apt + par une version plus récente de Nginx, vous devez épingler (maintenir) votre paquet en cours de mise à niveau en procédant comme suit:

Créez un nouveau fichier + nginx + dans + / etc / apt / preferences.d +:

sudo nano /etc/apt/preferences.d/nginx

Collez ensuite les lignes suivantes et enregistrez-le:

/etc/apt/preferences.d/nginx

Package: nginx-light
Pin: version 1.6.2-5-pagespeed
Pin-Priority: 1001

Assurez-vous de spécifier le package Nginx que vous avez décidé d’utiliser. Dans notre exemple, c’était + nginx-light +. Indiquez également la version exacte avec votre balise personnalisée, comme + 1.6.2-5-pagespeed +.

Conclusion

C’est ainsi que vous pouvez créer Nginx avec un module personnalisé, vitesse de page. Ces étapes sont valides pour tout autre module qui n’est pas déjà disponible dans Nginx. En outre, le processus d’installation d’un package à partir de la source est similaire à celui d’autres packages logiciels que vous devrez peut-être personnaliser. N’oubliez pas que vous devrez maintenir et réinstaller ces paquets vous-même lorsqu’une nouvelle version sera disponible.