Installer Nginx avec Ngx_Pagespeed (Speed Optimization) sur Debian et Ubuntu
Dans notre dernier article, nous avons montré comment accélérer les performances de Nginx avec Ngx_Pagespeed sur CentOS 7. Dans ce tutoriel, nous allons expliquer comment installer Nginx avec ngx_pagespeed sur les systèmes Debian et Ubuntu pour améliorer les performances des sites web Nginx.
Nginx [engine x] est un serveur HTTP populaire gratuit et open-source qui alimente de nombreux sites sur le web : bien connu pour ses hautes performances et sa stabilité. Il fonctionne également comme un proxy inverse, un courrier générique et un serveur proxy TCP/UDP, et peut également être déployé en tant qu’équilibreur de charge.
Ngx_pagespeed s’agit d’un module Nginx gratuit et open source destiné à améliorer la vitesse des sites ainsi qu’à réduire le temps de chargement des pages ; Il réduit considérablement le temps nécessaire aux utilisateurs pour visualiser et interagir avec le contenu de votre site.
Lecture suggérée : Installez Mod_Pagespeed pour améliorer les performances du serveur Apache
Ngx_pagespeed Caractéristiques :
- Prise en charge HTTPS avec contrôle d’URL.
- Optimisation des images : suppression des métadonnées, redimensionnement dynamique, recompression.
- Minification, concaténation, intégration et contournement CSS et JavaScript.
- Incorporation de petites ressources.
- Différer le chargement des images et du JavaScript.
- Réécriture HTML.
- Extension de la durée de vie du cache.
- Permet de configurer pour plusieurs serveurs et bien d’autres.
Étape 1 : Installation de Nginx à partir de la source
1. Pour installer Nginx avec ngx_pagespeed à partir des sources, les paquets suivants doivent être installés sur le système.
$ sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
2. Ensuite, téléchargez les fichiers sources de la dernière version de Nginx (1.13.2 au moment de la rédaction de cet article) à l’aide de la commande wget et extrayez les fichiers comme indiqué ci-dessous.
$ mkdir -p ~/make_nginx
cd ~/make_nginx
wget -c https://nginx.org/download/nginx-1.13.2.tar.gz
tar -xzvf nginx-1.13.2.tar.gz
3. Ensuite, récupérez les fichiers sources ngx_pagespeed et décompressez le fichier compressé comme ceci.
$ wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
unzip v1.12.34.2-stable.zip
4. Ensuite, déplacez-vous dans le répertoire ngx_pagespeed décompressé et téléchargez les bibliothèques d’optimisation PageSpeed pour compiler Nginx comme suit.
$ cd ngx_pagespeed-1.12.34.2-stable/
wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar -xvzf 1.12.34.2-x64.tar.gz
Étape 2 : Configurer et compiler Nginx avec Ngx_Pagespeed
5. Ensuite, allez dans le répertoire nginx-1.13.2 et configurez la source Nginx à l’aide des commandes suivantes.
$ cd ~/make_nginx/nginx-1.13.2
./configure --add-module=$HOME/make_nginx/ngx_pagespeed-1.12.34.2-stable/ ${PS_NGX_EXTRA_FLAGS}
6. Ensuite, compilez et installez Nginx comme suit.
$ make
sudo make install
7. Une fois le processus d’installation terminé, exécutez les commandes ci-dessous pour créer les liens symboliques nécessaires pour Nginx.
$ sudo ln -s /usr/local/nginx/conf/ /etc/nginx
sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
Étape 3 : Création du fichier d’unité Nginx pour SystemD
8. Ici, vous devrez créer manuellement le fichier d’unité Nginx puisque systemd est le système d’initialisation sur les nouvelles versions du système Debian et Ubuntu
Tout d’abord, créez le fichier /lib/systemd/system/nginx.service.
sudo vi /lib/systemd/system/nginx.service
Téléchargez ensuite le fichier de service systemd NGINX, collez la configuration du fichier d’unité dans le fichier.
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Enregistrez le fichier et fermez-le.
9. Maintenant, démarrez le service nginx pour le moment et activez-le pour qu’il démarre au démarrage du système en utilisant les commandes ci-dessous.
$ sudo systemctl start nginx
sudo systemctl enable nginx
Important : Après avoir démarré le service Nginx, il se peut que vous voyiez une erreur comme indiqué dans la capture d’écran ci-dessous.
systemd[1]: nginx.service: PID file /run/nginx.pid not readable (yet?) after start: No such file or directory
Pour le résoudre, ouvrez le fichier de configuration Nginx /etc/nginx/nginx.conf et ajoutez la ligne suivante.
#pid logs/nginx.pid;
to
pid /run/nginx.pid;
Enfin, redémarrez à nouveau le service nginx.
$ sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl status nginx
Étape 4 : Configurer Nginx avec le module Pagespeed
10. Maintenant que Nginx est installé et fonctionne sur votre système, vous devez activer le module Ngx_pagespeed. Tout d’abord, créez un répertoire dans lequel le module mettra en cache les fichiers de votre site Web et définissez les autorisations appropriées sur ce répertoire comme suit.
$ sudo mkdir -p /var/ngx_pagespeed_cache
sudo chown -R nobody:nogroup /var/ngx_pagespeed_cache
11. Pour activer le module Ngx_pagespeed, ouvrez le fichier de configuration Nginx.
$ sudo vi /etc/nginx/nginx.conf
Ajoutez les lignes de configuration Ngx_pagespeed suivantes dans le bloc serveur.
# 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" { }
Remarque : Si vous avez déployé des hôtes virtuels nginx sur le serveur, ajoutez les directives pagespeed ci-dessus à chaque bloc de serveur pour activer Ngx_pagespeed sur chaque site.
Ce qui suit est un exemple fonctionnel du fichier de configuration Nginx avec Ngx_pagespeed activé dans l’hôte virtuel par défaut.
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
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;
# 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" { }
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
Enregistrez et fermez le fichier.
12. Vérifiez ensuite si la syntaxe du fichier de configuration Nginx est exempte d’erreurs en exécutant la commande ci-dessous, si elle est correcte, vous verrez la sortie ci-dessous :
$ sudo nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
13. Ensuite, redémarrez le serveur Nginx pour effectuer les modifications récentes.
$ sudo systemctl restart nginx
Étape 5 : Tester Nginx avec Ngx_pagespeed
14. Testez maintenant si Ngx-pagespeed fonctionne maintenant en conjonction avec Nginx à l’aide de la commande cURL ci-dessous.
$ curl -I -p http://localhost
Si vous n’avez pas réussi à voir l’en-tête ci-dessus, revenez à l’étape 10 et suivez attentivement les instructions pour activer Ngx-pagespeed avec les étapes successives.
Dépôt Github Ngx-pagespeed : https://github.com/pagespeed/ngx_pagespeed
Si vous souhaitez sécuriser le serveur web Nginx, nous vous suggérons de lire ce tutoriel utile : Le guide ultime pour sécuriser, renforcer et améliorer les performances de Nginx.
C’est tout ! Dans ce tutoriel, nous avons expliqué comment installer Nginx avec ngx_pagespeed sur Debian et Ubuntu. Si vous avez des questions, n’hésitez pas à nous les envoyer en utilisant notre formulaire de commentaires ci-dessous.







