GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Compiler Nginx avec le module ngx_pagespeed sur Ubuntu 16.04

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.


Ubuntu
  1. Ubuntu 20.04 :WordPress avec l'installation de Nginx

  2. Installez Nginx avec ngx_pagespeed sur CentOS 7

  3. Déployer Modsecurity avec Nginx sur Ubuntu 20.04 LTS

  4. Comment sécuriser Nginx avec Letsencrypt sur Ubuntu 20.04

  5. Installer PHP 7.1 avec Nginx sur Ubuntu 16.04

Comment installer OSClass avec Nginx sur Ubuntu 20.04

Comment installer Nginx avec ModSecurity sur Ubuntu 15.04

Comment installer Nextcloud 13 sur Ubuntu 16.04 avec Nginx

Comment installer Nginx avec le module Ngx_Pagespeed sur Ubuntu 16.04 LTS

Comment installer Nginx avec le module Google PageSpeed ​​sur Ubuntu 20.04 LTS

Installer WordPress avec Nginx sur Ubuntu 18.04