Búsqueda de sitios web

Acelere WordPress usando Redis y Varnish en Ubuntu


WordPress es el CMS (sistema de gestión de contenidos) más popular que se utiliza en Internet en la actualidad. Si bien mucha gente lo usa porque es poderoso y simple. A veces las personas hacen concesiones por conveniencia en la carga y velocidad del sitio web y las páginas web.

Hoy presentaremos dos herramientas que le ayudarán a acelerar su sitio web de WordPress.

La primera herramienta es: Barniz

Varnish es un acelerador HTTP y una herramienta útil para acelerar un servidor, especialmente en momentos en que hay mucho tráfico en un sitio. Funciona redirigiendo a los visitantes a páginas estáticas siempre que sea posible y sólo recurriendo al servidor privado virtual si es necesario un proceso activo.

La segunda herramienta es: Redis

Redis es un almacén de valores clave de código abierto que puede funcionar como almacén en memoria y como caché. Redis es un servidor de estructura de datos que puede usarse como servidor de base de datos por sí solo o combinarse con una base de datos relacional como MySQL para acelerar las cosas, como lo haremos en este tutorial.

Estas son dos piezas de software bastante diferentes. Sin embargo, el objetivo final de ambas piezas de software es el mismo y la mayoría de los sitios utilizarían ambas tecnologías para acelerar la entrega. Uno es un equilibrador de carga HTTP que almacena en caché Varnish (acelerador HTTP) y el otro es un simple almacén de clave-valor Redis. Debe elegir el que sea apropiado para sus necesidades particulares.

Para este tutorial, Redis y Varnish se configurarán como caché para WordPress para aliviar las consultas http y de bases de datos redundantes y que consumen mucho tiempo y que se utilizan para representar una página de WordPress.

Instalar y configurar Varnish con Apache

Antes de comenzar a instalar Barniz en el servidor de su sitio web de WordPress, suponga que ha instalado WordPress en Ubuntu. Puedes seguir nuestra guía sobre Cómo instalar WordPress en Ubuntu.

También necesitas tener un usuario con privilegios sudo.

Instalar barniz

Varnish se distribuye en los repositorios de paquetes de Ubuntu, pero la versión allí puede estar desactualizada, por lo que el sitio de barniz recomienda instalar el paquete de barniz a través de su repositorio.

La única arquitectura compatible es amd64.

sudo apt-get install apt-transport-https
curl https://repo.varnish-cache.org/GPG-key.txt | sudo apt-key add -

El siguiente paso es agregar el repositorio a la lista de fuentes aptas.

sudo echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.0" >> /etc/apt/sources.list.d/varnish-cache.list

Guardar y Salir.

Finalmente, actualice apt-get e instale el barniz.

sudo apt-get update
sudo apt-get install varnish

Configurar barniz

Una vez que haya instalado varnsih, puede comenzar a configurarlo.

Varnish entregará el contenido en el puerto 80 y deberá cambiar Apache para que se ejecute en el puerto 8080.

Comience a configurarlo abriendo el archivo /etc/default/varnish:

sudo nano /etc/default/varnish

Descomente todas las líneas debajo de “DAEMON_OPTS ”, en la Alternativa 2, y haga que la configuración coincida con el siguiente código:

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

Una vez que guarde y salga de ese archivo, abra el archivo default.vcl:

sudo nano /etc/varnish/default.vcl

Varnish utiliza el concepto de servidor backend u origen para definir de dónde debe recuperar el contenido si no es persistente en su caché. Edite /etc/varnish/default.vcl con un editor de texto y asegúrese de que esté presente lo siguiente.

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

Ahora el último paso en la configuración del barniz es la configuración del puerto Apache.

Abra el archivo de puertos de Apache:

sudo nano /etc/apache2/ports.conf

Cambie el número de puerto para NameVirtualHost y la línea Listen al puerto 8080, y solo se podrá acceder al host virtual desde el host local.

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

Cambie también estas configuraciones en el archivo de host virtual predeterminado:

sudo nano /etc/apache2/sites-available/default

El host virtual también debe configurarse en el puerto 8080 y la línea actualizada se parece a este ejemplo:

<VirtualHost 127.0.0.1:8080>

Ahora que toda la configuración está completa, debe iniciar Varnish y reiniciar Apache.

Una vez hecho esto, todo el tráfico a nuestro sitio de WordPress pasará por Varnish antes de llegar al servidor Apache.

sudo service varnish start
sudo service apache2 restart

Configuración de WordPress con barniz

Después de instalar Varnish, debes permitir que WordPress borre el contenido almacenado en caché cada vez que se modifique. Hay varios complementos para lograr esto. En este tutorial usaremos Varnish HTTP Purge.

Vaya al panel de WordPress, haga clic en Complementos>Agregar nuevo y busque ‘Varnish HTTP Purge’. Haga clic en 'Instalar ahora' y confirme. Finalmente actívalo.

Para que el complemento Varnish HTTP Purge funcione correctamente, debes habilitar mod_rewrite usando este comando.

sudo a2enmod rewrite

Luego, utiliza una estructura de URL personalizada para enlaces permanentes y archivos. Vaya al panel de WordPress, haga clic en Configuración>Enlaces permanentes y seleccione 'Estructura personalizada'. Luego escribe /%year%/%monthnum%/%post_id% y haz clic en "Guardar cambios".

Mejor paratice de Varnish con wordpress

Uno de los mejores métodos es excluir cualquier página relacionada con el administrador o el inicio de sesión para que no acceda al caché.

Abra /etc/varnish/default.vcl y agregue lo siguiente antes de eliminar las cookies del paso anterior.

if (req.url ~ "wp-admin|wp-login") {
return (pass);
}

Varnish utiliza el parámetro max-age en el encabezado HTTP Cache-Control para establecer cuánto tiempo se considera nuevo el contenido antes de volver a contactar con el backend.

La configuración predeterminada de Varnish es de 120 segundos; necesita extender este período a una hora para poder actualizar /etc/varnish/default.vcl.

sub vcl_backend_response {
if (beresp.ttl == 120s) {
set beresp.ttl = 1h;
}
}

Varnish no almacenará en caché el contenido de las solicitudes que incluyan la cookie o el encabezado, ni de las respuestas que incluyan el encabezado Set-Cookie.

WordPress establece muchas cookies que es seguro ignorar durante la navegación normal, así que actualicemos /etc/varnish/default.vcl y agreguemos lo siguiente dentro de vcl_recv para eliminarlas.

set req.http.cookie = regsuball(req.http.cookie, "wp-settings-\d+=[^;]+(; )?", "");
set req.http.cookie = regsuball(req.http.cookie, "wp-settings-time-\d+=[^;]+(; )?", "");
set req.http.cookie = regsuball(req.http.cookie, "wordpress_test_cookie=[^;]+(; )?", "");
if (req.http.cookie == "") {
unset req.http.cookie;
}

Ahora necesitas recargar nuevamente la configuración de Varnish usando este comando

sudo service varnish reload

Instalar y configurar Redis con Apache

Instalar Redis

Para utilizar Redis con WordPress, es necesario instalar dos paquetes:

redis-server

y

php5-redis

El paquete redis-server proporciona el propio Redis, mientras que el

php5-redis

El paquete proporciona una extensión PHP para que aplicaciones PHP como WordPress se comuniquen con Redis.

Utilice este comando para instalarlo

sudo apt-get install redis-server php5-redis

Configurar Redis

Redis puede funcionar como servidor de caché y base de datos nosql. Debes configurarlo en tu sitio web de WordPress como caché. Para hacer esto, se requieren las siguientes configuraciones.

Editar el archivo

/etc/redis/redis.conf

y agregue las siguientes líneas en la parte inferior:

sudo nano /etc/redis/redis.conf

Agregue estas líneas al final del archivo:

maxmemory 256mb
maxmemory-policy allkeys-lru

Cuando se completen los cambios, guarde y cierre el archivo.

Configuración de WordPress con Redis

El siguiente paso es instalar Complemento de WordPress Redis Object Cache.

Este complemento es un backend de caché de objetos persistente impulsado por Redis. Admite la extensión Redis de HHVM, la extensión PCEL Redis y la biblioteca Predis para PHP.

Debe instalar y activar este complemento desde el panel de WordPress. Vaya al panel de WordPress, haga clic en Complementos>Agregar nuevo y busque 'Redis Object Cache'. Haga clic en 'Instalar ahora' y confirme. Finalmente actívalo.

Luego debe habilitar el caché de objetos en Herramientas -> Redis.

Si es necesario, ajuste los parámetros de conexión de este complemento. De forma predeterminada, el complemento de caché de objetos se conectará a Redis a través de TCP en

<strong>127.0.0.1:6379</strong> 

y seleccione la base de datos

0

Para ajustar los parámetros de conexión, defina las siguientes constantes en su

wp-config.php
  • WP_REDIS_CLIENT
    hhvm

    ,

    pecl

    y

    predis
  • WP_REDIS_SCHEME
    tcp

    ]Especifica el protocolo utilizado para comunicarse con una instancia de Redis. Internamente el cliente utiliza la clase de conexión asociada al esquema de conexión especificado. Soportes

    tcp

    (TCP/IP),

    unix

    (sockets de dominio UNIX) o

    http

    (Protocolo HTTP a través de Webdis).

  • WP_REDIS_HOST
    127.0.0.1

    ]IP o nombre de host del servidor de destino. Esto se ignora cuando se conecta a Redis mediante sockets de dominio UNIX.

  • WP_REDIS_PORT
    6379

    ]Puerto TCP/IP del servidor de destino. Esto se ignora cuando se conecta a Redis mediante sockets de dominio UNIX.

  • WP_REDIS_PATH
  • WP_REDIS_DATABASE
    0

    ]Acepta un valor numérico que se utiliza para seleccionar automáticamente una base de datos lógica con el

    SELECT

    dominio.

  • WP_REDIS_PASSWORD
    AUTH

    dominio.

  • WP_REDIS_MAXTTL
    0

Prefijo de claves de caché

La constante WP_CACHE_KEY_SALT se proporciona para agregar un prefijo a todas las claves de caché.

Usuarios con configuraciones donde varias instalaciones comparten un mismo

wp-config.php

o

$table_prefix

Puede usar esta constante para garantizar la unicidad de las claves generadas por este caché de objetos.

Finalmente, reinicia

redis-service

y

apache2

Reinicie Redis:

sudo service redis-server restart

Reinicie Apache:

sudo service apache2 restart

Puede verificar ahora la velocidad de carga de su página y el uso de recursos, debería notar mejoras.

Para monitorear Redis, use el

redis-cli

comando como este:

redis-cli monitor

Después de seguir esta guía, acelerará su sitio web de WordPress.

Eso es todo disfruten y gracias 🙂

Artículos relacionados: