Varnish Cache + Nginx + SSD VPS = Még gyorsabb weboldal

|

Versanus Kft.
Versanus Kft.

Két hete adtuk hírül, hogy elindítottuk új SSD szerverünket, amelyhez írtunk is egy sebességmérő cikket, amiben részletesen bemutatjuk, hogyan mértük le egy WordPress oldallal, hogy akár 60%-kal gyorsabban is betölthető ugyan az a rendszer. Olvassa el, érdemes! Most tovább mentünk és rátettünk még egy lapáttal.

Az eredeti méréseket egyik webtárhelyünkön végeztük. Akármennyire is robosztus a cPanel, megvan a maga korlátozottsága. Ebbe ütköztünk bele, amikor az egyik ügyfelünk Varnish Cache-t szeretett volna tenni a Magento webáruháza alá, amely egy villámgyors betöltést segítő gyorsítótárazó (a cikk közepén van egy videó, amely bemutatja a működését). Azonban a cPanel mesterünk azt mondta, ez már VPS kategória. És igaza van.

Ezért házon belül oldottuk meg a kérdést, és a A SolusVM-ben elindítottunk egy erre a célra dedikált VPS-t, azaz egy virtuális privát szervert. Ez a cikk ennek beüzemeléséről és az újabb sebességmérési eredményekről szól.



A VPS alapjai:

Itt is kezdjük az alapoknál. Az SSD szerverünk úgy lett kialakítva, hogy nem csak cPanel alapú webtárhelyeket képes kiszolgálni, hanem egyedi igényekre szabott virtuális privát szervereket is. Ennek alapjait egy XEN hypervisor adja, valamint a Solus Virtual Manager (SolusVM) nevű szoftver, amely egy egyszerű böngészőben futó VPS kezelő és irányító felület, amivel könnyen kezelheti virtuális gépeit. Leállíthatja, újraindíthatja vagy újratöltheti a virtuális gépét, kicserélheti a root fiók jelszavát, stb. Itt hoztuk létre és indítottuk el a Varnish Cache kiszolgálására az új VPS-t.

Szerver információk:
      • SSD szerver
      • Versanus Mini VPS, 2 CPU mag, 1GB ram - szóval még nem is az a brutális gép. A legnagyob csomagunkban 6 CPU mag és 8GB ram van.
      • Ubuntu: 16.04 LTS - minden szoftver apt-get csomagkezelővel egyszerűen telepítve
      • PHP: 7.0.22
      • Nginx: 1.10.3
      • Varnish Cache: v4 - A Varnish jellemzően memóriában cache-el, ezért itt meg kell jegyezni, hogy az 1GB RAM átgondolandó.
      • Content-Encoding: gzip, deflate
      • Connection: keep-alive
      • DEMO: a méréshez ugyan azt a WordPressz alapot használtuk, amit korábban telepítettünk az SSD sebességmérő cikkhez.
      • INFO: mivel nem Apache webszerver van használva, ezért némileg eltér, mert a .htaccess paramétereket át kellett írni Nginx-re


Mérési eredmények:
A méréseket ugyanazokon az oldalakon végeztük el, mint korábban. Szemmel láthatóan is még gyorsabb lett az oldal, és egyes mérő oldalak esetén további másodperceket is nyertünk. Ami viszont elsőre nem látszik ezért szeretnénk kiemelni, hogy a request (szerver felé érkező kérések száma egy betöltés alatt) 152-ről 57-re csökkent, azaz 100 requestel kevesebb a jövés menés, köszönhető a gyorsítótárnak és az Nginx féle megoldásoknak.

HDD szerveren mért eredmények:
Gtmetrix: 9.4 mp
Pingdom: 5.07 mp
Webpagetest: 9.8 mp
Chrome konzol: 5.6 mp

SSD szerveren mért eredmények:
Gtmetrix: 3.8 mp
Pingdom: 1.11 mp
Webpagetest: 5.4 mp
Chrome konzol: 2.6 mp

VPS szerveren mért eredmények:
Gtmetrix: 2.9 mp
Pingdom: 0.9 mp
Webpagetest: 3.6 mp
Chrome konzol: 1.7 mp



GTmetrix számai:
Mérés helyszíne: Vancouver, Böngésző: Firefox
VPS szerveren mért sebesség:
MIT LÁTNI?: A korábbi SSD méréshez képest a VPS-en a PageSpeed 84-ről 96%-ra emelkedett és A minősítést kapott. További közel 1 másodpercet nyertünk (HDD szerverhez képest közel 6 mp-et) és a már korábban említett 57-es request szám is nagyon látványos javulás.

SSD szerveren mért sebesség:


 

Pingdom számai:
Mérés helyszíne: Stockholm, Böngésző: -
VPS szerveren mért sebesség:
MIT LÁTNI?: Itt már nem látszik annyi információ, de lényegében ugyanazt mutatja mint a korábbi teszt, csak másik országból. Itt is átkerült az oldal a maga 98 pontjával A minőségű besorolásba és nagyon látványos 892-es mért időt mutat, azaz kevesebb, mnt 1 másodperc alatti (HDD-n 5mp volt) betöltési időt mért, ezzel 91%-kal gyorsabb, mint a többi tesztelt weboldal. Nagyon szép!

SSD szerveren mért sebesség:



 

WebPageTest számai:
Mérés helyszíne: Amsterdam, Böngésző: Chrome
MIT LÁTNI?: És végül egy mérés Amsterdamból. Itt is további másodperceket nyertünk, 5.4-ről 3.6 másodpercre csökkent a betöltési idő. HDD-n itt 9.8 mp volt az eredeti mérésünk szerint. Amit még kiemelnék, az a First Bíte Time, ami szintén szép zöld lett.
VPS szerveren mért sebesség:

SSD szerveren mért sebesség:


 

Chrome számai:
Mérés helyszíne: Budapest - Versanus iroda, Böngésző: Chrome
VPS szerveren mért sebesség:
MIT LÁTNI?: Windows és Chrome böngésző esetén az F12-es gombot megnyomva feljön egy panel, ahol ha a Network fület választjuk, majd megnyitjuk az adott oldalt, az leméri ugyanezeket az adatokat, csak a teszt "rendszer" ezesetben a saját gépünk és az az internet vonal, amire épp csatlakozunk. Itt is közel egy másodperccel gyorsabb volt az oldal betöltése.

SSD szerveren mért sebesség:


 

Minket meggyőzött!

Ha Önnek is tetszenek a számok, akkor nézzen körül VPS csomagjaink között, majd számolja ki, hogy egy cPanel éves díjához képest, megéri-e váltania saját SSD alaú VPS szerverre a sebességért cserébe. Itt már nem 60% gyorsulásról beszélünk, hanem akár 80-90%-ról. Elképesztő!

 

Hogyan építettük fel?

És ha kedvet kapott ahhoz, hogy kipróbálja, akkor röviden, a teljes rendszergazdai igényesség nélkül leírjuk a legfőbb lépéseket ahhoz, hogy felépítse saját VPS webszerverét ugyan ezekre az alapokra. Lépésről lépésre!

SolusVM belépés:
Miután megkapta az ügyfélszolgálatunktól a VPS hozzáféréseket, lépjen be a böngésző alapú adminisztrációs felületre. Adja meg a kapott felhasználónevet és jelszót. Belépés után az alábbi képernyő fogadja.

Itt kattintson a Serial Console ikonra, majd a Create Session gombra. Ekkor megkapja a konzol IP címét, az ideiglenes root felhasználónevet és jelszót. Ezekkel már be tud lépni a szerverre egy SSH kliens segítségével, Windows esetén például a Putty nevű programot ajánlom.


