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.