Cómo instalar y configurar Varnish con Apache en Ubuntu 22.04
Varnish Cache es un acelerador HTTP de alto rendimiento diseñado para sitios web dinámicos de alto tráfico. Actúa como intermediario entre tu cliente y el servidor, gestionando todas las peticiones entrantes antes de que lleguen al backend de tu servidor web. Varnish almacena en caché una copia de cada página web servida por el servidor web. Cuando un usuario solicita una página en caché, Varnish sirve la copia en caché en lugar de solicitar la misma página una y otra vez al servidor backend. Esto hace que la caché de página completa de Varnish sea ideal para tiendas con mucho tráfico y miles de productos.
Este post te mostrará cómo instalar la Caché de Varnish y configurarla con Apache en Ubuntu 22.04.
Requisitos
- Un servidor con Ubuntu 22.04.
- Una contraseña de root configurada en tu servidor.
Instalar y configurar el servidor web Apache
Antes de empezar, el servidor web Apache debe estar instalado en tu servidor. Si no está instalado, puedes instalarlo con el siguiente comando:
apt install apache2 -y
A continuación, 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 y, a continuación, edita el archivo de configuración del host virtual por defecto de Apache:
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, luego 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 8080
Deberías ver la siguiente salida:
LISTEN 0 511 *:8080 *:* users:(("apache2",pid=2553,fd=4),("apache2",pid=2552,fd=4),("apache2",pid=2551,fd=4))
Instalar Varnish Cache
Por defecto, la última versión de la caché Varnish no está disponible en el repositorio por defecto de Ubuntu. Así que tendrás que añadir el repositorio de Varnish a APT.
Primero, 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 | sudo 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/ubuntu/ focal main deb-src https://packagecloud.io/varnishcache/varnish70/ubuntu/ focal main
Guarda y cierra el archivo y, a continuación, crea otro archivo de configuración:
nano /etc/apt/preferences.d/varnish
Añade las siguientes líneas:
Package: varnish Pin: origin packagecloud.io Pin-Priority: 900
Guarda y cierra el archivo y luego actualiza la caché del repositorio con el siguiente comando:
apt update
A continuación, instala la Caché de Varnish con el siguiente comando:
apt install varnish -y
Una vez instalada la Caché Varnish, edita el archivo default.vcl y define 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, debes crear un archivo de configuración de servicio personalizado para Varnish.
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, 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 Tue 2022-10-18 13:07:44 UTC; 14s ago Process: 4968 ExecStart=/usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m (c> Main PID: 4969 (varnishd) Tasks: 217 Memory: 90.6M CPU: 595ms CGroup: /system.slice/varnish.service ??4969 /usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m ??4983 /usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m Oct 18 13:07:43 ubuntu2204 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator... Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Version: varnish-7.0.3 revision 6a4c6a5c7e66a664b140278c209f0b18c544cab8 Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Platform: Linux,5.15.0-33-generic,x86_64,-junix,-smalloc,-sdefault,-hcritbit Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Child (4983) Started Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Child (4983) said Child starts Oct 18 13:07:44 ubuntu2204 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 :80
Obtendrás la siguiente salida:
LISTEN 0 1024 0.0.0.0:80 0.0.0.0:* users:(("cache-main",pid=4983,fd=3),("varnishd",pid=4969,fd=3)) LISTEN 0 1024 [::]:80 [::]:* users:(("cache-main",pid=4983,fd=5),("varnishd",pid=4969,fd=5)) LISTEN 0 511 *:8080 *:* users:(("apache2",pid=4749,fd=4),("apache2",pid=4748,fd=4),("apache2",pid=4745,fd=4))
Verificar la caché de Varnish
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: Tue, 18 Oct 2022 13:08:27 GMT Server: Apache/2.4.52 (Ubuntu) Last-Modified: Tue, 18 Oct 2022 13:03:09 GMT Vary: Accept-Encoding Content-Type: text/html X-Varnish: 2 Age: 0 Via: 1.1 varnish (Varnish/7.0) ETag: W/"29af-5eb4eb6b9e071-gzip" Accept-Ranges: bytes Content-Length: 10671 Connection: keep-alive
Conclusión
Enhorabuena! has instalado correctamente Varnish Cache con Apache en Ubuntu 22.04. Ahora puedes utilizar la caché Varnish en tu servidor para acelerar el tiempo de carga del sitio web. No dudes en preguntarme si tienes alguna duda.