SSH (Putty) belépés:
Ha megvan az ideiglenes root felhasználónév és jelszó, telepítse a Putty-ot, majd indítsa el. A Host Name (or IP address) sorba írja be a fent kapott konzol IP címét illetve a port számot, majd kattintson az Open gombra. Először felugrik egy ablak, amit fogadjon el, majd elindul az SSH bejelentkezés. Ez egy egyszerű fekete ablak, amiben ki lesz írva, hogy login as. Ide irja be a fent kapott ideiglenes felhasználónevet, majd Enter. aztán gépelje be a jelszót, vagy SHIFT+Inserttel másolja be, majd Enter.


Új ROOT user készítése
Miután sikerült a belépés, ídja ki ezt a parancsot: adduser username - az username helyére írja be a használki kívánt felhasználónevet, én esetemben ez meheszp, majd Enter. Itt kérni fogja a jelszót és egyéb adatokat, mint teljes név, telefonszám, stb. A kért adatokat adja meg, soronként nyomjon Entert.
A felhasználó létrejötte után, hozzá kell adni a root jogosultsághoz, az alábbi paranccsal: usermod -aG sudo username - itt az username helyére szintén a sajátját írja be.
Végül tesztelje le. Írja be az alábbi parancsot: sudo ls -la /root - majd írja be az előbb megadott jelszót. És már működik is a fiókja a megfelelő jogosultságokkal.
Írja be, hogy exit, Enter. Majd még egyszer Exit, amíg a Putty, azaz a feketa ablak be nem zár.

Most menjen vissza a SolusVM felületére, ahol látja a konzol és egyéb ideiglenes adatokat. Itt kattintson a piros Cancel Session gombra, majd a megjelenő kék Back gombra. ezután a jobb felső sarokban látható névre kattintva Logout-al lépjen ki.

Ismét indítsa el a Putty SSH programot, de most már az IP címhez a szerver publikus IP címét írja be, ami a SolusVM-be belépve is látható, valamint mi is megküldtük Önnek. A portszám 22. A Saved Session mezőbe is írja be az IP címet (vagy bármilyen fantázianevet, amivel tudni fogja azonosítani a szervert). A Bal oldali menüből válassza ki a Window / Translation opciót és a Remote character set-nél állítsa be az UTF-8-at, vagy az ISO-8859-2-t. Kattintson újra a bal oldali menüben a legfelső Session pontra. Most már el tudja menteni a beállításokat az ablakban látható jobb oldali Save gombra kattintva. Ha később elindítja a Putty-ot, akkor már itt lesz elmentve a kapcsolat, csak rá kell kattintani, majd az Open gombra kattintva indíthatja is.


Programok telepítése
Ez egy időigényes folyamat és csak a legfőbb lépéseket vezetjük végig, és nem fejtjük ki, mit miért kell beírni, elvégezni. Vágjunk bele!
A fentiek szerint Putty elindítása, majd belépés. A login as után írja be a létrehozott felhasználót és a jelszavát. Majd írja be ezt a parancsot: sudo su - - ez még egyszer bekéri a fiók jelszavát. Gépelje be, majd Enter. Ekkor megjelenik root@ kezdetű név, azaz mostantól rendszergazdai jogokkal bír.

Az alábbi parancsokkal telepítse a szükséges programokat. Sok-sok sor fog futni, időnként megáll és kérdéseket fog feltenni, azokra válaszoljon Y-al, azaz Yes-el, azaz Igennel.
apt-get update
apt-get upgrade - ha itt rákérdez a karakterkódolásra, válassza az UTF-8-at
apt-get install varnish - varnish cache telepítése
apt-get install nginx - nginx webszerver telepítése
apt-get install mysql-server - mysql szerver telepítése. Itt kérni fogja az adatbázis szerver root felhasználó jelszavát. Adjon meg egyet, de jól írja fel!
apt-get install php-fpm php-mysql - php telepítése
apt-get install phpmyadmin - phpmyadmin felület telepítése a webes adatbáziskezeléshez
apt-get install php-bcmath php-bz2 php-curl php-imap php-intl php-json php-soap php-tidy php-xmlrpc php-zip php-mbstring - ezek feltelepítenek fontosabb PHP kiegészítő csomagokat. Mindegyiknél nyomjon Yes-t.
Ezekről nem készítettem képernyőmentéseket, mert nem túl látványos, ahogy szaladgálnak a sorok a monitoron.


