Comment ajouter ngx_pagespeed à Nginx sur CentOS 7

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 CentOS 7. 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-debian-8 [version Debian 8] sont également disponibles.

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

Commençons par nous assurer que nous disposons de tous les logiciels nécessaires à la compilation et aux tests de Nginx. Veuillez exécuter la commande:

sudo yum install wget curl unzip gcc-c++ pcre-devel zlib-devel

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 paquet source Nginx dans ce répertoire à l’adresse its site officiel. Actuellement, la dernière version est la 1.8.0 et peut être téléchargée à l’aide de la commande suivante:

sudo wget http://nginx.org/download/nginx-1.8.0.tar.gz

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

sudo tar zxvf nginx-1.8.0.tar.gz

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.8.0  nginx-1.8.0.tar.gz

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

cd nginx-1.8.0/src/http/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é, extrayez-le avec l’utilitaire + unzip + comme ceci:

sudo unzip master.zip

Cela créera un nouveau répertoire appelé + ngx_pagespeed-master + dans votre répertoire + ~ / custom-nginx / nginx-1.8.0 / src / http / 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.4.6 / debian / modules / ngx_pagespeed +:

sudo tar -xzvf 1.9.32.6.tar.gz

Étape 2 - Configurez la source et compilez-la

À ce stade, vous êtes prêt à configurer la source Nginx et à inclure le module pagespeed. Accédez au répertoire parent de la source Nginx:

cd ~/custom-nginx/nginx-1.8.0/

Là, lancez la configuration de la source avec la commande:

sudo ./configure --add-module=/home//custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/ --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid

L’option de configuration la plus importante de ce qui précède est + - add-module = / home // nginx-custom / nginx-1.8.0 / src / http / modules / ngx_pagespeed / +. Cela garantit que le module pagespeed fera partie de la compilation Nginx. Assurez-vous de remplacer votre utilisateur par ce chemin.

Pour plus de commodité, nous avons personnalisé quelques autres paramètres, tels que l’emplacement des fichiers journaux et l’utilisateur / le groupe sous lequel le serveur doit s’exécuter. Pour plus d’informations sur ce qui peut être personnalisé, veuillez consulter la documentation pour the options de compilation.

Une fois la configuration terminée, lancez la compilation avec la commande:

sudo make

Cela prendra jusqu’à dix minutes en fonction des ressources de votre droplet. Après cela, vous pouvez installer le logiciel avec la commande:

sudo make install

Vous pouvez trouver votre Nginx personnalisé installé dans le répertoire + / usr / local / nginx +. Pour rendre cela encore plus pratique, créons deux liens symboliques. Tout d’abord pour les fichiers de configuration:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

Cette commande vous permettra de trouver les fichiers de configuration dans le répertoire + / etc / nginx / + où résident habituellement les fichiers de configuration.

Vous devez également créer un lien symbolique vers le fichier binaire principal dans le répertoire + / usr / sbin / + afin de pouvoir le trouver plus facilement et l’inclure dans le script de démarrage. Cela sera également nécessaire pour le script de démarrage que nous utiliserons plus tard. Pour cela, lancez la commande:

sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

Étape 3 - Créer le script de démarrage

Le processus d’installation précédent prend en charge certaines tâches banales, telles que la création du groupe d’utilisateurs nobody requis, sous lequel Nginx s’exécutera. Cependant, vous devez toujours créer manuellement le script de démarrage. Heureusement, pour Nginx sur CentOS 7, il en existe déjà un sur le site nginx.com.

Commencez par créer un nouveau fichier dans le répertoire + / etc / init.d / +:

sudo nano /etc/init.d/nginx

Ensuite, accédez à la page https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/, copiez le script et collez-le dans ce nouveau fichier.

Enfin, rendez ce script exécutable en exécutant la commande:

sudo chmod +x /etc/init.d/nginx

Après cela, vous pouvez démarrer Nginx pour la première fois avec la commande:

sudo service nginx start

Pour vous assurer que Nginx démarre et s’arrête à chaque fois avec Droplet, ajoutez-le aux niveaux d’exécution par défaut à l’aide de la commande:

sudo chkconfig nginx on

É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 nobody:nobody /var/ngx_pagespeed_cache

Ouvrez ensuite 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 + serveur + et enregistrez les modifications:

/etc/nginx/nginx.conf

##
# Pagespeed main settings

pagespeed on;
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 ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

Vous pouvez ajouter ces lignes n’importe où dans le bloc, 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 {
   include       mime.types;
   default_type  application/octet-stream;

   #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
   #                  '$status $body_bytes_sent "$http_referer" '
   #                  '"$http_user_agent" "$http_x_forwarded_for"';

   #access_log  logs/access.log  main;

   sendfile        on;
   #tcp_nopush     on;

   #keepalive_timeout  0;
   keepalive_timeout  65;

   #gzip  on;

   server {
       listen       80;
       server_name  localhost;

       #charset koi8-r;

       #access_log  logs/host.access.log  main;














       location / {
           root   html;
           index  index.html index.htm;
       }
...

Assurez-vous également d’ajouter des lignes de configuration de vitesse de page au fichier de bloc every additional + server + que vous pourriez avoir.

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 arguments personnalisés:

Outputnginx version: nginx/1.8.0
...
configure arguments: --add-module=/home//custom-nginx/nginx-1.8.0/src/http/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. 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.

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.