Installer Varnish Cache 6 pour Apache/Nginx sur CentOS 8

Varnish Cache est un puissant proxy HTTP inverse utilisé pour accélérer les applications Web et disponible sous forme de logiciel Open-Source. Varnish met en cache le contenu statique et dynamique. Il traite toutes les demandes entrantes avant qu’elles n’atterrissent sur le backend de ton serveur Web. Il se situe entre un navigateur Web et un serveur Web Apache ou Nginx. Le cache de Varnish stocke toutes les demandes de pages entrantes en mémoire pour que les serveurs Web n’aient pas à créer la même page Web encore et encore.

Dans ce billet, nous allons te montrer comment installer le cache Varnish avec Apache et Nginx sur CentOS 8.

Conditions préalables

  • Un serveur exécutant CentOS 8.
  • Un mot de passe root est configuré sur ton serveur.

Pour commencer

Avant de commencer, il est recommandé de mettre à jour tes paquets système à la dernière version. Tu peux les mettre à jour en exécutant la commande suivante :

dnf update -y

Une fois que tous les paquets sont mis à jour, tu peux passer à l’étape suivante.

Installe Varnish

Par défaut, le paquet Varnish est inclus dans le repo par défaut de CentOS 8. Tu peux l’installer en exécutant la commande suivante :

dnf install varnish -y

Après avoir installé Varnish, modifie le fichier de configuration par défaut de Varnish et définis l’adresse backed du serveur web Nginx ou Apache.

nano /etc/varnish/default.vcl

Change les lignes suivantes :

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

Sauvegarde et ferme le fichier lorsque tu as terminé.

Configurer Varnish

Par défaut, Varnish écoute sur le port 6081. Tu devras donc configurer Varnish pour qu’il écoute sur le port 80. Tu peux le configurer en modifiant le fichier varnish.service :

nano /lib/systemd/system/varnish.service

Trouve la ligne suivante :

ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m

Remplace-la par la ligne suivante :

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Enregistre et ferme le fichier puis recharge le démon systemd pour appliquer les modifications :

systemctl daemon-reload

Ensuite, démarre le service Varnish et active-le pour qu’il démarre au redémarrage du système avec la commande suivante :

systemctl start varnish
systemctl enable varnish

Tu peux aussi vérifier l’état de Varnish avec la commande suivante :

systemctl status varnish

Tu devrais obtenir la sortie suivante :

? varnish.service - Varnish Cache, a high-performance HTTP accelerator
   Loaded: loaded (/usr/lib/systemd/system/varnish.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-03-12 04:17:32 EST; 4s ago
  Process: 6391 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS)
 Main PID: 6392 (varnishd)
    Tasks: 217
   Memory: 99.5M
   CGroup: /system.slice/varnish.service
           ??6392 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
           ??6402 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Mar 12 04:17:32 masternode systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator...
Mar 12 04:17:32 masternode varnishd[6391]: Debug: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7
Mar 12 04:17:32 masternode varnishd[6391]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Mar 12 04:17:32 masternode varnishd[6392]: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7
Mar 12 04:17:32 masternode varnishd[6392]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Mar 12 04:17:32 masternode varnishd[6391]: Debug: Child (6402) Started
Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) Started
Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) said Child starts
Mar 12 04:17:32 masternode systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.

À ce stade, Varnish est démarré et écoute sur le port 80. Tu peux le vérifier avec la commande suivante :

ss -antpl | grep varnishd

Tu devrais obtenir le résultat suivant :

LISTEN    0         10               127.0.0.1:34977            0.0.0.0:*        users:(("varnishd",pid=1532,fd=11))                                            
LISTEN    0         128                0.0.0.0:80               0.0.0.0:*        users:(("cache-main",pid=1542,fd=6),("varnishd",pid=1532,fd=6))                
LISTEN    0         128                   [::]:80                  [::]:*        users:(("cache-main",pid=1542,fd=7),("varnishd",pid=1532,fd=7))                
LISTEN    0         10                   [::1]:34909               [::]:*        users:(("varnishd",pid=1532,fd=10))                                            

À ce stade, Varnish est installé et configuré. Tu peux maintenant passer à l’étape suivante.

Installe et configure Nginx pour travailler avec Varnish

Tout d’abord, tu dois installer le paquet Nginx sur ton serveur. Tu peux l’installer avec la commande suivante :

dnf install nginx -y

Une fois installé, tu devras changer le port d’écoute de Nginx de 80 à 8080. Tu peux le faire en modifiant le fichier de configuration par défaut de Nginx :

nano /etc/nginx/nginx.conf

Change les lignes suivantes :

        listen       8080 default_server;
        listen       [::]:8080 default_server;

Enregistre et ferme le fichier puis vérifie que Nginx n’a pas d’erreur de syntaxe en utilisant la commande suivante :

nginx -t

Tu devrais obtenir la sortie suivante :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ensuite, démarre le service Nginx et active-le pour qu’il démarre au redémarrage du système :

systemctl start nginx
systemctl enable nginx

Tu peux aussi vérifier le port d’écoute de Nginx à l’aide de la commande suivante :

ss -antpl | grep 8080

Tu devrais obtenir le résultat suivant :

LISTEN    0         128                0.0.0.0:8080             0.0.0.0:*        users:(("nginx",pid=5569,fd=8),("nginx",pid=5568,fd=8))                        
LISTEN    0         128                   [::]:8080                [::]:*        users:(("nginx",pid=5569,fd=9),("nginx",pid=5568,fd=9))                        