Midnight Commander elindítása
Több szövegszerkesztő is alkalmas a konfigurációs fájlok szerkesztésére, de én most a Midnight Commander beépített szerkesztőjét fogom használni. Windows környezetből ismerős lehet a jó öreg Total Commander. Hasonlóan lehet benne mozogni. Írja be a mc parancsot, Enter. Ekkor elindul ez a szép kék ablak. Ebben navigálva keresse meg a szerkesztendő fájlt, nyomjon rajta F4 gombot a szerkesztésre. Itt ha megkérdezi, hogy melyik szerkesztőt szeretné használni, válassza az mcedit, azaz 1-es opciót.


Varnish konfigurálása
A weboldalak kiszolgálása alap esetben a 80-as porton történik, https-en, azaz SSL használatávíl titkosítva a 443-on. Mi most a mintában nem teszünk fel SSL-t, azért maradunk a 80-as port használatánál. Azonban a Varnish Cache úgy működik, hogy "beépül" az Nginx webszerver elé, azaz mind a Varnish, mind az Nginx konfigurációját át kell tenni. Azaz a Varnish fogja figyelni a 80-as porot, az Nginx pedig átkerül a 8080-ra.
Egy angol nyelvű videó a Varnish működéséről:


Futtassa az alábbi parancsot, úgy hogy előbb F10-el kilép az MC-ből:
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,1G

Indítsa újra az MC-t, majd keresse meg és nyissa meg ezt a fájlt: /etc/varnish/default.vcl
Írja át illetve írja be ezeket a sorokat:
backend default {
.host = "127.0.0.1";
.port = "8080";
}
valamint:
sub vcl_backend_response {
set beresp.ttl = 5m;
}
F2 gombra nyomva mentse el a módosításokat, majd F10-el lépjen ki a szerkesztésből, hogy vissza lépjen az MC programba.

Most keresse meg és nyissa meg ezt a fájlt: /etc/default/varnish
Írja át illetve írja be ezeket a sorokat:
START=yes
valamint a képernyő mentés szerint:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,1G"
és:
VARNISH_LISTEN_PORT=80
F2 gombra nyomva mentse el a módosításokat, majd F10-el lépjen ki a szerkesztésből, hogy vissza lépjen az MC programba.


Nginx konfigurálása
Nagyon nem megyünk bele a Ninx beállításainak a részleteibe, csak azokat mutatom meg felületesen, amiket átírunk az alap konfigurációhoz képest.
Keresse meg és nyissa meg ezt a fájlt: /etc/nginx/nginx.conf
Írja át illetve írja be ezeket a sorokat:
server_names_hash_bucket_size 64; - innen vegye ki a sor elejéről a # jelet
valamint kapcsolja be a GZIP futását, úgy, hogy a képernyő szerinti sorok elől is törli a # jeleket:
gzip on; - stb...
F2 gombra nyomva mentse el a módosításokat, majd F10-el lépjen ki a szerkesztésből, hogy vissza lépjen az MC programba.

Az Nginx további beálításait már a futtatandó weboldal virtuális hoszt fájljában kell elvégezni. Most nem térek ki külön a "vhost" fájlok létrehozására, megelégszünk azzal, amit az Nginx létrehozott a telepítése során
Keresse meg és nyissa meg ezt a fájlt: /etc/nginx/sites-available/default - és írjuk át illetve írja be ezeket a sorokat.

Tegyük át a weboldal betöltését a 8080-as portra, hiszen az alap 80-as portra előbb tettük át a Varnish Cache figyelését-t:
listen 8080;
listen [::]:8080;


valamint látszik az alapértelmezett weboldal root mappája. Ha a /var/www/html mappába feltölti a honlapot, legyen az akár egy WordPress, akkor a szerver IP címét, vagy ha beállít domain címet a host fájlban, akkor az elindul. Domain címet pedig a server_name sorban kell megadni.

Kapcsoljuk be a PHP futtatási lehetőséget úgy, hogy egyes soroktól kivesszük a # jelet:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}


