Cómo instalar y utilizar Varnish Cache en Debian 11

Varnish Cache es un acelerador HTTP de código abierto, potente y uno de los más populares, utilizado por más de 3,4 millones de sitios web. Puede utilizarse como un proxy de caché inversa especialmente diseñado para sitios web dinámicos de alto tráfico. Se utiliza para almacenar contenido en caché delante del servidor web. Funciona almacenando el contenido en la memoria caché. Cuando un usuario solicita una página almacenada en caché, Varnish sirve la copia almacenada en caché en lugar de solicitar la misma página una y otra vez al servidor backend. Muchos proveedores de alojamiento VPS lo utilizan como parte de su pila tecnológica para mejorar el rendimiento de los sitios web.

Este post te mostrará cómo instalar Varnish Cache con Apache en Debian 11.

Requisitos

  • Un servidor que ejecute Debian 11.
  • Una contraseña de root configurada en tu servidor.

Instalar y configurar el servidor web Apache

En primer lugar, tendrás que instalar el servidor web Apache en tu servidor. Puedes instalarlo ejecutando el siguiente comando:

apt install apache2 -y

Después de instalar el servidor web Apache, tendrás que editar el archivo de configuración de Apache y cambiar el puerto por defecto por otro diferente.

nano /etc/apache2/ports.conf

Busca la siguiente línea:

Listen 80

Y, sustitúyela por la siguiente línea:

Listen 8080

Guarda y cierra el archivo cuando hayas terminado.

A continuación, también tendrás que editar el archivo de configuración del host virtual por defecto de Apache y cambiar el puerto por defecto:

nano /etc/apache2/sites-available/000-default.conf

Busca la siguiente línea:

<VirtualHost *:80>

Y, sustitúyela por la siguiente línea:

<VirtualHost *:8080>

Guarda y cierra el archivo y reinicia el servicio Apache para aplicar los cambios:

systemctl restart apache2

Ahora puedes comprobar el puerto de escucha de Apache utilizando el siguiente comando:

ss -antpl | grep apache2

Deberías ver la siguiente salida:

LISTEN 0      511                *:8080            *:*    users:(("apache2",pid=19315,fd=4),("apache2",pid=19314,fd=4),("apache2",pid=19313,fd=4),("apache2",pid=19312,fd=4),("apache2",pid=19311,fd=4),("apache2",pid=19310,fd=4))

Instalar el servidor Varnish Debian 11

Por defecto, la última versión de la caché de Varnish no está disponible en el repositorio por defecto de Debian. Así que tendrás que añadir el repositorio de Varnish a APT.

En primer lugar, instala las dependencias necesarias utilizando el siguiente comando:

apt install debian-archive-keyring curl gnupg apt-transport-https -y

A continuación, añade la clave GPG de Varnish utilizando el siguiente comando:

curl -fsSL https://packagecloud.io/varnishcache/varnish70/gpgkey | gpg --dearmor -o /etc/apt/trusted.gpg.d/varnish.gpg

A continuación, crea un archivo fuente de Varnish:

nano /etc/apt/sources.list.d/varnishcache_varnish70.list

Añade la siguiente línea:

deb https://packagecloud.io/varnishcache/varnish70/debian/ bullseye main
deb-src https://packagecloud.io/varnishcache/varnish70/debian/ bullseye main

Guarda y cierra el archivo y luego actualiza la caché del repositorio con el siguiente comando:

apt update -y

A continuación, instala la Caché de Varnish con el siguiente comando:

apt install varnish -y

Una vez instalada la Caché de Varnish, inicia el servidor Varnish con el siguiente comando.

systemctl restart varnish

También puedes verificar la versión de Varnish con el siguiente comando.

varnishd -V

Obtendrás la siguiente salida.

varnishd (varnish-7.0.3 revision 6a4c6a5c7e66a664b140278c209f0b18c544cab8)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2022 Varnish Software

Configurar el servidor Varnish

A continuación, tendrás que editar el archivo default.vcl y definir tu servidor backend:

