
Скорость загрузки страницы или время загрузки критически важны для успеха вашего интернет-магазина. Время загрузки — это общее время, необходимое для загрузки контента на конкретной странице. Чем дольше время загрузки, тем ниже коэффициент конверсии. Это также один из важнейших факторов, учитываемых 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 varnishsudo systemctl start varnish
Вы можете использовать инструмент varnishlog для просмотра веб-запросов в реальном времени и отладки Varnish.
Заключение
В этом уроке мы показали, как ускорить ваш экземпляр Magento, внедрив Varnish в качестве кэша всей страницы.
Если у вас возникнут какие-либо проблемы, оставьте комментарий ниже.
Эта публикация является частью серии «Как установить и настроить Magento 2 на CentOS 7» .
Другие посты в этой серии:
Связанные руководства
- Установить Magento 2 на CentOS 7
- Как установить Magento 2 на Ubuntu 18.04
- Как установить и настроить Zabbix на CentOS 7
- Как установить текстовый редактор Atom на CentOS 7
- Как установить Sublime Text 3 на CentOS 7
- Как установить Visual Studio Code на CentOS 7
- Как установить VMware Workstation Player на CentOS 7