Compiler et installer Nginx avec le module PageSpeed pour Debian 8 (.deb)
Contrairement au célèbre Apache, Nginx ne supporte pas l’ajout de modules à chaud, ni même l’activation ou la désactivation de ces derniers. Si comme moi vous utilisez le module PageSpeed de Google, ce tutoriel est fait pour vous.
En effet, avec Apache il suffit d’installer le module, de l’activer, de redémarrer Apache et le tour est joué.
Sous Nginx, ce n’est pas possible. Il faut installer une version de Nginx contenant le module. Autrement-dit, il faut compiler Nginx à la main. 🙂
Dans ce tutoriel, nous allons ajouter les dépôts officiels de Nginx pour Debian Jessie, télécharger les sources de PageSpeed et de Nginx, et compiler le tout dans un paquet .deb adapté à notre distribution (il contient quelques fichiers de conf et le script d’init).
Note : une version revue de cet article est disponible à cette adresse.
C’est parti !
Je vous conseille de vous connecter en tant que root dès maintenant, sinon vous aurez à ajouter « sudo » au début de chaque commande… 😉
Aussi, veuillez faire en sorte de ne pas avoir Nginx déjà installé et de stopper tout serveur web déjà présent.
Ajout des dépots
Nous allons ajouter les dépots de Nginx pour Debian. Ils contiennent la dernière version stable (la 1.8.0 à ce jour, contre la 1.6.2 dans les dépôts Debian), ainsi que les sources pour cette version. Cela va nous permettre de récupérer les sources spécifiques pour Debian, et cela nous facilitera également la mise à jour. Vous pouvez également utiliser les sources de la mainline.
echo "deb-src http://nginx.org/packages/debian/ jessie nginx" >> /etc/apt/sources.list.d/nginx.list
On ajoute la clé qui permet de signer les paquets :
wget -O - http://nginx.org/keys/nginx_signing.key | apt-key add -
On rafraichis la liste des paquets :
apt-get update
Installation des dépendances
Voici les liste des dépendances requises pour la compilation :
apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
Et pour Nginx:
apt-get build-dep nginx
Téléchargement des sources
Pour vérifier quelle est la dernière version de PageSpeed, on peut utiliser la commande suivante :
curl -s https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source | grep NPS_VERSION=
Ensuite, on télécharge les sources de PageSpeed :
mkdir /opt/nginx/ cd /opt/nginx NPS_VERSION=[ce que vous a retourné la commande ci-dessus] wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip unzip release-${NPS_VERSION}-beta.zip cd ngx_pagespeed-release-${NPS_VERSION}-beta/ wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz tar -xzvf ${NPS_VERSION}.tar.gz
On télécharge les sources Nginx :
cd apt-get source nginx
Vous vous retrouvez avec le dossier nginx-1.8.0.
Ajout du module
Nous allons ajouter une ligne dans le fichier rules afin de compiler Nginx avec le module.
cd nginx-1.8.0 nano debian/rules
Cherchez la section « override_dh_auto_build«
À la fin vous aurez quelque chose de ce genre :
[...] --with-cc-opt="$(CFLAGS)" \ --with-ld-opt="$(LDFLAGS)" \ --with-ipv6 [...]
C’est la liste des modules à compiler.
Vous devez rajouter un « \ » à la fin de la dernière ligne, puis ceci :
--add-module=/opt/nginx/ngx_pagespeed-release-[la version de PageSpeed]-beta
Attention ! « –add-module=/root/ngx_pagespeed-release-x.x.x.x-beta » est le chemin vers le dossier de PageSpeed. Si vous n’êtes pas dans /root, et si vous utilisez une autre version, vous devez modifier ceci !
Vous devriez avoir ça :
[...] --with-cc-opt="$(CFLAGS)" \ --with-ld-opt="$(LDFLAGS)" \ --with-ipv6 \ --add-module=/opt/nginx/ngx_pagespeed-release-x.x.x.-beta [...]
Compilation
Tout est prêt. Mettez-vous dans le dossier Nginx, et lancez la compilation :
dpkg-buildpackage -b
Cela peut prendre de quelques secondes à quelques minutes suivant la puissance de la machine.
Si vous avez des erreurs de dépendances, installez les paquets demandés.
Installation
Un fois que c’est fini retournez dans le dossier au dessus :
cd ../
Vous devriez avoir plusieurs fichiers, dans mon cas, 1 fichier .changes et 3 fichiers .deb.
Installez le fichier sans « dbg » ni « debug » :
dpkg -i nginx_1.8.0-1~jessie_amd64.deb
Et voilà !
Vérifiez que toutes les dépendances sont là :
apt-get install -f
Et pour être sur que le module est bien présent :
nginx -V
On remarque que l’on a bien « –add-module=/opt/nginx/ngx_pagespeed-release-x.x.x.-beta » à la fin, comme nous l’avions ajouté dans le fichier rules.
Configuration
Pour activer PageSpeed, vous pouvez rajouter ceci dans votre 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$" { } # Ajoutez vos filtres ici : #pagespeed EnableFilters filtre1; #pagespeed EnableFilters filtre2;
Mise à jour
Pour mettre à jour, il vous suffit de re-télécharger les sources, de recompiler et de réinstaller le paquet.
Les mises à jour ne se font pas via APT, essayez donc d’être au courant des mises à jour de Nginx ou de PageSpeed !
Conclusion
PageSpeed est un module qui peut s’avérer utile. Cependant, faites attention, car plus vous utilisez de filtres, plus PageSpeed consomme du CPU ! Dans mon cas, cela a accéléré l’affichage du site, mais diminué le nombre de requêtes par secondes que peut accepter le serveur (nombre qui reste assez énorme ceci dis, je ne me fais pas de soucis pour lui 🙂 )
Je vous conseille donc d’utiliser le moins de filtres possible, et de n’utilisez PageSpeed que lorsque c’est nécessaire. C’est utile pour un site « public » ayant du trafic comme un blog, un site commercial, etc, mais pas pour vos sites personnels comme un webmail, un lecteur RSS, ou encore Piwik (PageSpeed n’est d’ailleurs pas compatible avec Piwik)
Bonne configuration ! 🙂
Sources :
- https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source
- http://nginx.org/en/linux_packages.html
- https://www.guillaume-leduc.fr/compiler-personnaliser-nginx-debian.html
Dernière modification le 17 décembre 2017.
Si jamais la version de pagespeed c’est NPS_VERSION=1.10.33.2 depuis l’écriture du post 🙂
Oui je sais je dois recompiler au moins une fois par semaine, je fais exprès de pas mettre à jour l’article ^^
Faut juste que je trouve un moyen de récupérer la version de PageSpeed automatiquement et ce sera bon 🙂
Voilà c’est rajouté 🙂
T’as déjà fait des tests avec pagespee et du ssl?
Oui c’est fonctionnel 🙂