Cómo acelerar tu sitio en Drupal 7 y Ubuntu 14.04 con Varnish 4

Preliminares

Drupal es uno de los sistemas de gestión de contenido de código abierto gratuitos más populares.
Puesto que utiliza una base de datos subyacente para almacenar y recuperar datos como páginas de contenido, noticias, comentarios y blogs, Drupal necesita una cantidad considerable de potencia de procesamiento para servir una página. Cada página conlleva el lanzamiento dea intérprete de PHP, el procesamiento de todos los elementos de Drupal, el acceso a la base de datos para obtener la información, la preparación del diseño visual, y servir todo el contenido listo para el usuario.
Si todo este procesamiento se repite por cada uno de los usuarios concurrentes que acceden al servidor, los recursos del servidor se pueden convertir en un cuello de botella.
Varnish es un sistema de caché, y su función es la de almacenar y recordar lo que una aplicación web sirve para un usuario la primera que vez que accede, y servir el mismo contenido nuevo para solicitudes subsiguientes sin tener que servir totalmente la misma aplicación de nuevo.
Puede ser utilizado para servir contenido estático, como imágenes, scripts, o las hojas de estilo, ya que Varnish es increíblemente rápido y hace frente al tráfico mucho mejor que Apache hace. También se puede utilizar para almacenar en caché el contenido cuasi-estático, es decir, contenido que se genera dinámicamente por la aplicación (utilizando la base de datos y usando una cantidad considerable de tiempo para prepararlo), pero que se mantiene sin cambios durante un período de tiempo, haciendo que el contenido sea adecuado para el almacenamiento en caché.
En la mayoría de los escenarios, utilizar Varnish hace que casi cualquier sitio web se vuelva increíblemente más rápido. También hace que sea más fácil para hacer frente a los picos repentinos de petición (por ejemplo, cuando se publica un artículo muy popular). Al final se consigue que la respuesta sea más rápida por parte del servidor.

Paso 1 — Reconfigurando Apache

Por defecto, Apache escucha en el puerto 80, pero ahora va a ser Varnish el que primero reciba las peticiones, así que se debe configurar Apache para que no escuche más en este puerto y que escuche en otro (81 ó 8080, por ejemplo). Se elige el puerto 81 para esta explicación:
Se edita el fichero de configuración de Apache:
[codeblocks name=’codeblock_0′]
Y se cambia el puerto 80 por el 81:
[codeblocks name=’codeblock_1′]
Se debe cambiar también la configuración del VirtualHost:
[codeblocks name=’codeblock_2′]
Y cambiar el puerto 80 por defecto:
[codeblocks name=’codeblock_3′]
Por el 81:
[codeblocks name=’codeblock_4′]
Se recarga la nueva configuración de Apache:
[codeblocks name=’codeblock_5′]
En este momento, Apache escucha en el puerto 81 y se puede instalar Varnish.

Paso 2 – Instalando Varnish

Antes que nada se debe estar seguro de que el paquete apt-transport-https está instalado, que permite al sistema instalar paquetes desde una conexión segura.
[codeblocks name=’codeblock_6′]
Se añade la llave del anillo para poder añadir luego el nuevo repositorio de Varnish:
[codeblocks name=’codeblock_7′]
se añade el nuevo repositorio con el comando (para Ubuntu):
[codeblocks name=’codeblock_8′]
Se actualiza la base de datos de paquetes con el nuevo repositorio y se instala Varnish:
[codeblocks name=’codeblock_9′]

Paso 3 – Cambiando el puerto de escucha de Varnish

Se edita el fichero de configuración de Varnish:
[codeblocks name=’codeblock_10′]
Se busca la sección con la configuración del servidor donde, por defecto, viene configurado en el puerto 6081:
[codeblocks name=’codeblock_11′]
Y se cambia por el 80 que inicialmante usa Apache:
[codeblocks name=’codeblock_12′]
Se guardan los cambios en el fichero de configuración y se reinicia el servicio de Varnish:
[codeblocks name=’codeblock_13′]
Se podrán ver los mensajes de parada e inicio del servicio:
[codeblocks name=’codeblock_14′]
Si ahora se accede al sitio web, se podrá ver el siguiente mensaje donde Varnish nos muestra el siguiente mensaje de error:
[codeblocks name=’codeblock_15′]
Lo que hay que entender es que ahora Varnish es el encargado de recibir las peticiones de los clientes, y la servirá de su caché si la tiene o se la tiene que pedir a Apache. Es decir, se encuentra en medio de los clientes y el servidor web Apache.

Paso 4 – Configurando Varnish para Drupal

Los ficheros de configuración de Varnish están escritos en un lenguaje propio llamado VLC (Varnish Configuration Language). No se va a hacer una descripción en profundidad de cómo se usa este lenguaje, pero sí se debe entender que usando VCL es posible contruir una compleja lógica haciendo diferentes decisiones de cacheado basadas en muchos factores. El fichero de configuración de Varnish es /etc/varnish/default.vcl, asi que se edita para cambiar su configuración:
[codeblocks name=’codeblock_16′]
Se cambia el puerto a donde escucha ahora Apache (el 81):
[codeblocks name=’codeblock_17′]
Se localiza el método vcl_recv:
[codeblocks name=’codeblock_18′]
Y se cambia con la siguiente configuración:
[codeblocks name=’codeblock_19′]
Ahora se localiza el método vclbackendresponse:
[codeblocks name=’codeblock_20′]
Y se cambia con la siguiente configuración:
[codeblocks name=’codeblock_21′]
Sólo quedaría reiniciar Varnish con la nueva configuración:
[codeblocks name=’codeblock_22′]
Se podrán ver los mensajes de inicio y parada del servicio:
[codeblocks name=’codeblock_14′]
Con el comando varnishhist se puede ver a modo de gráfica, los hits (las barras verticales ‘|’) o los fallos de caché (las almohadillas ‘#’). Cuantos más hits (‘|’), mejor.
[codeblocks name=’codeblock_23′]