Rychlost stránky nebo doba načítání je rozhodující pro úspěch vašeho internetového obchodu. Doba načítání je celková doba, kterou trvá načtení obsahu na konkrétní stránce. Čím delší je doba načítání, tím nižší je konverzní poměr. Je to také jeden z nejdůležitějších faktorů, které Google zvažuje při určování hodnocení ve vyhledávačích.
V prvním příspěvku jsme nainstalovali Magento 2 na náš stroj CentOS 7. Ve druhém příspěvku této série se budeme zabývat instalací a konfigurací laku, aby byl náš obchod Magento super rychlý.
Předpoklady #
Ujistěte se, že jste postupovali podle pokynů z prvního stojanu EPEL
úložiště povoleno.
Jak to funguje #
Varnish nepodporuje SSL, takže musíme použít jinou službu jako SSL Termination Proxy, v našem případě to bude Nginx.
Když návštěvník otevře váš web přes HTTPS
na portu 443
požadavek bude zpracován Nginx, který funguje jako proxy a předá požadavek do Varnish (na portu 80). Varnish zkontroluje, zda je požadavek uložen v mezipaměti nebo ne. Pokud je uložena v mezipaměti, Varnish vrátí data uložená v mezipaměti do Nginx bez požadavku na aplikaci Magento. Pokud požadavek není v mezipaměti, Varnish předá požadavek Nginx na portu 8080
který vytáhne data z Magento a Varnish uloží odpověď do mezipaměti.
Pokud návštěvník otevře váš web bez SSL
na portu 80
poté bude přesměrován na HTTPS
na portu 443
URL by Varnish.
Konfigurace Nginx #
Potřebujeme upravit blok serveru Nginx, který jsme vytvořili v prvním příspěvku, aby zvládl ukončení SSL/TLS a jako back-end pro Varnish.
/etc/nginx/conf.d/example.com.confupstream 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;
}
}
Musíme také odstranit výchozí blok serveru Nginx z nginx.conf
soubor. Zakomentujte nebo odstraňte následující řádky:
...
# 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 {
# }
# }
...
Znovu načtěte službu Nginx, aby se změny projevily:
sudo systemctl reload nginx
Instalace a konfigurace laku #
Varnish je rychlý reverzní proxy HTTP akcelerátor, který bude umístěn před naším webovým serverem a bude použit jako Full Page Cache
řešení pro naši instalaci Magento.
Nainstalujte Varnish přes yum pomocí následujícího příkazu:
sudo yum install varnish
Chcete-li nakonfigurovat Magento pro použití Varnish, spusťte:
php /opt/magento/public_html/bin/magento config:set --scope=default --scope-code=0 system/full_page_cache/caching_application 2
Dále musíme vygenerovat konfigurační soubor Varnish:
sudo php /opt/magento/public_html/bin/magento varnish:vcl:generate > /etc/varnish/default.vcl
Výše uvedený příkaz je třeba spustit jako root nebo uživatel s právy sudo a vytvoří soubor /etc/varnish/default.vcl
pomocí výchozích hodnot, kterými jsou localhost
jako koncový hostitel a port 8080
jako back-end port.
Výchozí konfigurace je dodávána s nesprávnou adresou URL pro soubor kontroly stavu. Otevřete soubor default.vcl
a odstraňte /pub
část z řádku zvýrazněného žlutě:
...
.probe = {
# .url = "/pub/health_check.php";
.url = "/health_check.php";
.timeout = 2s;
.interval = 5s;
.window = 10;
.threshold = 5;
}
...
Ve výchozím nastavení Varnish naslouchá na portu 6081
a musíme jej změnit na 80
:
VARNISH_LISTEN_PORT=80
Jakmile budete s úpravami hotovi, spusťte a povolte službu Lakování:
sudo systemctl enable varnish
sudo systemctl start varnish
Můžete použít varnishlog
nástroj pro zobrazení webových požadavků v reálném čase a pro ladění Varnish.