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 🙂