Hoy os queremos mostrar como instalar Varnish-Caché en Plesk Onyx con una máquina Centos 7 como servidor. Pero antes veremos qué es y como puede ayudarnos instalarlo.
Cuando dispones de un proyecto web que va creciendo día a día, te vas dando cuenta que lo que te valía en un principio se va quedando corto. Esto viene porque aumentan las visitas, amplías los contenidos y la página se hace cada vez más pesada. En ese momento es necesario revisar la parte servidora, para ayudar a tus lectores que mejoren su experiencia.
Varnish Caché puede ayudar en esto. Es un sistema que acelera la navegación web en el sitio donde se configura. Esto lo hace una tecnología de proxy inverso, se instala delante del servidor web liberándole de la carga que tiene que soportar. ¿Y cómo hace eso? Guarda copias de ciertos elementos pesados (ejemplo imágenes) haciendo que el servidor no tenga que volver a cargarlas repetidamente en cada visita.
Esto mejora sustancialmente la experiencia de usuario y libera de carga al servidor. Es verdad que hay muchos más factores que pueden provocar que el servidor no vaya “fino”, pero Varnish Caché seguro que ayuda a reducir tiempos de carga.
Apuntar también que es un sistema escalable (admite balanceo de carga) y fácilmente configurable, como os muestro:
Configuración Varnish Cache en Plesk Onyx y Centos 7
Instalar EPEL repositorio
1 |
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm |
1 |
yum install epel-release-latest-7.noarch.rpm |
Instalar Varnish
1 |
<span class="crayon-e">yum </span><span class="crayon-e">install </span><span class="crayon-v">varnish</span> |
Configuración Varnish
1 2 3 4 5 6 7 8 |
<span class="crayon-v">vi</span> <span class="crayon-o">/</span><span class="crayon-v">etc</span><span class="crayon-o">/</span><span class="crayon-v">varnish/varnish.params</span> # VARNISH_LISTEN_ADDRESS=192.168.1.5 VARNISH_LISTEN_PORT=80 # Admin interface listen address and port VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 VARNISH_ADMIN_LISTEN_PORT=6082 |
Comprobar Varnish
1 |
varnishd -V |
1 |
systemctl enable varnish |
1 |
systemctl status varnish |
Ahora modificamos default.vcl
1 2 3 4 5 |
vi /etc/varnish/default.vcl backend default { .host = "IP_WEB"; .port = "8080"; } |
Configuración Apache:
1 2 3 4 5 6 7 8 9 10 11 |
vi /etc/httpd/conf/httpd.conf # # Listen: Allows you to bind Apache to specific IP addresses and/or # ports, instead of the default. See also the # directive. # # Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses. # #Listen 7080 Listen 8080 |
Configuración PLESK
1 2 3 4 |
cd /usr/local/psa/admin/conf/templates cp -a default custom cd custom find . -type f | xargs sed -r -i~ 's/\{?\$VAR->server->webserver->httpPort\}?/8080/g' |
Lanzamos:
1 |
/usr/local/psa/admin/bin/httpdmng --reconfigure-all |
Reinicio servicios:
1 2 3 4 |
systemctl restart varnish systemctl restart httpd systemctl restart varnish systemctl restart nginx |
Comprobaciones:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[root@servidor-1 templates]# curl -I localhost HTTP/1.1 200 OK Date: Mon, 20 Feb 2017 09:10:34 GMT Server: Apache Last-Modified: Thu, 16 Jun 2016 12:25:45 GMT ETag: "e9f-53564565954d0" Content-Length: 3743 X-Powered-By: PleskLin Content-Type: text/html X-Varnish: 5 Age: 0 Via: 1.1 varnish-v4 Connection: keep-alive |
Y comprobamos uno de nuestros vhosts:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@servidor-1 templates]# curl -I https://www.maquinasvirtuales.eu HTTP/1.1 200 OK Server: nginx Date: Mon, 20 Feb 2017 09:11:26 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/7.0.15 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache X-Pingback: https://www.maquinasvirtuales.eu/xmlrpc.php Link: <https://www.maquinasvirtuales.eu/wp-json/>; rel="https://api.w.org/", <https://www.maquinasvirtuales.eu/>; rel=shortlink Set-Cookie: PHPSESSID=87na7jihifd507ujtkk83rlr00; path=/ Set-Cookie: wfvt_992014284=58aab2be13dab; expires=Mon, 20-Feb-2017 09:41:26 GMT; Max-Age=1800; path=/; HttpOnly X-Frame-Options: SAMEORIGIN X-Powered-By: PleskLin X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block |
Eliminar Varnish-Caché de Centos 7
Deshacer cambios
1 |
rm –rf /usr/local/psa/admin/conf/templates/custom |
1 |
/usr/local/psa/admin/bin/httpdmng --reconfigure-all |
Reiniciamos servicios:
1 2 3 4 |
systemctl restart varnish systemctl restart httpd systemctl restart varnish systemctl restart nginx |
Comprobamos cada servicio:
1 2 3 4 |
systemctl status varnish systemctl status httpd systemctl status varnish systemctl status nginx |
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
No funciona para mi. en localhost si que me da lo de varnish pero cuando lo hago a una web no funciona.
Hola Luis,
¿Qué mensaje te da? ¿La versión de Plex y Centos es la misma?
Un saludo
Hola Raul,
Gracias por responder, efectivaemtne centos7 y ples onyx con nginx activo.
systemctl status varnish
Varnish is active.
http://www.isvarnishworking.com/
me dice que varnis no esta activo en https://www.iontics.com
donde pones IP_WEB entiendo que es la ip publica de iontics.com en este caso 37.187.217.72
Parece como lo que no se aplico bien es la configuración sobre plesk. ¿que puedo comprobar?
Hola Luis,
Para eso estamos…
¿Puede ser que estés usando el puerto 8080 para otra cosa?
Salu2
Hola, con HTTPS Varnish no aparece configurado. Fijate, la cabecera que adjuntas no tiene VIA: 1.1 varnish-v4
Un saludo.
Excelente tutorial Raul, nosotros llevamos tiempo intentando instalar Varnish en nuestros servidores Plesk pero siempre nos hecha para atrás tener que modificar tantos archivos. Son los detalles por los que Cpanel va un paso adelante. Esperamos una extensión para Plesk Onyx que lo solucione.
Gracias Ignacio. Una vez montado funciona muy estable. Lo único tener en cuenta que Nginx debe ejecutarse antes que Varnish. Sino el primero no levanta. Esto creo que no está en la entrada que ya tiene un tiempo. Salu2
Gran articulo nosotros, tenemos que ponerlo en todas las tiendas online realizadas con Magento y la verdad que el rendimiento es bastante interesante. Probaremos ahora con prestashop y prepararemos una noticia del antes y después ya te contaremos 🙂
Gracias! Me alegro que os sirva. Un abrazo