ngx_pagespeed est un module Nginx open source qui applique automatiquement les meilleures pratiques pour optimiser la vitesse du site Web. Dans ce tutoriel, nous verrons comment compiler Nginx avec le module ngx_pagespeed sur Ubuntu 16.04 LTS.
1. Sauvegarder les fichiers de configuration Nginx
Une fois Nginx compilé et installé, vos fichiers de configuration Nginx d'origine seront écrasés. Vous pouvez utiliser la commande suivante pour sauvegarder le fichier de configuration principal et les fichiers de bloc de serveur dans votre répertoire personnel. Le tilde représente votre répertoire personnel.
cp /etc/nginx/nginx.conf /etc/nginx/sites-available/*.conf /etc/nginx/conf.d/*.conf ~
2. Ajouter un référentiel Nginx officiel
Le didacticiel démontrera la compilation de la dernière version principale de Nginx, 1.11.1 au moment de la rédaction de cet article. Le référentiel Ubuntu 16.04 contient Nginx 1.10. Nous ajoutons le référentiel Nginx officiel comme indiqué ci-dessous.
Récupérez d'abord la clé GPG Nginx et importez-la dans le système Ubuntu 16.04.
wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key
Modifiez ensuite le sources.list
fichier.
sudo nano /etc/apt/sources.list
Ajoutez les deux lignes suivantes à la fin de ce fichier. La ligne deb-src nous permet de télécharger les packages source Nginx avec apt source
commande.
deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx
Appuyez sur Ctrl+O pour enregistrer le fichier. Appuyez sur Ctrl+X pour fermer le fichier. Ensuite, mettez à jour l'index des packages locaux.
sudo apt update
Le référentiel officiel Nginx est maintenant ajouté à Ubuntu 16.04.
3 Télécharger le paquet source Nginx
Nous allons faire un nginx
répertoire sous le répertoire d'accueil pour stocker les sources Nginx, puis cd dans ce répertoire.
mkdir ~/nginx && cd ~/nginx
Installez dpkg-dev
et téléchargez le package source Nginx avec la commande ci-dessous :
sudo apt install dpkg-dev sudo apt source nginx
Découvrez les fichiers téléchargés.
ls ~/nginx/
Sortie :
nginx-1.11.1 nginx_1.11.1-1~xenial.dsc nginx_1.11.1-1~xenial.debian.tar.xz nginx_1.11.1.orig.tar.gz
4. Télécharger le paquet source ngx_pagespeed
Pour compiler Nginx avec le module ngx_pagespeed, nous avons également besoin du package source ngx_pagespeed. Accédez à la page de téléchargement Github ngx_pagespeed. ( https://github.com/pagespeed/ngx_pagespeed/releases
) Téléchargez la dernière version bêta dans votre répertoire personnel.
v1.11.33.2-beta au moment de la rédaction de cet article. Vous devrez peut-être modifier le numéro de version.
cd ~ wget https://codeload.github.com/pagespeed/ngx_pagespeed/zip/v1.11.33.2-beta
décompressez-le :
sudo apt-get install unzip unzip v1.11.33.2-beta
cd dans le répertoire nouvellement créé :
cd ngx_pagespeed-1.11.33.2-beta/
Nous devons également télécharger la bibliothèque psol. (PageSpeed Optimization Library) et extrayez-le. Le numéro de version correspond au numéro de version de vitesse de page.
wget https://dl.google.com/dl/page-speed/psol/1.11.33.2.tar.gz tar xvf 1.11.33.2.tar.gz
Cela créera un psol
répertoire sous ngx_pagespeed-1.11.33.2-beta
répertoire et c'est là qu'il doit être.
5. Ajouter le module ngx_pagespeed aux règles de compilation Nginx
Modifier le fichier de règles de compilation Nginx.
sudo nano ~/nginx/nginx-1.11.1/debian/rules
A la fin de COMMON_CONFIGURE_ARGS
section, ajoutez la ligne suivante. Remplacer username
avec votre nom d'utilisateur réel. Cette ligne spécifie l'emplacement du module ngx_pagespeed.
--add-module=/home/username/ngx_pagespeed-1.11.33.2-beta
Ce didacticiel télécharge la page source ngx_pagespeed dans le répertoire d'accueil. Si vous utilisez un compte root, remplacez /home/username
avec /root
. car le répertoire personnel de l'utilisateur root est /root
.
Notez également que vous devez ajouter une barre oblique inverse au --with-ld-opt
ligne comme la capture d'écran ci-dessous. Si vous ne le faites pas, le –add-module la ligne que vous avez ajoutée sera ignorée lors de la compilation de Nginx.
Maintenant, enregistrez et fermez le fichier.
6. Lancez la Compilation !
Assurez-vous d'être dans le répertoire source de Nginx.
cd ~/nginx/nginx-1.11.1/
Installez toutes les dépendances nécessaires pour créer notre package deb Nginx.
sudo apt build-dep nginx
Utilisez maintenant la commande suivante pour créer le package deb.
sudo dpkg-buildpackage -b
Prenez une tasse de café et attendez quelques minutes. Sur un VPS OpenVZ monocœur, ce processus de construction a pris environ 20 minutes. Quand c'est fait, il y aura 7 fichiers deb dans ~/nginx/ annuaire. Nous avons seulement besoin d'installer le nginx_1.11.1-1~xenial_amd64.deb
ou nginx_1.11.1-1~xenial_i386.deb
package, en fonction de l'architecture de votre système d'exploitation. Les autres sont le package de module dynamique Nginx et un package de débogage. Vous pouvez également les installer si vous le souhaitez.
Si vous avez déjà installé Nginx, il est temps de supprimer l'ancienne version, puis d'installer la nouvelle version.
sudo apt remove nginx nginx-common nginx-full cd ~/nginx sudo dpkg -i nginx_1.11.1-1~xenial_amd64.deb
ou
sudo dpkg -i nginx_1.11.1-1~xenial_i386.deb
Commençons maintenant Nginx.
sudo systemctl start nginx
Si vous voyez le message d'erreur suivant.
Failed to start nginx.service: Unit nginx.service is masked.
Démasquez ensuite nginx et relancez la commande start.
sudo systemctl unmask nginx
Notez que le processus Nginx peut s'exécuter en tant qu'utilisateur nginx
ou www-data
. Cela peut être changé en éditant la première ligne dans /etc/nginx/nginx.conf
dossier. Assurez-vous simplement que Nginx s'exécute sous le même utilisateur avec PHP-FPM.
Vérifiez maintenant les arguments de configuration de Nginx.
sudo nginx -V
Si vous voyez la ligne suivante à la fin, le module ngx_pagespeed est ajouté avec succès à Nginx.
--add-module=/home/username/ngx_pagespeed-1.11.33.2-beta
7. Activer le module ngx_pagespeed
PageSpeed est installé avec Nginx, mais il est désactivé par défaut. Avant de l'activer, je vous recommande de tester la vitesse de votre site Web sur pingdom.com ou webpagetest.org. Faites attention à la taille de la page, au nombre de requêtes, au temps de chargement de la page, etc. Une fois PageSpeed activé, refaites un test afin de comparer les deux résultats.
Créez un dossier pour les caches pagespeed et changez sa propriété en utilisateur Nginx (www-data ou nginx) afin qu'il puisse être écrit par Nginx.
sudo mkdir -p /var/ngx_pagespeed_cache sudo chown -R www-data:www-data /var/ngx_pagespeed_cache
Modifiez maintenant le fichier de configuration du bloc de serveur Nginx.
sudo nano /etc/nginx/conf.d/your-domain.conf
Ajoutez les directives de vitesse de page suivantes dans la section serveur.
# enable pagespeed module on this server block pagespeed on; # Needs to exist and be writable by nginx. Use tmpfs for best performance. pagespeed FileCachePath /var/ngx_pagespeed_cache; # 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 ~ "^/pagespeed_static/" { } location ~ "^/ngx_pagespeed_beacon$" { } pagespeed RewriteLevel CoreFilters;
Si vous hébergez plusieurs sites Web sur un seul serveur, ajoutez les directives de vitesse de page ci-dessus à chaque fichier de configuration de bloc de serveur pour activer la vitesse de page sur chacun d'eux.
La dernière directive définie CoreFilters
comme niveau de réécriture. PageSpeed propose 3 niveaux de réécriture :CoreFilter
, PassThrough
et OptimizeForBandwidth
. CoreFilter
est la valeur par défaut car elle contient des filtres considérés comme sûrs pour la plupart des sites Web.
CoreFilter
contient les filtres suivants.
add_head combine_css combine_javascript convert_meta_tags extend_cache fallback_rewrite_css_urls flatten_css_imports inline_css inline_import_to_link inline_javascript rewrite_css rewrite_images rewrite_javascript rewrite_style_attributes_with_url
Enregistrez et fermez votre fichier de configuration de bloc de serveur. Rechargez ensuite Nginx.
sudo systemctl reload nginx
8. Vérifiez si PageSpeed fonctionne
Accédez à votre site Web. Actualisez plusieurs fois, puis vérifiez la source de votre page. Appuyez sur Ctrl+F touchez et recherchez pagespeed . Vous verrez que de nombreuses ressources de votre site Web ont été traitées par pagespeed. Certains fichiers CSS et fichiers javascript sont combinés en un seul fichier. Si vous utilisez le navigateur Google Chrome, vous verrez que les images de votre site Web ont été converties en webp format. webp peut réduire considérablement la taille du fichier image.
Vous pouvez également constater que ngx_pagespeed fonctionne en comparant le test de vitesse de votre site Web.
Également sur votre serveur, vous pouvez émettre la commande suivante :
curl -I -p http://your-domain.com| grep X-Page-Speed
Vous verrez X-Page-Speed et son numéro de version.
X-Page-Speed: 1.11.33.2-7423
9. Empêcher Nginx d'être mis à niveau
Si une version plus récente de Nginx est disponible dans le référentiel, la commande apt-get upgrade La commande mettra à jour Nginx par défaut et votre module ngx_pagespeed aura disparu. Nous devons donc empêcher la mise à niveau de Nginx. Ceci peut être réalisé par la commande suivante :
sudo apt-mark hold nginx
Pour afficher les colis retenus :
apt-mark showhold
Certaines directives de vitesse de page que vous voudrez peut-être ajouter dans les fichiers de configuration de bloc de serveur Nginx qui ne sont pas dans CoreFilters.
pagespeed EnableFilters collapse_whitespace; pagespeed EnableFilters lazyload_images; pagespeed EnableFilters insert_dns_prefetch;
N'oubliez pas de recharger Nginx après avoir modifié les fichiers de configuration du bloc de serveur.
Pour une explication détaillée de chaque filtre, accédez à la page Filtre Google PageSpeed.
Les commentaires, questions ou suggestions sont toujours les bienvenus. Si vous avez trouvé cet article utile, 🙂 partagez-le avec vos amis sur les réseaux sociaux ! Restez à l'écoute pour plus de tutoriels Linux.