À ce stade, le cache Varnish est installé et configuré pour transférer toutes les demandes arrivant sur le port 80 vers le serveur Web Nginx qui écoute sur le port 8080.

Tu peux vérifier si le cache Varnish fonctionne ou non avec la commande suivante :

curl -I http://localhost

Tu devrais obtenir la sortie suivante :

HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Fri, 12 Mar 2021 09:18:32 GMT
Content-Type: text/html
Content-Length: 4057
Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
ETag: "5d9bab28-fd9"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.0)
Accept-Ranges: bytes
Connection: keep-alive

Installer et configurer Apache pour qu’il fonctionne avec Varnish

Tout d’abord, tu dois installer le paquetage du serveur Web Apache sur ton système. Tu peux l’installer avec la commande suivante :

dnf install httpd -y

Après avoir installé Apache, modifie le fichier de configuration par défaut d’Apache et change le port d’écoute de 80 à 8080.

nano /etc/httpd/conf/httpd.conf

Change la ligne suivante :

Listen 8080

Enregistre et ferme le fichier puis démarre le service Apache et active son démarrage au redémarrage du système avec la commande suivante :

systemctl start httpd
systemctl enable httpd

Tu peux aussi vérifier le port d’écoute d’Apache avec la commande suivante :

ss -antpl | grep httpd

Tu devrais obtenir le résultat suivant :

LISTEN    0         128                      *:8080                   *:*        users:(("httpd",pid=7556,fd=4),("httpd",pid=7555,fd=4),("httpd",pid=7554,fd=4),("httpd",pid=7552,fd=4))

À ce stade, le cache Varnish est installé et configuré pour transmettre toutes les demandes arrivant sur le port 80 au serveur Web Apache qui écoute sur le port 8080.

Tu peux vérifier si le cache Varnish fonctionne ou non avec la commande suivante :

curl -I http://localhost

Tu devrais obtenir la sortie suivante :

Date: Fri, 12 Mar 2021 09:21:14 GMT
Server: Apache/2.4.37 (centos)
Content-Location: index.html.zh-CN
Vary: negotiate,accept-language
TCN: choice
Last-Modified: Fri, 14 Jun 2019 03:37:43 GMT
ETag: "fa6-58b405e7d6fc0;5bd5365602e05"
Accept-Ranges: bytes
Content-Length: 4006
Content-Type: text/html; charset=UTF-8
Content-Language: zh-cn
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.0)
Connection: keep-alive

Travailler avec la ligne de commande de Varnish

Varnish est livré avec plusieurs utilitaires utiles qui t’aident à surveiller et à contrôler Varnish.

varnishadm est un utilitaire en ligne de commande utilisé pour répertorier les backends configurés.

varnishadm

Tu devrais voir la sortie suivante :

200        
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7

Type 'help' for command list.
Type 'quit' to close CLI session.

Maintenant, exécute la commande suivante pour répertorier tous les backends :

varnish> backend.list

Tu devrais voir le résultat suivant :

200        
Backend name                   Admin      Probe                Last updated
boot.default                   probe      Healthy (no probe)   Sat, 13 Mar 2021 03:00:02 GMT

varnishlog

L’utilitaire varnishlog est utilisé pour afficher les journaux de toutes les demandes des utilisateurs.

varnishlog

Tu devrais obtenir la sortie suivante :

*   << BeReq    >> 6         
-   Begin          bereq 5 fetch
-   VCL_use        boot
-   Timestamp      Start: 1615604631.507187 0.000000 0.000000
-   BereqMethod    GET
-   BereqURL       /
-   BereqProtocol  HTTP/1.1
-   BereqHeader    Host: 69.87.218.214
-   BereqHeader    Upgrade-Insecure-Requests: 1
-   BereqHeader    User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
-   BereqHeader    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
-   BereqHeader    Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
-   BereqHeader    X-Forwarded-For: 106.213.193.241
-   BereqHeader    Accept-Encoding: gzip
-   BereqHeader    X-Varnish: 6
-   VCL_call       BACKEND_FETCH
-   VCL_return     fetch
-   BackendOpen    31 boot.default 127.0.0.1 8080 127.0.0.1 58860
-   BackendStart   127.0.0.1 8080
-   Timestamp      Bereq: 1615604631.507458 0.000270 0.000270
-   Timestamp      Beresp: 1615604631.507844 0.000657 0.000386
-   BerespProtocol HTTP/1.1
-   BerespStatus   200
-   BerespReason   OK
-   BerespHeader   Server: nginx/1.14.1
-   BerespHeader   Date: Sat, 13 Mar 2021 03:03:51 GMT
-   BerespHeader   Content-Type: text/html
-   BerespHeader   Content-Length: 4057
-   BerespHeader   Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT

varnishstat

La commande varnishstat te fournit des informations sur les statistiques en mémoire, le stockage, les threads créés et les objets supprimés.

varnishstat

Tu devrais voir l’écran suivant :

Statistiques du vernis

varnishtop

La commande varnishtop lit les journaux de mémoire partagée varnishd et présente une liste continuellement mise à jour des entrées de journal les plus fréquentes.

varnishtop

Tu devrais voir l’écran suivant :

varnishtop

varnishhist

La commande varnishhist analyse les journaux de varnish et imprime les n dernières demandes selon leur traitement.

varnishhist

Tu devrais voir l’écran suivant :

varnishhist

Conclusion

Dans le guide ci-dessus, tu as appris à installer et à configurer le cache Varnish avec le serveur Web Apache et Nginx. Tu peux maintenant mettre en œuvre le cache Varnish dans l’environnement de production et accélérer les performances de ton site Web. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...