Introducción: Varnish Cache para los sitios más rápidos de Drupal 8

Estas Tutorial mostrará cómo instalarlo Caché de pintura en uno VPS Plan de hosting para ejecutar un Drupal 8 Sitio web de alto rendimiento que incluye la configuración de los módulos requeridos.

Hay varias versiones del Caché de pintura disponible cuando se utiliza la plataforma 4.x como la instalación recomendada en esta guía LÁMPARA Servidor con cualquier Linux Distribución.

Hay competidores Drupal 8 Módulos de administración de caché disponibles con Purga, purga de falta y purga de Acquia usado para Etiqueta de caché Sistemas en sitios de producción.

Paso 1: instale Varnish Cache en el servidor web

Los requisitos previos para esto Tutorial eres un Drupal 8 funcional El sitio web que ya está en producción se ejecuta en LÁMPARA Servidor encendido VPS o comprometido con acceso a la línea de comandos a través de SSH.

Utilizar el Sudo o Apt-get Herramientas para instalar Caché de pintura a través de la línea de comando dependiendo de Linux Versión que se ejecuta en el servidor web.

Hacia Ubuntu Linux Servidor web:

sudo apt-get install -y varnish

Hacia Debian Linux Servidor web:

apt-get install varnish

A continuación, navegue hasta el pintura El archivo de configuración se encuentra en: / etc / default / falta

Abra el archivo en un editor de texto y agregue las siguientes líneas al texto:

DAEMON _OPTS="-a :80
  -T localhost:6082
  -f /etc/varnish/default.vcl
  -s malloc,512m"
  -S /etc/varnish/secret

Es necesario crear uno nuevo falta.servicio Archivo bajo: /etc/systemd/system/varnish.service con el siguiente texto:

[Unit]
Description=Varnish HTTP accelerator
Documentation=https://www.varnish-cache.org/docs/4.1/ man:varnishd

[Service]
Type=simple
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,512m
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
PrivateDevices=true

[Install]
WantedBy=multi-user.target

Cree un archivo y cárguelo / guárdelo en el servidor web. Luego descarga el pintura Construcción:

systemctl daemon-reload

A continuación, navegue hasta: /etc/varnish/default.vcl y hacer una copia de seguridad del default.vcl Archivo. Guarde la copia de seguridad y cree un nuevo archivo con el siguiente código:

backend default {

.host = "example.com";

.port = "8080";

}

# Access control list for PURGE requests.
# Here you need to put the IP address of your web server
acl purge {
"127.0.0.1";
}

# Respond to incoming requests.
sub vcl_recv {
# Add an X-Forwarded-For header with the client IP address.
if (req.restarts == 0) {
if (req.http.X-Forwarded-For) {
set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
}
else {
set req.http.X-Forwarded-For = client.ip;
}
}

# Only allow PURGE requests from IP addresses in the 'purge' ACL.
if (req.method == "PURGE") {
if (!client.ip ~ purge) {
return (synth(405, "Not allowed."));
}
return (hash);
}

# Only allow BAN requests from IP addresses in the 'purge' ACL.
if (req.method == "BAN") {
# Same ACL check as above:
if (!client.ip ~ purge) {
return (synth(403, "Not allowed."));
}

# Logic for the ban, using the Cache-Tags header. For more info
# see https://github.com/geerlingguy/drupal-vm/issues/397.
if (req.http.Cache-Tags) {
ban("obj.http.Cache-Tags ~ " + req.http.Cache-Tags);
}
else {
return (synth(403, "Cache-Tags header missing."));
}

# Throw a synthetic page so the request won't go to the backend.
return (synth(200, "Ban added."));
}

# Only cache GET and HEAD requests (pass through POST requests).
if (req.method != "GET" && req.method != "HEAD") {
return (pass);
}

# Pass through any administrative or AJAX-related paths.
if (req.url ~ "^/status.php$" ||
req.url ~ "^/update.php$" ||
req.url ~ "^/admin$" ||
req.url ~ "^/admin/.*$" ||
req.url ~ "^/flag/.*$" ||
req.url ~ "^.*/ajax/.*$" ||
req.url ~ "^.*/ahah/.*$") {
return (pass);
}

# Removing cookies for static content so Varnish caches these files.
if (req.url ~ "(?i).(pdf|asc|dat|txt|doc|xls|ppt|tgz|csv|png|gif|jpeg|jpg|ico|swf|css|js)(?.*)?$") {
unset req.http.Cookie;
}

# Remove all cookies that Drupal doesn't need to know about. We explicitly
# list the ones that Drupal does need, the SESS and NO_CACHE. If, after
# running this code we find that either of these two cookies remains, we
# will pass as the page cannot be cached.
if (req.http.Cookie) {
# 1. Append a semi-colon to the front of the cookie string.
# 2. Remove all spaces that appear after semi-colons.
# 3. Match the cookies we want to keep, adding the space we removed
# previously back. (1) is first matching group in the regsuball.
# 4. Remove all other cookies, identifying them by the fact that they have
# no space after the preceding semi-colon.
# 5. Remove all spaces and semi-colons from the beginning and end of the
# cookie string.
set req.http.Cookie = ";" + req.http.Cookie;
set req.http.Cookie = regsuball(req.http.Cookie, "; +", ";");
set req.http.Cookie = regsuball(req.http.Cookie, ";(SESS[a-z0-9]+|SSESS[a-z0-9]+|NO_CACHE)=", "; 1=");
set req.http.Cookie = regsuball(req.http.Cookie, ";[^ ][^;]*", "");
set req.http.Cookie = regsuball(req.http.Cookie, "^[; ]+|[; ]+$", "");

if (req.http.Cookie == "") {
# If there are no remaining cookies, remove the cookie header. If there
# aren't any cookie headers, Varnish's default behavior will be to cache
# the page.
unset req.http.Cookie;
}
else {
# If there is any cookies left (a session or NO_CACHE cookie), do not
# cache the page. Pass it on to Apache directly.
return (pass);
}
}
}

