Настройка конфигурации Magento 2 для Varnish на CentOS 7

Настройка конфигурации Magento 2 для Varnish на CentOS 7

18 Декабря 2019 | CentOS

Руководство об установке и настройке Varnish, чтобы увеличить скорость загрузки Magento

Настройка конфигурации Magento 2 для Varnish на CentOS 7

Скорость страницы или время загрузки имеют решающее значение для успеха вашего интернет-магазина. Время загрузки - это общее количество времени, которое требуется для загрузки содержимого определенной страницы. Чем дольше время загрузки, тем ниже коэффициент конверсии. Это также один из самых важных факторов, который Google учитывает при определении рейтинга в поисковых системах.

В первом посте мы установили Magento 2 на нашу машину CentOS 7. Во втором посте этой серии мы расскажем об установке и настройке Varnish, чтобы сделать наш магазин Magento очень быстрым.

Varnish не поддерживает SSL, поэтому нам нужно использовать другую службу в качестве прокси-сервера завершения SSL, в нашем случае это будет Nginx .

Когда посетитель открывает ваш веб-сайт через HTTPS 443 порт, запрос обрабатывается Nginx, который работает как прокси-сервер и передает запрос в Varnish (через порт 80). Varnish проверяет, кешируется ли запрос или нет. Если он кэшируется, Varnish вернет кэшированные данные в Nginx без запроса к приложению Magento. Если запрос не кэшируется, Varnish передает запрос в Nginx через порт 8080, который будет извлекать данные из Magento, а Varnish будет кэшировать ответ. Если посетитель открывает ваш веб-сайт без SSL порта 80, он будет перенаправлен на HTTPS 443 порт с помощью Varnish.

Нам нужно отредактировать блок сервера Nginx, который мы создали в первом посте, для обработки завершения SSL / TLS и в качестве бэк-энда для 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;
    }
}


Нам также нужно удалить из nginx.conf файла блок сервера Nginx по умолчанию . Прокомментируйте или удалите следующие строки:

/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 {
#     }
# }
...


Перезагрузите службу Nginx, чтобы изменения вступили в силу:

sudo systemctl reload nginx

Varnish - это быстрый HTTP-акселератор с обратным прокси-сервером, который будет установлен перед нашим веб-сервером и будет использоваться в качестве Full Page Cache решения для нашей установки Magento.

Установите Varnish через yum с помощью следующей команды:

sudo yum install varnish

Чтобы настроить Magento для использования Varnish запустите команду:

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

Далее нам нужно сгенерировать файл конфигурации Varnish:

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

Приведенную выше команду необходимо запускать как пользователь root или пользователь с привилегиями sudo, и она создаст файл, /etc/varnish/default.vcl используя значения по умолчанию, которые являются localhost - внутренним хостом, а порт 8080 - внутренним портом.

Конфигурация по умолчанию идет с неправильным URL для файла проверки работоспособности. Откройте default.vcl файл и удалите /pub деталь из линии, выделенной желтым цветом:

/etc/varnish/default.vcl
...

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

...

По умолчанию Varnish прослушивает порт 6081, и нам нужно изменить его на 80: /etc/varnish/varnish.params

VARNISH_LISTEN_PORT=80
Как только вы закончите с изменениями, запустите и включите сервис Varnish:

sudo systemctl enable varnish
sudo systemctl start varnish

Вы можете использовать varnishlog инструмент для просмотра веб-запросов в режиме реального времени и для отладки Varnish.

В этом уроке мы показали, как ускорить работу вашего экземпляра Magento, внедрив Varnish в качестве кэша.


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...