nano /etc/varnish/default.vcl

Cambia las siguientes líneas según tu servidor backend:

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

Guarda y cierra el archivo cuando hayas terminado.

Configurar Varnish para que funcione con Apache

A continuación, tendrás que crear un archivo de configuración de servicio personalizado para Varnish. Puedes crearlo con el siguiente comando.

mkdir /etc/systemd/system/varnish.service.d
nano /etc/systemd/system/varnish.service.d/customport.conf

Añade las siguientes líneas:

[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m

Guarda y cierra el archivo y luego recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, reinicia el servicio Varnish con el siguiente comando:

systemctl restart varnish

Ahora puedes comprobar el estado de la caché de Varnish con el siguiente comando:

systemctl status varnish

Deberías obtener la siguiente salida:

? varnish.service - Varnish Cache, a high-performance HTTP accelerator
     Loaded: loaded (/lib/systemd/system/varnish.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/varnish.service.d
             ??customport.conf
     Active: active (running) since Fri 2022-12-30 05:31:51 UTC; 9s ago
    Process: 24637 ExecStart=/usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m (>
   Main PID: 24638 (varnishd)
      Tasks: 217
     Memory: 132.4M
        CPU: 535ms
     CGroup: /system.slice/varnish.service
             ??24638 /usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m
             ??24652 /usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m

Dec 30 05:31:50 debian11 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator...
Dec 30 05:31:51 debian11 varnishd[24638]: Version: varnish-7.0.3 revision 6a4c6a5c7e66a664b140278c209f0b18c544cab8
Dec 30 05:31:51 debian11 varnishd[24638]: Platform: Linux,5.10.0-20-amd64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Dec 30 05:31:51 debian11 varnishd[24638]: Child (24652) Started
Dec 30 05:31:51 debian11 varnishd[24638]: Child (24652) said Child starts
Dec 30 05:31:51 debian11 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.

En este punto, Varnish está instalado y escucha en el puerto 80. Puedes comprobarlo con el siguiente comando:

ss -antpl | grep :varnishd

Obtendrás la siguiente salida:

LISTEN 0      1024         0.0.0.0:80         0.0.0.0:*    users:(("cache-main",pid=24652,fd=3),("varnishd",pid=24638,fd=3))                                                                                                        
LISTEN 0      1024       127.0.0.1:8443       0.0.0.0:*    users:(("cache-main",pid=24652,fd=7),("varnishd",pid=24638,fd=7))                                                                                                        
LISTEN 0      10         127.0.0.1:39231      0.0.0.0:*    users:(("varnishd",pid=24638,fd=11))                                                                                                                                     
LISTEN 0      10             [::1]:36395         [::]:*    users:(("varnishd",pid=24638,fd=10))                                                                                                                                     
LISTEN 0      1024            [::]:80            [::]:*    users:(("cache-main",pid=24652,fd=5),("varnishd",pid=24638,fd=5))                                                                                                        
LISTEN 0      1024           [::1]:8443          [::]:*    users:(("cache-main",pid=24652,fd=6),("varnishd",pid=24638,fd=6))                                                                                                        

Verificar la caché de Varnish

En este punto, la caché de Varnish está instalada y funcionando. Ahora puedes verificar la caché de Varnish utilizando el comando CURL:

curl -I http://localhost/

Obtendrás la caché de Varnish en la siguiente salida:

HTTP/1.1 200 OK
Date: Fri, 30 Dec 2022 05:33:00 GMT
Server: Apache/2.4.54 (Debian)
Last-Modified: Fri, 30 Dec 2022 04:42:33 GMT
Vary: Accept-Encoding
Content-Type: text/html
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/7.0)
ETag: W/"29cd-5f1043adffc4c-gzip"
Accept-Ranges: bytes
Connection: keep-alive

Conclusión

Enhorabuena! has instalado correctamente la caché Varnish con Apache en Debian 11. Ahora puedes utilizar la caché Varnish como servidor front-end para acelerar el tiempo de carga del sitio web. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...