Redis je open-source in-memory cache a úložný systém, označovaný aj ako server dátových štruktúr. Ponúka pokročilú podporu pre niekoľko dátových typov, ako sú hashe, zoznamy, množiny, bitmapy a mnohé ďalšie. Vďaka svojmu vynikajúcemu výkonu si Redis získal popularitu v popredných odvetviach a špičkových nadnárodných spoločnostiach.
Výhody Redis
Pokiaľ ide o rýchlosť, serverom Redis sa nič nevyrovná. Ako NoSQL databázový server ponúka fantastickú rýchlosť ukladania a získavania dát. Okrem toho má Redis vynikajúce funkcie, vďaka ktorým je práca s rôznymi dátami, vrátane tých komplexných, bezproblémová. Jednoduchosť používania a sofistikované funkcie Redis nielenže pomohli tomuto systému vyniknúť, ale umožnili aj jeho rastúcu štandardizáciu ako mainstreamovej databázy pre firemných aj individuálnych používateľov.
Nižšie podrobne popíšeme kroky, ktoré vám pomôžu nainštalovať Redis na softvér Ubuntu 20.04. V tomto návode získate všetky potrebné informácie od inštalácie až po konfiguráciu externého servera Redis, ktorý sa bude používať ako session handler pre PHP aplikáciu bežiacu na Ubuntu 20.04.
Začíname
Na vykonanie týchto krokov budete potrebovať dva rôzne databázové servery (droplety) umiestnené v rovnakom dátovom centre s povolenou privátnou sieťou. Patria sem:
-
PHP webový server bežiaci na LAMP a LEMP na Ubuntu 20.04 – tento server budeme označovať ako web.
-
Druhý, čistý server Ubuntu 20.04, na ktorom bude nainštalovaný Redis – tento server budeme označovať ako redis.
Krok 1 — Inštalácia servera Redis
Naším prvým krokom je inštalácia servera Redis na Ubuntu 20.04. Po dokončení sa uistite, že server beží na našom redis Droplete.
V tomto návode budeme používať Personal Package Archives (PPA). Z bezpečnostných dôvodov dôrazne odporúčame použiť PPA. V porovnaní s inými repozitármi tretích strán sú PPA stabilné, ľahko sa inštalujú a predovšetkým je tento repozitár navrhnutý pre používateľov Ubuntu. PPA vám umožňuje získať najnovšiu dostupnú verziu softvéru, a to aj pre softvér, ktorý nenájdete v oficiálnych repozitároch Ubuntu.
Používanie PPA z neautorizovaného zdroja je absolútne nevhodné. Uistite sa, že PPA získavate len z autentických a overených zdrojov. Repozitár PPA môžete pridať pomocou príkazu:
|
1 |
sudo add-apt-repository ppa:chris-lea/redis-server |
Stlačením klávesu Enter potvrďte. Po potvrdení aktualizujeme vyrovnávaciu pamäť správcu balíkov pomocou nasledujúceho príkazu:
|
1 |
sudo apt-get update |
Ďalej nainštalujeme Redis pomocou príkazu:
|
1 |
sudo apt-get install redis-server |
Po spustení príkazu budete mať Redis nainštalovaný na vašom serveri. Otestujme inštaláciu pomocou príkazu:
|
1 |
redis-cli ping |
Po zadaní príkazu uvidíte inštanciu Redis bežiacu na localhost na porte 6379. Taktiež sa zobrazí odpoveď s názvom PONG. Ak to vidíte, znamená to, že ste úspešne dokončili prvý krok. Podrobný návod na inštaláciu a zabezpečenie Redis nájdete v našom návode Ako nainštalovať a zabezpečiť Redis na Ubuntu 18.04.
Ďalej prejdime k ďalšiemu kroku – konfigurácii Redis.
Step 2 — Redis Configuration to Accept External Connections
Hlavným cieľom konfigurácie Redis je prijímanie pripojení prichádzajúcich zvonku. Prečo? Pretože Redis predvolene povoľuje pripojenia iba k localhost, a pripojenie odinakiaľ je obmedzené. Zjednodušene povedané, prístup budete mať len z vnútra servera, na ktorom máte Redis nainštalovaný.
Najprv získajte podrobný prehľad o svojich sieťových rozhraniach pomocou príkazu ifconfig :
|
1 |
sudo ifconfig |
Získate nasledujúci výstup:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
eth0 Link encap:Ethernet HWaddr 04:01:63:7e:a4:01 inet addr:188.166.77.33 Bcast:188.166.127.255 Mask:255.255.192.0 inet6 addr: fe80::601:63ff:fe7e:a401/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3497 errors:0 dropped:0 overruns:0 frame:0 TX packets:3554 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4895060 (4.8 MB) TX bytes:619070 (619.0 KB) eth1 Link encap:Ethernet HWaddr 04:01:63:7e:a4:02 inet addr:10.133.14.9 Bcast:10.133.255.255 Mask:255.255.0.0 inet6 addr: fe80::601:63ff:fe7e:a402/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:648 (648.0 B) TX bytes:578 (578.0 B) |
Na eth1 rozhraní nájdete inet_addr. Tu máme 10.133.14.9. Túto IP adresu použijeme v nasledujúcich krokoch na pripojenie redis servera z web servera.
Step 3— Localhost Binding
Môžete slobodne použiť editor kódu podľa vlastného výberu (najpopulárnejšie sú Atom a Visual Studio Code).
Teraz otvorte súbor /etc/redis/redis.conf a vyhľadajte riadok, ktorý obsahuje bind definíciu. Mali by ste pridať svoju IP adresu privátnej siete do riadku:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 |
bind localhost 10.133.14 |
Môžete vidieť localhost, namiesto 127.0.0.1. Žiadne obavy, stačí pridať vašu privátnu IP adresu. Potom reštartujte službu Redis, aby sa zmeny prejavili. Na reštartovanie redis servera použite nasledujúci príkaz:
|
1 |
sudo service redis-server restart |
Pre používateľov, ktorí si nainštalovali Redis pomocou aplikácie na jedno kliknutie, použite na reštartovanie servera nižšie uvedený príkaz:
|
1 |
sudo service redis restart |
Po reštartovaní redis servera sa akýkoľvek server v rovnakej privátnej sieti automaticky pripojí k tejto inštancii Redis bez toho, aby ste to museli robiť jednotlivo.
Krok 4 — Nastavenie hesla pre Redis server
Tento krok môžete preskočiť, ak používate inštaláciu Redis na cvičné alebo školiace účely. Nastavenie hesla pre redis server sa však dôrazne odporúča, ak chcete pridať ďalšiu vrstvu zabezpečenia vašej inštalácie Redis. Upravme rovnaký konfiguračný súbor ako v predchádzajúcom kroku. Na úpravu použite príkaz:
|
1 |
sudo vim /etc/redis/redis.conf |
Odkomentujte riadok, ktorý obsahuje requirepass, a nastavte silné heslo:
|
1 |
requirepass StrongPassword |
Reštartujte službu Redis, aby sa prejavili zmeny, ktoré ste vykonali. Na reštartovanie použite príkaz:
|
1 |
sudo service redis-server restart |
Step 5 — Redis Connection and Authentication Testing
V tomto kroku sa pripojíme k službe Redis z vnútra stroja redis, aby sme sa uistili, že všetky vykonané zmeny fungujú bezproblémovo podľa očakávania. Na pripojenie použite nižšie uvedený príkaz:
|
1 |
redis-cli -h 10.133.14.9 |
Tu platí, že aj keď vynecháte zadanie názvu hostiteľa, stále sa to spustí. Naším hlavným cieľom je uistiť sa, že služba Redis bezproblémovo prijíma pripojenia:
|
1 |
10.133.14.9:6379> |
Je možné, že dostanete chybu AUTH pri pokuse o prístup k údajom pomocou definovaného hesla:
|
1 |
10.133.14.9:6379> keys * |
Váš výstup bude vyzerať podobne ako tento:
|
1 2 |
OUTPUT: (error) NOAUTH Authentication required. |
Na autentifikáciu spustite príkaz AUTH spolu s rovnakým heslom, aké ste definovali v súbore /etc/redis/redis.conf súbore:
|
1 |
10.133.14.9:6379> AUTH StrongPassword |
Potom príkaz spustite znova:
|
1 |
10.133.14.9:6379> keys * |
Tentoraz dostanete ako odpoveď OK namiesto chyby. Výstup bude vyzerať nasledovne:
|
1 2 |
OUTPUT: (empty list alebo set) |
Výstup empty list alebo set znamená, že server Redis je prázdny. Je to preto, že sme webový server ešte nenakonfigurovali ako obsluhu relácií (session handler).
Poznámka: Predtým, ako sa pohneme ďalej, sa uistite, že relácia SSH je otvorená a pripojená k redis-cli. V nasledujúcich krokoch sa vrátime k príkazovému riadku redis-cli, aby sme overili, či sa údaje relácie správne uložili po vykonaní potrebných zmien na web serveri.
Krok 6 — Inštalácia rozšírenia Redis na webovom serveri
Nasledujúce kroky by sa mali vykonať na web serveri. Musíme nainštalovať rozšírenie PHP Redis, aby sa PHP mohlo pripojiť k serveru Redis.
Najprv aktualizujte vyrovnávaciu pamäť správcu balíkov spustením príkazu:
|
1 |
sudo apt-get update |
Potom nainštalujte balík php5-redis :
|
1 |
sudo apt-get install php5-redis |
Všetko je pripravené na pripojenie k službe Redis.
Krok 7 — Nastavenie Redis ako predvoleného obslužného programu relácií na webovom serveri
PHP má predvolený obslužný program relácií. V tomto kroku upravíme súbor php.ini na web serveri, aby sme zmenili predvolené nastavenia. Umiestnenie súboru php.ini závisí od aktuálneho prostredia (stacku):
-
Pre LAMP stack na Ubuntu 20.04 použite: /etc/php5/apache2/php.ini.
-
Pre LEMP stack na Ubuntu 20.04 je cesta zvyčajne /etc/php5/fpm/php.ini.
Ak si nie ste istí umiestnením vášho hlavného súboru php.ini, pomôžte si funkciou phpinfo(). Umiestnite nasledujúci kód do súboru s názvom info.php vo vašom koreňovom adresári webu:
|
1 2 |
<?php phpinfo(); |
Keď sa pokúsite o prístup k skriptu z prehliadača, vyhľadajte riadok obsahujúci „Loaded Configuration File“. Nájdete tam presné umiestnenie načítaného hlavného súboru php.ini. Nezabudnite odstrániť súbor info.php, pretože obsahuje citlivý obsah o vašom prostredí.
Potom otvorte súbor php.ini a vyhľadajte riadok obsahujúci session.save_handler. Predvolená hodnota bude files, uistite sa, že ju zmeníte na redis.
V prostrediach LAMP:
|
1 |
$ sudo vim /etc/php5/apache2/php.ini |
V prostrediach LEMP:
|
1 |
$ sudo vim /etc/php5/fpm/php.ini |
|
1 |
session.save_handler = redis |
Potom odkomentujte session.save_path a upravte hodnotu tak, aby obsahovala reťazec pripojenia k Redis. Obsah musí mať nasledujúci formát:
|
1 |
tcp://IPADDRESS:PORT?auth=REDISPASSWORD |
|
1 |
session.save_path = "tcp://10.133.14.9:6379?auth=yourverycomplexpasswordhere" |
Použite heslo, ktoré sme nastavili v Kroku- 4.. V prípade, že nepoužívate nastavené heslo, zadajte parameter auth pri konfigurácii Redis. Teraz uložte súbor a reštartujte php službu na oboch prostrediach.
Na LAMP prostrediach:
|
1 |
sudo service apache2 restart |
Na LEMP prostrediach:
|
1 |
sudo service php5-fpm restart |
Krok 8 — Testovanie správy relácií Redis
V poslednom kroku potrebujeme PHP skript alebo aplikáciu, aby sme sa uistili, že vaše relácie sú teraz spravované systémom Redis. Použijeme jednoduchý skript, ktorý implementuje počítadlo – pri každom načítaní stránky sa zobrazené číslo zvýši.
Vytvorte súbor s názvom demo.php na web serveri a uložte ho do koreňového adresára dokumentov:
|
1 |
sudo sudo vim /usr/share/nginx/html/test.php |
Potom zmeňte /usr/share/nginx/html tak, aby odrážala vašu cestu ku koreňovému adresáru dokumentov:
|
1 2 3 4 5 6 7 |
<?php //jednoduché počítadlo na testovanie relácií. malo by sa zvýšiť pri každom načítaní stránky. session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count; |
Ďalej musíte nasmerovať svoj prehliadač na http://web/demo.php pre prístup k skriptu. Program zvýši číslo pri každom načítaní stránky.
Teraz budete mať informácie o relácii uložené na serveri Redis. Pre overenie sa musíte vrátiť do svojej SSH relácie na redis stroji pomocou redis-cli. Získajte obsah znova pomocou keys *:
|
1 |
10.133.14.9:6379> keys * |
Nižšie uvidíte výstup:
|
1 2 |
OUTPUT: 1) "PHPREDIS_SESSION:j9rsgtde6st2rqb6lu5u6f4h83" |
Výstup overuje, že všetky informácie sú bezpečne uložené na redis serveri. Ak chcete pripojiť ďalšie web servery, môžete postupovať rovnakým spôsobom.
Záver
Redis is a NoSQL database that allows the storage of numerous unstructured data. Very few databases can compare to the functionalities and simplicity of the redis server. Its increasing popularity continually makes it a must-have with few substitutes compared to its broad features.
Ak si chcete hlbšie rozšíriť svoje znalosti o PHP aplikáciách a ich používaní, môžete si pozrieť nasledujúce návody z nášho blogu:
- Nasadenie PHP aplikácie na Kubernetes Cluster s Ubuntu 18.04
- Inštalácia phpBB na Ubuntu 20.04
- Inštalácia a zabezpečenie phpMyAdmin na Ubuntu 18.04
Príjemnú prácu!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.