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.

Compiler et installer Nginx avec le module PageSpeed pour Debian

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

Compiler et installer Nginx avec le module PageSpeed pour Debian

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 :

Dernière modification le 27 octobre 2016.

Angristan

Stanislas - 17 ans - Lycéen passionné d'informatique, de technologie et de high-tech. Sysadmin junior, adepte des logiciels libres, de GNU/Linux et d'Android. Music addict.

Poster un Commentaire

5 Commentaires sur "Compiler et installer Nginx avec le module PageSpeed pour Debian 8 (.deb)"

avatar
Chikoumi
Visiteur

Si jamais la version de pagespeed c’est NPS_VERSION=1.10.33.2 depuis l’écriture du post 🙂

Jdoclot
Visiteur

T’as déjà fait des tests avec pagespee et du ssl?

wpDiscuz