Настройте Magento 2 для использования Varnish на CentOS 7

Magento 2 с Varnish

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

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

Предпосылки

Убедитесь, что вы выполнили инструкции из первого поста и у вас включен репозиторий EPEL .

Как это работает

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

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

Если посетитель откроет ваш сайт без SSL на порту 80 , то Varnish перенаправит его на URL-адрес HTTPS на порту 443 .

Настройка Nginx

Нам нужно отредактировать блок сервера 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 Server по умолчанию из файла nginx.conf . Закомментируйте или удалите следующие строки:

/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

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 в качестве внутреннего хоста и port 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 в качестве кэша всей страницы.

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

Magento Ecommerce Centos Lac

Эта публикация является частью серии «Как установить и настроить Magento 2 на CentOS 7» .
Другие посты в этой серии:

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *