Recherche de site Web

Installez Nginx avec Ngx_Pagespeed (optimisation de la vitesse) 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 expliquerons 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 proxy inverse, serveur de messagerie générique et proxy TCP/UDP, et peut en outre être déployé comme équilibreur de charge.

Ngx_pagespeed est un module Nginx gratuit et open source destiné à améliorer la vitesse des sites ainsi qu'à réduire le temps de chargement des pages ; cela réduit considérablement le temps nécessaire aux utilisateurs pour afficher et interagir avec le contenu de votre site.

Lecture suggérée : Installez Mod_Pagespeed pour améliorer les performances du serveur Apache

Caractéristiques de Ngx_pagespeed :

  • Prise en charge HTTPS avec contrôle d'URL.
  • Optimisation d'image : suppression des métadonnées, redimensionnement dynamique, recompression.
  • Minification, concaténation, inlining et outline CSS et JavaScript.
  • Petite ressource en ligne.
  • Différer le chargement de l’image et du JavaScript.
  • Réécriture HTML.
  • Extension de la durée de vie du cache.
  • Permet la configuration de 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 packages 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 d'écrire ces lignes) à 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. Accédez ensuite au 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. Accédez ensuite au 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 d'un 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 versions plus récentes 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 NGINX systemd et 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 démarrer 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, vous pouvez voir 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 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 exécuté sur votre système, vous devez activer le module Ngx_pagespeed. Créez d'abord 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 le résultat 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. Redémarrez ensuite le serveur Nginx pour appliquer les modifications récentes.

sudo systemctl restart nginx

Étape 5 : tester Nginx avec Ngx_pagespeed

14. Testez maintenant si Ngx-pagespeed fonctionne désormais 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 parcourez 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 didacticiel utile : Le guide ultime pour sécuriser, renforcer et améliorer les performances de Nginx.

C'est ça! Dans ce tutoriel, nous avons expliqué comment installer Nginx avec ngx_pagespeed sur Debian et Ubuntu. Si vous avez des questions, envoyez-nous en utilisant notre formulaire de commentaires ci-dessous.