Pentru cei care încă nu știu, Varnish Cache este un accelerator HTTP open source care poate fi instalat pe orice server web care rulează Apache sau Nginx. Varnish Cache poate îmbunătăți performanța generală a serverului web prin adăugarea conținutului website-urilor în cache. Cache-ul Varnish stochează copii ale cererilor utilizatorilor și le afișează aceeași pagină atunci când același utilizator vizitează aceeași pagină. Varnish Cache îmbunătățește viteza și accelerează un site web de 300 până la 1000 de ori.
Acest articol (ca de altfel și celelalte din categoria VPS) presupune că aveți cunoștințe de bază Linux, cum ar utilizarea shell-ului și structura fișierelor pe serverul vostru VPS.
Pentru a începe, conectați-vă prin ssh la serverul VPS. Comenzile de mai jos vor fi date cu sudo în față dacă sunteți autentificat ca simplu utilizator; dacă nu vreți să mai scrieți sudo, prin darea comenzii sudo su veți trece în modul superutilizator (root).
Instalare Varnish Cache
Introducem următoarele comenzi în terminal:
apt-get install apt-transport-https
curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.0" >> /etc/apt/sources.list.d/varnish-cache.list
apt-get update
apt-get install varnish
E posibil să primiți un mesaj de eroare, precum că nu aveți curl instalat. Pentru a instala acest pachet, nu trebuie decât să dați comanda de mai jos și să reluați cele scrise mai sus:
sudo apt-get-install curl
Configurare Varnish Cache
Varnish este configurat automat să ofere conținutul pe portul 6081, iar Apache pe portul 8080.
Trebuie ca, pe un server de producție, să-i spunem că avem nevoie de portul 80. Pentru asta, rulăm comanda:
nano /etc/default/varnish
și schimbăm următoparele linii:
DAEMON_OPTS="-a :6081 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
în:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
Cu F3 salvăm și cu CTRL+X ieșim din editorul de text.
Rulăm comanda de mai jos pentru a ne asigura că Varnish ascultă pe portul 8080:
nano /etc/varnish/default.vcl
backend default {
.host = "127.0.0.1";
.port = "8080";}
Pasul următor este setarea Apache și Sentora pe portul 8080:
setso --set apache_port 8080
setso --set sentora_port 8080
Ne conectăm în panoul de control Sentora și, în meniu, la Admin --> Modul Admin --> Apache config ne asigurăm că în dreptul opțiunii Apache port este trecută valoarea 8080. navigăm în josul paginii și bifăm căsuța Force update pentru a ne asigura că vhost-urile (domeniile) vor fi actualizate la următoarea rulare a Daemon-ului.
Se restartează Apache:
service apache2 restart
Atenție! După salvarea acestor setări și trecerea serverului pe portul 8080, niciun website de pe server nu va mai putea fi accesat! Pentru a micșora perioada de downtime, trebuie ca următoarele 2 comenzi să fie date repede:
php -q /etc/sentora/panel/bin/daemon.php
service varnish restart
Dacă totul a mers fără erori, Varnish funcționează pe serverul vostru pe toate domeniile (vhosts). Pentru a vă verifica dacă site-ul este sub influența Varnish Cache, scrieți adresa aici (se verifică header-ul) și apăsați Submit. Ar trebui să vedeți:
Via => 1.1 varnish-v4
O altă modalitate de a vă verifica domeniul este scrierea în terminal a următoarei comenzi:
curl -I DomeniulTău.TLD
și veți vedea ceva de genul:
La fel, trebuie să apară Via: 1.1 varnish-v4
Cele mai populare CMS au câte un plugin pentru funcționarea mai bună cu Varnish Cache. Astfel, pentru WordPress se poate instala plugin-ul Varnish HTTP Purge, iar pentru Joomla extensia Cluster Varnish for Joomla. Pe lângă alte funcționalități, ambele permit ștergerea cache-ului Varnish.
O configurare mai complexă poate fi obținută editând fișierul /etc/varnish/default.vcl. Este bine ca, înainte de a înlocui conținutul acestui fișier, să facem o copie a fișierului inițial:
cp /etc/varnish/default.vcl /etc/varnish/default.vcl_backup
Un model simplu de fișier default.vcl care funcționează pe serverul meu este mai jos. Orice sugestii sunt binevenite în comentarii.
# This is an example VCL file for Varnish.
#
# It does not do anything by default, delegating control to the
# builtin VCL. The builtin VCL is called when there is no explicit
# return statement.
#
# See the VCL chapters in the Users Guide at https://www.varnish-cache.org/docs/
# and https://www.varnish-cache.org/trac/wiki/VCLExamples for more examples.# Marker to tell the VCL compiler that this VCL has been adapted to the
# new 4.0 format.
vcl 4.0;# Default backend definition. Set this to point to your content server.
backend default {
.host = "127.0.0.1";
.port = "8080";
}sub vcl_recv {
# Happens before we check if we have this in cache already.
#
# Typically you clean up the request here, removing cookies you don't need,
# rewriting the request, etc.if (req.method == "PURGE") {
if (req.http.X-Purge-Method == "regex") {
ban("req.url ~ " + req.url + " && req.http.host ~ " + req.http.host);
return (synth(200, "Banned."));
} else {
return (purge);
}
}if(
req.url ~ "^/administrator" ||
req.url ~ "^/component/banners" ||
req.url ~ "^/component/users" ||
req.url ~ "^/wp-admin" ||
req.url ~ "^/wp-login.php" ||
req.url ~ "^/any-other-url-path"
) {
return (pass);
}set req.http.cookie = regsuball(req.http.cookie, "wp-settings-\d+=[^;]+(; )?", "");
set req.http.cookie = regsuball(req.http.cookie, "wp-settings-time-\d+=[^;]+(; )?", "");
set req.http.cookie = regsuball(req.http.cookie, "wordpress_test_cookie=[^;]+(; )?", "");
if (req.http.cookie == "") {unset req.http.cookie;
}
}
sub vcl_backend_response {
# Happens after we have read the response headers from the backend.
#
# Here you clean the response headers, removing silly Set-Cookie headers
# and other mistakes your backend does.if (beresp.ttl == 120s) {
set beresp.ttl = 1h;
}}
sub vcl_deliver {
# Happens when we have all the pieces we need, and are about to send the
# response to the client.
#
# You can do accounting or modifying the final object here.}
Razvan Stanga a zis
https://wordpress.org/plugins/vcaching/ plugin Varnish pentru WordPress.
Bobses a zis
Am să încerc și pluginul tău - pare interesant. Deocamdată, folosesc Varnish HTTP Purge.
Malin a zis
Merge si pe Debian. Eu am pus Varnish 4.1 si singura modificare a fost calea catre repo:
echo "deb https://repo.varnish-cache.org/debian/ jessie varnish-4.1" >> /etc/apt/sources.list.d/varnish-cache.list
Pentru ca am un custom httpd-vhosts.conf eu mi-am actualizat zonele manual evitand "Force update" in panel.
Probabil ca ai mai putea adauga faptul ca cei care instaleaza trebuie sa se si asigure ca porturile 8080, 6081 si 6082 sunt deschise in firewall. La mine ultimele 2 n-au fost si odata pornit Varnish in afara de siteurile ce erau prin SSL nimic n-a mai mers.
Bobses a zis
Bună observația!