Configuration de votre serveur web
Configurez votre serveur web pour qu’il écoute sur un port autre que le port par défaut 80, car Varnish répond directement aux requêtes HTTP entrantes, et non au serveur web.
Les sections suivantes utilisent le port 8080 comme exemple.
Pour modifier le port d’écoute d’Apache 2.4 :
- Ouvrez
/etc/httpd/conf/httpd.confdans un éditeur de texte. - Recherchez la directive
Listen. - Remplacez la valeur du port d’écoute par
8080. (Vous pouvez utiliser n’importe quel port d’écoute disponible.) - Enregistrez vos modifications dans
httpd.confet quittez l’éditeur de texte.
Modifier la configuration du système de vernis
Pour modifier la configuration du système de vernis :
-
En tant qu’utilisateur disposant de droits d’
root, ouvrez votre fichier de configuration Vanish dans un éditeur de texte :- CentOS 6 :
/etc/sysconfig/varnish - CentOS 7 :
/etc/varnish/varnish.params - Debian :
/etc/default/varnish - Ubuntu :
/etc/default/varnish
- CentOS 6 :
-
Définissez le port d’écoute du vernis sur 80 :
code language-conf VARNISH_LISTEN_PORT=80Pour Varnish 4.x, assurez-vous que DAEMON_OPTS contient le port d'écoute correct pour le paramètre
-a(même si VARNISH_LISTEN_PORT est défini sur la valeur correcte) :code language-conf DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ -s malloc,256m" -
Enregistrez vos modifications dans le fichier de configuration du vernis et quittez l’éditeur de texte.
Modifier le VCL par défaut
Cette section explique comment fournir une configuration minimale pour que Varnish renvoie des en-têtes de réponse HTTP. Cela vous permet de vérifier que le vernis fonctionne avant de configurer l'application Commerce pour l'utiliser.
Pour configurer le vernis de manière minimale :
-
Sauvegarde
default.vcl:code language-bash cp /etc/varnish/default.vcl /etc/varnish/default.vcl.bak -
Ouvrez
/etc/varnish/default.vcldans un éditeur de texte. -
Localisez la strate suivante :
code language-conf backend default { .host = "127.0.0.1"; .port = "80"; } -
Remplacez la valeur de
.hostpar le nom d’hôte complet ou l’adresse IP et le port d’écoute du Varnish serveur principal ou serveur d’origine ; en d’autres termes, le serveur qui fournit le contenu Varnish s’accélérera.En règle générale, il s’agit de votre serveur web. Voir Serveurs principaux dans le guide Vernis.
-
Remplacez la valeur de
.portpar le port d’écoute du serveur web (8080 dans cet exemple).Exemple : Apache est installé sur l’hôte 192.0.2.55 et Apache écoute sur le port 8080 :
code language-conf backend default { .host = "192.0.2.55"; .port = "8080"; }note info INFO Si Varnish et Apache s’exécutent sur le même hôte, Adobe vous recommande d’utiliser une adresse IP ou un nom d’hôte et non localhost. -
Enregistrez vos modifications dans
default.vclet quittez l’éditeur de texte. -
Redémarrer le vernis :
code language-bash service varnish restart
Si Varnish ne démarre pas, essayez de l’exécuter à partir de la ligne de commande comme suit :
varnishd -d -f /etc/varnish/default.vcl
Cela devrait afficher des messages d’erreur.
Vérifier que le vernis fonctionne
Les sections suivantes expliquent comment vérifier que Varnish fonctionne mais sans configurer Commerce pour l’utiliser. Vous devez essayer ceci avant de configurer Commerce.
Effectuez les tâches décrites dans les sections suivantes dans l’ordre indiqué :
Commencer le vernis
Enter : service varnish start
Si Varnish ne démarre pas en tant que service, démarrez-le à partir de la ligne de commande comme suit :
-
Démarrez l’interface de ligne de commande du vernis :
code language-bash varnishd -d -f /etc/varnish/default.vcl -
Démarrez le processus enfant Vernis :
À l’invite, saisissez
startLes messages suivants s’affichent pour confirmer un démarrage réussi :
code language-none child (29805) Started 200 0 Child (29805) said Child (29805) said Child starts
netstat
Connectez-vous au serveur Varnish et saisissez la commande suivante :
netstat -tulpn
Recherchez en particulier le résultat suivant :
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 32614/varnishd
tcp 0 0 127.0.0.1:58484 0.0.0.0:* LISTEN 32604/varnishd
tcp 0 0 :::8080 :::* LISTEN 26822/httpd
tcp 0 0 ::1:48509 :::* LISTEN 32604/varnishd
La figure précédente montre Varnish s’exécutant sur le port 80 et Apache s’exécutant sur le port 8080.
Si vous ne voyez pas de sortie pour varnishd, assurez-vous que le vernis est en cours d’exécution.
Voir netstat options.
Installation du logiciel Commerce
Installez le logiciel Commerce si vous ne l’avez pas déjà fait. Lorsque vous êtes invité à saisir une URL de base, utilisez l’hôte et le port Varnish 80 (pour Varnish), car Varnish reçoit toutes les requêtes HTTP entrantes.
Erreur possible lors de l’installation de Commerce :
Error 503 Service Unavailable
Service Unavailable
XID: 303394517
Varnish cache server
Si vous rencontrez cette erreur, modifiez les default.vcl et ajoutez un délai d’expiration à la stature backend comme suit :
backend default {
.host = "127.0.0.1";
.port = "8080";
.first_byte_timeout = 600s;
}
Vérifier les en-têtes de réponse HTTP
Vous pouvez maintenant vérifier que Varnish diffuse des pages en examinant les en-têtes de réponse HTML renvoyés depuis n’importe quelle page.
Avant de pouvoir consulter les en-têtes, vous devez définir Commerce pour le mode Développeur. Il existe plusieurs façons de le faire, la plus simple étant de modifier les .htaccess à la racine de l’application Commerce. Vous pouvez également utiliser la commande magento deploy:mode:set.
Définition de Commerce pour le mode Développeur
Pour définir Commerce en mode Développeur, utilisez la commande magento deploy:mode:set.
Regarde le journal du vernis
Assurez-vous que Varnish est en cours d’exécution, puis saisissez la commande suivante sur le serveur Varnish :
varnishlog
Dans un navigateur web, accédez à n’importe quelle page Commerce.
Une longue liste d’en-têtes de réponse s’affiche dans votre fenêtre d’invite de commande. Recherchez des en-têtes comme ceux-ci :
- BereqHeader X-Varnish: 3
- VCL_call BACKEND_FETCH
- VCL_return fetch
- BackendOpen 17 default(10.249.151.10,,8080) 10.249.151.10 60914
- Backend 17 default(10.249.151.10,,8080)
- Timestamp Bereq: 1440449534.261791 0.000618 0.000618
- ReqHeader Host: 10.249.151.10
- ReqHeader Connection: keep-alive
- ReqHeader Content-Length: 86
- ReqHeader Cache-Control: max-age=0
- ReqHeader Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
- ReqHeader Origin: http://10.249.151.10
Si des en-têtes comme ceux-ci ne s affichent pas arrêtez Varnish, vérifiez votre default.vcl et réessayez.
Examiner les en-têtes de réponse HTML
Il existe plusieurs façons d’examiner les en-têtes de réponse, y compris à l’aide d’un module externe de navigateur ou d’un inspecteur de navigateur.
L’exemple suivant utilise curl. Vous pouvez saisir cette commande à partir de n’importe quel ordinateur pouvant accéder au serveur Commerce à l’aide du protocole HTTP.
curl -I -v --location-trusted '<your Commerce base URL>'
Par exemple,
curl -I -v --location-trusted 'http://192.0.2.55/magento2'
Recherchez des en-têtes comme ceux-ci :
Content-Type: text/html; charset=iso-8859-1
X-Varnish: 15
Age: 0
Via: 1.1 varnish-v6
X-Magento-Cache-Debug: HIT