La vitesse de la page ou le temps de chargement est crucial pour le succès de votre boutique en ligne. Le temps de chargement est le temps total nécessaire au chargement du contenu d'une page spécifique. Plus le temps de chargement est long, plus le taux de conversion est faible. C'est également l'un des facteurs les plus importants pris en compte par Google pour déterminer le classement des moteurs de recherche.
Dans le premier post, nous avons installé Magento 2 sur notre machine CentOS 7. Dans le deuxième article de cette série, nous aborderons l'installation et la configuration de Varnish pour rendre notre boutique Magento ultra rapide.
Prérequis #
Assurez-vous d'avoir bien suivi les instructions du premier post et d'avoir EPEL
dépôt activé.
Comment ça marche #
Varnish ne prend pas en charge SSL, nous devons donc utiliser un autre service en tant que proxy de terminaison SSL, dans notre cas, ce sera Nginx.
Lorsqu'un visiteur ouvre votre site Web via HTTPS
sur le port 443
la demande sera traitée par Nginx qui fonctionne comme un proxy et transmet la demande à Varnish (sur le port 80). Varnish vérifie si la requête est mise en cache ou non. S'il est mis en cache, Varnish renverra les données mises en cache à Nginx sans demande à l'application Magento. Si la requête n'est pas mise en cache, Varnish transmettra la requête à Nginx sur le port 8080
qui extraira les données de Magento et Varnish mettra en cache la réponse.
Si un visiteur ouvre votre site Web sans SSL
sur le port 80
alors il sera redirigé vers le HTTPS
sur le port 443
URL par vernis.
Configuration de Nginx #
Nous devons modifier le bloc de serveur Nginx que nous avons créé dans le premier message pour gérer la terminaison SSL/TLS et comme back-end pour Varnish.
/etc/nginx/conf.d/example.com.confupstream fastcgi_backend {
server unix:/run/php-fpm/magento.sock;
}
server {
listen 127.0.0.1:8080;
server_name example.com www.example.com;
set $MAGE_ROOT /opt/magento/public_html;
set $MAGE_MODE developer; # or production
include snippets/letsencrypt.conf;
include /opt/magento/public_html/nginx.conf.sample;
}
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
access_log /var/log/nginx/example.com-access.log;
error_log /var/log/nginx/example.com-error.log;
location / {
proxy_pass http://127.0.0.1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
}
}
Nous devons également supprimer le bloc de serveur Nginx par défaut du nginx.conf
dossier. Commentez ou supprimez les lignes suivantes :
...
# server {
# listen 80 default_server;
# listen [::]:80 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
...
Rechargez le service Nginx pour que les modifications prennent effet :
sudo systemctl reload nginx
Installation et configuration de Varnish #
Varnish est un accélérateur HTTP rapide à proxy inverse qui se placera devant notre serveur Web et sera utilisé comme Full Page Cache
solution pour notre installation Magento.
Installez Varnish via yum avec la commande suivante :
sudo yum install varnish
Pour configurer Magento pour utiliser l'exécution de Varnish :
php /opt/magento/public_html/bin/magento config:set --scope=default --scope-code=0 system/full_page_cache/caching_application 2
Ensuite, nous devons générer un fichier de configuration Varnish :
sudo php /opt/magento/public_html/bin/magento varnish:vcl:generate > /etc/varnish/default.vcl
La commande ci-dessus doit être exécutée en tant que root ou utilisateur avec les privilèges sudo et elle créera un fichier /etc/varnish/default.vcl
en utilisant les valeurs par défaut qui sont localhost
comme hôte principal et port 8080
comme port principal.
La configuration par défaut est fournie avec une URL erronée pour le fichier de vérification de l'état. Ouvrez le default.vcl
fichier et supprimez le /pub
partie de la ligne surlignée en jaune :
...
.probe = {
# .url = "/pub/health_check.php";
.url = "/health_check.php";
.timeout = 2s;
.interval = 5s;
.window = 10;
.threshold = 5;
}
...
Par défaut, Varnish écoute sur le port 6081
, et nous devons le changer en 80
:
VARNISH_LISTEN_PORT=80
Une fois que vous avez terminé les modifications, démarrez et activez le service Varnish :
sudo systemctl enable varnish
sudo systemctl start varnish
Vous pouvez utiliser le varnishlog
outil pour afficher les requêtes Web en temps réel et pour déboguer Varnish.