# Set a header to track a cache HITs and MISSes.
sub vcl_deliver {
# Remove ban-lurker friendly custom headers when delivering to client.
unset resp.http.X-Url;
unset resp.http.X-Host;
# Comment these for easier Drupal cache tag debugging in development.
unset resp.http.Cache-Tags;
unset resp.http.X-Drupal-Cache-Contexts;

if (obj.hits > 0) {
set resp.http.Cache-Tags = "HIT";
}
else {
set resp.http.Cache-Tags = "MISS";
}
}

# Instruct Varnish what to do in the case of certain backend responses (beresp).
sub vcl_backend_response {
# Set ban-lurker friendly custom headers.
set beresp.http.X-Url = bereq.url;
set beresp.http.X-Host = bereq.http.host;

# Cache 404s, 301s, at 500s with a short lifetime to protect the backend.
if (beresp.status == 404 || beresp.status == 301 || beresp.status == 500) {
set beresp.ttl = 10m;
}

# Don't allow static files to set cookies.
# (?i) denotes case insensitive in PCRE (perl compatible regular expressions).
# This list of extensions appears twice, once here and again in vcl_recv so
# make sure you edit both and keep them equal.
if (bereq.url ~ "(?i).(pdf|asc|dat|txt|doc|xls|ppt|tgz|csv|png|gif|jpeg|jpg|ico|swf|css|js)(?.*)?$") {
unset beresp.http.set-cookie;
}

# Allow items to remain in cache up to 6 hours past their cache expiration.
set beresp.grace = 6h;
}

Asegúrese de editar la línea para agregar la dirección de nombre de dominio correcta. Luego navega a: /etc/apache2/ports.conf y abre el ports.conf Archivo. Cambiar el texto:

Listen 80

A:

Listen 8080

Luego navega a: /etc/apache2/apache2.conf y abre el apache2.conf Archivo. Cambiar la configuración ‘No permitir sobrescribir’ a ‘Permitir sobrescribir todo’ y guarde la configuración.

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverrideAll
Requireall granted
</Directory>

Para salir, navegue a /etc / apache2 / sites-available & abra todos los archivos disponibles y cambie el puerto de 80 a 8080 en la configuración del host virtual.

En el paso final, cree un nuevo archivo de hosts virtuales para el nombre de dominio en: /etc/apache2/sites-available/yourdomain.conf y agregue el siguiente código:

<VirtualHost *:8080>
ServerAdmin admin@example.com
DocumentRoot /var/www/html/example.com
ServerName example.com
ServerAlias www.example.com
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
<Directory />
Options FollowSymLinks
AllowOverrideAll
</Directory>
<Directory /var/www/html/example.com>
DirectoryIndex index.php
Options Indexes FollowSymLinks MultiViews
AllowOverrideAll
Requireall granted
</Directory>
ErrorLog /var/log/apache2/example.com-error_log
CustomLog /var/log/apache2/example.com-access_log common
</VirtualHost>

Empezar de nuevo apache Y Caché de pintura para completar la instalación LÁMPARA. La Drupal 8 En el siguiente paso, los ajustes de configuración se pueden administrar con módulos de integración.

Paso 2: Instale módulos para la administración de caché en Drupal 8

Hay mucha competencia debajo Drupal 8 Módulos para Caché de pintura Gestión con el módulo más popular para Drupal 7 todavía en desarrollo y no listo para la producción. Es posible que los módulos más antiguos no sean compatibles Caché de laca 4.x Estándares.

DESCARGAS DE ARCHIVOS REQUERIDOS:

  • Lavar los platos: (descargar archivos)
  • Limpiador de pintura: (descargar archivos)

MÓDULOS ALTERNATIVOS DE GESTIÓN DE CACHÉ:

  • Purgador HTTP genérico: (descargar archivos)
  • Purga Acquia: (descargar archivos)
  • Enjuague Dropsolid: (descargar archivos)

DRUPAL 8 MÓDULOS EN DESARROLLO:

  • Pintura: (descargar archivos)

