Recherche de site Web

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.

Articles connexes: