GNU/Linux >> Tutoriales Linux >  >> Cent OS

Configure Magento 2 para usar Varnish en CentOS 7

La velocidad de la página o el tiempo de carga es crucial para el éxito de tu tienda online. El tiempo de carga es la cantidad total de tiempo que tarda en cargarse el contenido de una página específica. Cuanto mayor sea el tiempo de carga, menor será la tasa de conversión. También es uno de los factores más importantes que Google considera para determinar la clasificación en los motores de búsqueda.

En la primera publicación, instalamos Magento 2 en nuestra máquina CentOS 7. En la segunda publicación de esta serie, cubriremos la instalación y configuración de Varnish para que nuestra tienda Magento sea súper rápida.

Requisitos previos #

Asegúrate de haber seguido las instrucciones de la primera publicación y de tener EPEL repositorio habilitado.

Cómo funciona #

Varnish no es compatible con SSL, por lo que debemos usar otro servicio como proxy de terminación SSL, en nuestro caso será Nginx.

Cuando un visitante abre su sitio web a través de HTTPS en el puerto 443 la solicitud será manejada por Nginx, que funciona como un proxy y pasa la solicitud a Varnish (en el puerto 80). Varnish comprueba si la solicitud se almacena en caché o no. Si está en caché, Varnish devolverá los datos almacenados en caché a Nginx sin una solicitud a la aplicación Magento. Si la solicitud no se almacena en caché, Varnish pasará la solicitud a Nginx en el puerto 8080 que extraerá datos de Magento y Varnish almacenará en caché la respuesta.

Si un visitante abre su sitio web sin SSL en el puerto 80 luego será redirigido al HTTPS en el puerto 443 URL de Varnish.

Configuración de Nginx #

Necesitamos editar el bloque del servidor Nginx que creamos en la primera publicación para manejar la terminación de SSL/TLS y como back-end para Varnish.

/etc/nginx/conf.d/example.com.conf
upstream fastcgi_backend {
  server   unix:/run/php-fpm/magento.sock;
}

server {
    listen 127.0.0.1:8080;
    server_name example.com www.example.com;

    set $MAGE_ROOT /opt/magento/public_html;
    set $MAGE_MODE developer; # or production

    include snippets/letsencrypt.conf;
    include /opt/magento/public_html/nginx.conf.sample;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    access_log /var/log/nginx/example.com-access.log;
    error_log /var/log/nginx/example.com-error.log;

    location / {
        proxy_pass http://127.0.0.1;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port 443;
    }
}

También debemos eliminar el bloque del servidor Nginx predeterminado del nginx.conf expediente. Comente o elimine las siguientes líneas:

/etc/nginx/nginx.conf
...
# server {
#     listen       80 default_server;
#     listen       [::]:80 default_server;
#     server_name  _;
#     root         /usr/share/nginx/html;
#
#     # Load configuration files for the default server block.
#     include /etc/nginx/default.d/*.conf;
#
#     location / {
#     }
#
#     error_page 404 /404.html;
#        location = /40x.html {
#     }
#
#     error_page 500 502 503 504 /50x.html;
#         location = /50x.html {
#     }
# }
...

Vuelva a cargar el servicio Nginx para que los cambios surtan efecto:

sudo systemctl reload nginx

Instalando y configurando Varnish #

Varnish es un acelerador HTTP de proxy inverso rápido que se ubicará frente a nuestro servidor web y se usará como un Full Page Cache solución para nuestra instalación de Magento.

Instale Varnish a través de yum con el siguiente comando:

sudo yum install varnish

Para configurar Magento para usar Varnish, ejecute:

php /opt/magento/public_html/bin/magento config:set --scope=default --scope-code=0 system/full_page_cache/caching_application 2

A continuación, debemos generar un archivo de configuración de Varnish:

sudo php /opt/magento/public_html/bin/magento varnish:vcl:generate > /etc/varnish/default.vcl

El comando anterior debe ejecutarse como root o usuario con privilegios sudo y creará un archivo /etc/varnish/default.vcl utilizando los valores predeterminados que son localhost como host de back-end y puerto 8080 como puerto de back-end.

La configuración predeterminada viene con una URL incorrecta para el archivo de verificación de estado. Abra el default.vcl archivo y elimine el /pub parte de la línea resaltada en amarillo:

/etc/varnish/default.vcl
...
.probe = {
     # .url = "/pub/health_check.php";
     .url = "/health_check.php";
     .timeout = 2s;
     .interval = 5s;
     .window = 10;
     .threshold = 5;
}
...

Por defecto, Varnish escucha en el puerto 6081 , y necesitamos cambiarlo a 80 :

/etc/varnish/varnish.params
VARNISH_LISTEN_PORT=80

Una vez que haya terminado con las modificaciones, inicie y habilite el servicio Varnish:

sudo systemctl enable varnishsudo systemctl start varnish

Puedes usar el varnishlog herramienta para ver solicitudes web en tiempo real y para depurar Varnish.


Cent OS
  1. Configurar VNC en CentOS 6 / RHEL 6

  2. Cómo usar sal en Centos 8

  3. Configurar servidores virtuales de Apache en CentOS 7

  4. Cómo configurar vsftpd para usar SSL/TLS (FTPS) en CentOS/Ubuntu

  5. Cómo configurar OpenSSH en CentOS 7

Cómo configurar OpenNMS en CentOS 7

Cómo configurar vTiger CRM en CentOS 7

Cómo configurar la dirección IP en CentOS 7/RHEL 7 y CentOS 6/RHEL 6

Cómo instalar Magento en CentOS 6

Cómo instalar y configurar GlusterFS en CentOS 7/CentOS 8

Cómo instalar Varnish en CentOS 7