Installer et configurer Varnish sur Gentoo / CalculateLinux



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


:magic:
Cette page a été vue 1605 fois