Para tal fin Tutorial, solo se requiere que Limpio Y Limpiador de pintura Módulos. Los módulos de administración de caché alternativos son solo para uso opcional.

Monitorear el estado del pintura Módulo para un Drupal 8 Versión o instale y pruebe la versión de desarrollo para proporcionar comentarios sobre errores, problemas o cambios que sean necesarios.

Drupal 8 Se aconseja a los editores que tengan Drush instalado para instalar módulos o eliminar el Caché de pintura. Cree un sitio para uso avanzado Etiqueta de caché Sistema.

La Purgador HTTP genérico El módulo proporciona soporte para CDN Integración con Caché de barniz y Drupal 8que suelen carecer los demás módulos.

La Purga de Acquia El módulo está especialmente diseñado para Nube de Acquia Integración. La Acondicionador a prueba de goteo El módulo escribe el Adquisición Código de versión compatible con todos los sitios web.

Recomendado: Navegar a: / admin / module / install e instala el Purga y purgador de laca Módulos. Active los módulos y verifique la configuración global de la caché del sitio web.

Paso 3: Configure la configuración de caché de barniz global

Hacia . Para optimizar Drupal 8 Configuración de CMS para Caché de pintura incluido el soporte para el almacenamiento en caché de proxy inverso, abra el settings.php Archivo encontrado en / sites / default Carpeta y agregue:

$settings['reverse_proxy'] = TRUE;
$settings['reverse_proxy_addresses'] = array('127.0.0.1');

en el Drupal 8 Administración, navegue a: / admin / config / development / performance y establezca la configuración de la caché según sea necesario (es decir, 15 minutos, 1 hora o 24 horas, según el tráfico del sitio web del usuario y los requisitos de recursos del sistema). Establezca 1 hora o 1 día como predeterminado.

Cómo alojar sitios web de Drupal 8 usando Varnish Cache en planes VPS

Guarde la configuración como «Archivos CSS agregados» y «Archivos JavaScript agregados» global:

Cómo alojar sitios web de Drupal 8 usando Varnish Cache en planes VPS

Cuando termine, vaya al siguiente paso para completar el Purga y purgador de laca Módulos que incluyen cualquier Etiquetas de caché o PROHIBICIÓN Valores requeridos por sección en sitios web de alto tráfico

Paso 4: configurar la administración del módulo de administración de caché de Drupal

Drupal 8 Los editores web deben poder ver la Caché de pintura, Calentar y configurar caché con contenido Etiquetas de caché para eliminar diferentes secciones de contenido o tipos de contenido en el comando. Utilizar el Purga y purgador de laca Módulos para estas habilidades.

Navegar a: / admin / config / development / performance / purge y elige «Limpiador de pintura» como limpieza estándar para la caché:

Cómo alojar sitios web de Drupal 8 usando Varnish Cache en planes VPS

Guarde la configuración y seleccione una nueva etiqueta para la configuración. Escoger «Etiqueta» Para el Arte y entrar 127.0.0.1 Para el Nombre de host Con Puerto 80 (Ubuntu) o 8080 (Debian) como valores predeterminados.

Asegúrate de estar contratado «PROHIBICIÓN» como método de solicitud con la configuración HTTP en el esquema:

Cómo alojar sitios web de Drupal 8 usando Varnish Cache en planes VPS

Guarde la configuración y haga clic en eso «Titulares» Pestaña de configuración «Eliminar etiquetas de caché» como el Encabezamiento y «[invalidation:expression]» cómo valor:

Cómo alojar sitios web de Drupal 8 usando Varnish Cache en planes VPS

Haga clic en el «Configurar el registro » enlace y marque todas las casillas para el purger_varnish_xxx Valor:

Cómo alojar sitios web de Drupal 8 usando Varnish Cache en planes VPS

Drupal 8 Los desarrolladores pueden usar Drush para borrar el pintura Almacenamiento temporal:

drush varnish-purge-all

Navegar a: / admin / config / development / performance / purge para borrar el Caché de pintura o usa el Drush Comando con herramientas CLI. Algunos usuarios de D8 prefieren Desarrollar Módulo.

Drupal 8 Los desarrolladores pueden utilizar herramientas como isvarnishworking.uk o. usar PanteónVarnish Check para probar el estado de la instalación en su servidor web y páginas CMS.

Conclusión: Varnish Cache para sitios Drupal 8 muy utilizados

Caché de pintura es una parte absolutamente esencial de un Drupal 8 Pila de servidores web para sitios web de alto tráfico que a menudo tienen más de 100 usuarios simultáneos o millones de visitas.

Caché de pintura funciona mejor con NGINX, la Adv Agg Módulo, Redis, Memcached, Zend opcache, APC, & a CDN Servicio para optimizar un Drupal 8 Servidor web para mayor velocidad.

Drupal 8 Los editores web requieren al menos un VPS o Servidor dedicado planear correr Caché de pintura o elige un hosting en la nube planificar con Caché de pintura pre instalado.