Kapcsoljuk be a böngésző oldali gyorsítótárazást:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
location ~* \.(pdf)$ {
expires 30d;
}


És adjuk hozzá a PhpMyAdmin betöltési lehetőségét is:
location /phpmyadmin {
root /usr/share/;
index index.php;
try_files $uri $uri/ =404;
}
location ~ ^/phpmyadmin/(doc|sql|setup)/ {
deny all;
}
location ~ /phpmyadmin/(.+\.php)$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}

Ezzel a IP/phpmyadmin címet beírva elérhetővé válik

F2 gombra nyomva mentse el a módosításokat, majd F10-el lépjen ki a szerkesztésből, hogy vissza lépjen az MC programba.


Modosítások aktiválása:
Nyomja meg még egyszer az F10-es gombot, hogy kilépjen az MC-ből. Újra a fekete "command line"-ban vagyunk, ahol sorban adja ki az alábbi parancsokat, Enterekkel:
systemctl enable varnish.service - varnish szervíz szolgáltatás engedélyezése
systemctl start varnish.service - varnish szervíz indítása
systemctl daemon-reload - démon újratöltése
systemctl restart varnish - a mentett varnish konfigurációval a szervíz újraindítása
nginx -t - nginx konfiguráció tesztelése, és ha rendben van
systemctl restart nginx - nginx újraindítása

netstat -ntlp - ezt beírva megnézheti a port kiosztásokat. Ha az Nginx a 8080-as porton van, a Varnish pedig a 80-on, akkor jól csináltuk és biztos lehet abban, hogy működni fog a gyorsítótárazás. Tesztelheti ezen a weboldalon is: isvarnishworking.com, valamint úgy, hogy beírja a szerveren a varnishstat parancsot, majd megnyitja a böngészőben a telepített weboldalt és nézi, hogy mi történeik.


 

Ezzel "elkészültünk"!

Azért teszem idézőjelbe, hogy "elkészültünk", mert egy szerver konfigurálása szinte sosincs kész, azt folyamatosan figyelni kell, hangolni, stb. Most még a PHP konfigurálásába bele sem mentünk. Na meg nagyon sok mindenbe nem, például egyedi Varnich beállításokba sem, mert szinte rendszerenként lehet állítgatni. Más más igénye van egy Magentonak meg egy WordPressnek. De most nem is az volt a cél. Betekintést adtunk abba, hogy hogyan lehet elkezdeni építeni egyedi szerver konfigurációkat, valamint arra, hogyan reagálunk egyedi igényekre, ha már a webtárhely lehetőségeket kinőtte az ügyfél.

No meg úgy gondolom, hogy mélyebb tudással rendelkezők szakemberek végeznek ilyet. Célom tehát sokkal inkább egy egyszerű gondolatébresztő megírása volt, mellyel igen jelentős sebesség növekedés, ez által pedig felhasználói elégedettség érhető el weboldalain.

Olvassa át újra korábbi SSD cPanel webtárhely sebességmérő cikkünket, tekintse át ennek a cikknek az elején bemutatott újabb sebességmérési eredményeinket és mérlegeljen. A 10GB os Prémium cPanel webtárhely csomagunk 15.000 Ft + ÁFA/év. Az akár 60%-kal gyorsabb betöltést biztosító SSD opció ára további 5.000 Ft + ÁFA/év. A mérés alapját biztosító kezdő VPS csomagunk 3.000 Ft + ÁFA/év, azaz netto 36.000 Ft, plusz ha nincs saját rendszergazdája és tőlünk kérné az üzemeltetést, akkor annak díja megegyezés szerint, valamint az egyedi IP cím, amit csak az Ön szervere kap, ezzel is leválasztva minden más weboldal forgalmától. Ezért a megoldással viszont nagyságrendekkel gyorsabb weboldal betöltést nyer! A Prémium csomagunkhoz képest ez már Ultimate.


Iratkozzon fel hírlevelünkre. Kérjük, adja meg nevét és e-mail címét.