Installer et configurer Varnish sur Gentoo / CalculateLinux
Table des matières
Varnish est un serveur de cache HTTP. Déployé en tant que proxy inverse entre les serveurs d'applications et les clients, il permet de décharger les premiers en mettant en cache leurs données, selon des règles définies par l'administrateur système et les développeurs du site, pour servir plus rapidement les requêtes, tout en allégeant la charge des serveurs.
Qui dit serveur cache HTTP, dit serveur web. Je vous renvoie donc à cet article pour l'installation de LAMP :
Pour installer varnish, rien de plus simple :
Les dépendances sont automatiquement sélectionnées :
Voilà, Varnish est installé !
Il va falloir faire écouter Varnish sur le port 80, mais du coup, ce port est pris par Apache !
Donc dans un premier temps, on change le port d'écoute d'apache, sur 8080 par exemple :
Modifier ces lignes :
Et chaque Virtualhost :
Redémarrer Apache ensuite :
On peut vérifier qu'apache fonctionne bien sur le port 8080 en faisant http://10.21.27.169:8080/ (où ici 10.21.27.169 est l'IP du serveur) ou via la commande ss :
Ensuite, on créé le fichier /etc/varnish/default.vcl à partir du fichier d'exemple :
Puis on l'édite :
Le pavé important est celui-ci (pour une configuration minimale fonctionnelle évidemment) :
C'est l'hôte vers lequel on va transmettre le trafic.
Ensuite, on configure le démon varnish pour qu'il écoute sur le port 80 via le fichier /etc/conf.d/varnishd :
On positionne la variable avec le port 80 :
On vérifie aussi que le fichier de config est le bon :
On enregistre le tout et on démarre varnish :
On vérifie toujours avec la commande ss que varnish soit bien en écoute sur le port 80 (et Apache du coup sur le 8080) :
On peut donc tester le fonctionnement. Dans une console, saisir la commande
Et tenter de faire un affichage de page du site web concerné :
Il ne reste plus qu'à activer varnish au démarrage du serveur :
Introduction
Varnish est un serveur de cache HTTP. Déployé en tant que proxy inverse entre les serveurs d'applications et les clients, il permet de décharger les premiers en mettant en cache leurs données, selon des règles définies par l'administrateur système et les développeurs du site, pour servir plus rapidement les requêtes, tout en allégeant la charge des serveurs.
Installation
Qui dit serveur cache HTTP, dit serveur web. Je vous renvoie donc à cet article pour l'installation de LAMP :
Pour installer varnish, rien de plus simple :
Code BASH :
emerge -avq www-servers/varnish
Les dépendances sont automatiquement sélectionnées :
Code BASH :
[ebuild N ] dev-python/pygments-2.0.2-r2 USE="-doc {-test}" PYTHON_TARGETS="python2_7 (-pypy) (-pypy3) -python3_3 -python3_4 (-python3_5)" [ebuild N ] dev-python/docutils-0.12 PYTHON_TARGETS="python2_7 (-pypy) (-pypy3) -python3_3 -python3_4 (-python3_5)" [ebuild N ] www-servers/varnish-4.0.3 USE="-jemalloc -jit -static-libs" PYTHON_TARGETS="python2_7 (-pypy) -python3_3 -python3_4" Would you like to merge these packages? [Yes/No]
Voilà, Varnish est installé !
Configurer Apache et Varnish
Il va falloir faire écouter Varnish sur le port 80, mais du coup, ce port est pris par Apache !
Donc dans un premier temps, on change le port d'écoute d'apache, sur 8080 par exemple :
Code BASH :
vi /etc/apache2/vhosts.d/00_default_vhost.conf
Modifier ces lignes :
Code BASH :
Listen 8080 NameVirtualHost *:8080
Et chaque Virtualhost :
Code BASH :
<VirtualHost *:8080>
Redémarrer Apache ensuite :
Code BASH :
/etc/init.d/apache2 restart
On peut vérifier qu'apache fonctionne bien sur le port 8080 en faisant http://10.21.27.169:8080/ (où ici 10.21.27.169 est l'IP du serveur) ou via la commande ss :
Code BASH :
ss -latpn | grep 8080 LISTEN 0 0 :::8080 :::* users:(("apache2",pid=26101,fd=6),
Ensuite, on créé le fichier /etc/varnish/default.vcl à partir du fichier d'exemple :
Code BASH :
cp -p /etc/varnish/example.vcl /etc/varnish/default.vcl
Puis on l'édite :
Code BASH :
vi /etc/varnish/default.vcl
Le pavé important est celui-ci (pour une configuration minimale fonctionnelle évidemment) :
Code BASH :
backend default { .host = "127.0.0.1"; .port = "8080"; }
C'est l'hôte vers lequel on va transmettre le trafic.
Ensuite, on configure le démon varnish pour qu'il écoute sur le port 80 via le fichier /etc/conf.d/varnishd :
Code BASH :
vi /etc/conf.d/varnishd
On positionne la variable avec le port 80 :
Code BASH :
VARNISHD_OPTS="-a *:80"
On vérifie aussi que le fichier de config est le bon :
Code BASH :
CONFIGFILE="/etc/varnish/default.vcl"
On enregistre le tout et on démarre varnish :
Code BASH :
/etc/init.d/varnishd start
On vérifie toujours avec la commande ss que varnish soit bien en écoute sur le port 80 (et Apache du coup sur le 8080) :
Code BASH :
ss -latpn | grep 80 LISTEN 0 0 :::80 :::* users:(("varnishd",pid=26403,fd=6)) LISTEN 0 0 :::8080 :::* users:(("apache2",pid=26101,fd=6),
On peut donc tester le fonctionnement. Dans une console, saisir la commande
Code BASH :
varnishlog
Et tenter de faire un affichage de page du site web concerné :
Code BASH :
* << Request >> 21 - Begin req 20 rxreq - Timestamp Start: 1451834077.296956 0.000000 0.000000 - Timestamp Req: 1451834077.296956 0.000000 0.000000 - ReqStart 10.21.27.100 50758 - ReqMethod GET - ReqURL / - ReqProtocol HTTP/1.1 - ReqHeader Host: 10.21.27.169 - ReqHeader User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0 - ReqHeader Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - ReqHeader Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3 - ReqHeader Accept-Encoding: gzip, deflate
Il ne reste plus qu'à activer varnish au démarrage du serveur :
Code BASH :
rc-update add varnishd