Redis je sustav otvorenog koda za predmemoriranje i pohranu u memoriji, koji se također naziva poslužiteljem podatkovnih struktura. Nudi naprednu podršku za nekoliko tipova podataka, kao što su sažeci (hashes), popisi, skupovi, bitmape i mnogi drugi. Zbog svojih izvrsnih performansi, Redis je vrlo popularan u vodećim industrijama i vrhunskim multinacionalnim kompanijama.
Prednosti Redisa
Kada je riječ o brzini, Redis poslužiteljima nema premca. Kao NoSQL poslužitelj baze podataka, nudi fantastičnu brzinu pohrane i dohvaćanja podataka. Osim toga, Redis ima izvanredne funkcionalnosti koje omogućuju besprijekoran rad s različitim podacima, uključujući i one složene. Jednostavnost korištenja i sofisticirane funkcionalnosti Redisa ne samo da su ga istaknule, već su omogućile i njegovu sve veću standardizaciju kao glavne baze podataka za korporativne i pojedinačne korisnike.
U nastavku ćemo detaljno opisati korake koji će vam pomoći da instalirate Redis na softver Ubuntu 20.04. U ovom vodiču dobit ćete sve potrebne informacije od instalacije do konfiguriranja vanjskog Redis poslužitelja koji će se koristiti kao rukovatelj sesijama za PHP aplikaciju koja se izvodi na sustavu Ubuntu 20.04.
Početak rada
Kako biste prošli kroz korake, trebat će vam dva različita poslužitelja baze podataka (dropleta) smještena u istom podatkovnom centru s omogućenom privatnom mrežom. To uključuje:
-
PHP web poslužitelj koji pokreće LAMP i LEMP na sustavu Ubuntu 20.04 – ovaj ćemo poslužitelj nazivati web.
-
Drugi, čisti Ubuntu 20.04 poslužitelj na kojem će se instalirati Redis – ovaj ćemo poslužitelj nazivati redis.
Korak 1 — Instalacija Redis poslužitelja
Naš prvi korak je instalacija Redis poslužitelja na Ubuntu 20.04. Kada to učinite, provjerite radi li poslužitelj na našem redis Dropletu.
U ovom vodiču koristit ćemo Personal Package Archives (PPA). Preporučujemo korištenje PPA-a iz sigurnosnih razloga. U usporedbi s drugim repozitorijima trećih strana, PPA-ovi su stabilni, jednostavni za instalaciju i, iznad svega, repozitorij je dizajniran za korisnike Ubuntua. PPA vam omogućuje da dobijete najnoviju dostupnu verziju softvera, čak i za softver koji ne nalazite u službenim repozitorijima Ubuntua.
Korištenje PPA-ova iz neovlaštenih izvora nikako se ne preporučuje. Pobrinite se da PPA-ove preuzimate samo iz autentičnih i provjerenih izvora. Možete dodati PPA repozitorij pomoću naredbe:
|
1 |
sudo add-apt-repository ppa:chris-lea/redis-server |
Pritisnite tipku Enter za potvrdu. Nakon potvrde, ažurirat ćemo predmemoriju upravitelja paketima pomoću sljedeće naredbe:
|
1 |
sudo apt-get update |
Zatim ćemo instalirati Redis pomoću naredbe:
|
1 |
sudo apt-get install redis-server |
Nakon što izvršite naredbu, imat ćete instaliran Redis na svom poslužitelju. Testirajmo instalaciju pomoću naredbe:
|
1 |
redis-cli ping |
Nakon što pokrenete naredbu, vidjet ćete pokrenutu instancu Redisa na localhost na portu 6379. Također, dobit ćete odgovor pod nazivom PONG. Ako to vidite, to znači da ste uspješno završili prvi korak. Za detaljan vodič o instalaciji i osiguravanju Redisa, možete pogledati naš vodič How to Install and Secure Redis on Ubuntu 18.04.
Zatim prijeđimo na sljedeći korak - konfiguriranje Redisa.
Korak 2 — Konfiguracija Redisa za prihvaćanje vanjskih veza
Glavni cilj konfiguriranja Redisa je prihvaćanje veza koje dolaze izvana. Zašto? Zato što Redis – prema zadanim postavkama, dopušta veze samo na localhost, i postoji ograničenje povezivanja s bilo kojeg drugog mjesta. Jednostavnije rečeno, imat ćete pristup samo s poslužitelja na kojem ste instalirali Redis.
Najprije dobit ćete detaljan uvid u svoja mrežna sučelja pomoću ifconfig naredbe:
|
1 |
sudo ifconfig |
Dobit ćete sljedeći izlaz:
|
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 sučelju, naći ćete inet_addr. Ovdje imamo 10.133.14.9. Koristit ćemo ovu IP adresu u sljedećim koracima za povezivanje na redis poslužitelj s web poslužitelja.
Korak 3 — Povezivanje na localhost
Slobodno koristite uređivač koda po svom izboru (Atom i Visual Studio Code su najpopularniji).
Sada otvorite datoteku /etc/redis/redis.conf i potražite redak koji sadrži definiciju bind. Trebali biste dodati svoju IP adresu privatne mreže u taj redak:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 |
bind localhost 10.133.14 |
Možda ćete vidjeti localhost, umjesto 127.0.0.1. Bez brige, samo trebate dodati svoju privatnu IP adresu. Zatim ponovno pokrenite uslugu Redis kako biste primijenili promjene. Koristite naredbu u nastavku za ponovno pokretanje redis poslužitelja:
|
1 |
sudo service redis-server restart |
Za one korisnike koji su instalirali Redis pomoću aplikacije jednim klikom, slijedite naredbu navedenu u nastavku za ponovno pokretanje poslužitelja:
|
1 |
sudo service redis restart |
Nakon što ponovno pokrenete redis poslužitelj, bilo koji poslužitelj koji se nalazi u istoj privatnoj mreži automatski će se povezati s ovom Redis instancom, bez potrebe da to radite pojedinačno.
Korak 4 — Postavljanje lozinke Redis poslužitelja
Možete preskočiti ovaj korak ako koristite instalaciju Redisa u svrhu vježbe ili obuke. Međutim, postavljanje lozinke za redis poslužitelj se toplo preporučuje ako želite dodati dodatni sloj sigurnosti svojoj instalaciji Redisa. Izmijenimo istu konfiguracijsku datoteku kao i u prethodnom koraku. Koristite naredbu za uređivanje:
|
1 |
sudo vim /etc/redis/redis.conf |
Odkomentirajte redak koji sadrži requirepass, i postavite jaku lozinku:
|
1 |
requirepass StrongPassword |
Ponovno pokrenite Redis uslugu kako bi se primijenile promjene koje ste napravili. Koristite naredbu za ponovno pokretanje:
|
1 |
sudo service redis-server restart |
Korak 5 — Testiranje Redis veze i autentifikacije
U ovom koraku povezat ćemo se s Redis uslugom iz redis stroja kako bismo se uvjerili da sve napravljene promjene rade besprijekorno kao što se i očekuje. Za povezivanje koristite donju naredbu:
|
1 |
redis-cli -h 10.133.14.9 |
Ovdje, čak i ako preskočite navođenje naziva računala, i dalje će se pokrenuti. Naš primarni cilj je osigurati da Redis usluga besprijekorno prihvaća veze:
|
1 |
10.133.14.9:6379> |
Moguće je da dobijete AUTH pogrešku kada pokušate pristupiti podacima s definiranom lozinkom:
|
1 |
10.133.14.9:6379> keys * |
Vaš izlaz će izgledati slično ovome:
|
1 2 |
OUTPUT: (error) NOAUTH Authentication required. |
Za autentifikaciju pokrenite AUTH naredbu zajedno s istom lozinkom koju ste definirali u /etc/redis/redis.conf datoteci:
|
1 |
10.133.14.9:6379> AUTH StrongPassword |
Zatim ponovno pokrenite naredbu:
|
1 |
10.133.14.9:6379> keys * |
Ovaj put ćete dobiti OK kao odgovor umjesto pogreške. Dobit ćete izlaz kao u nastavku:
|
1 2 |
OUTPUT: (empty list ili set) |
Izlaz empty list ili set znači da je Redis poslužitelj prazan. To je zato što još nismo konfigurirali web poslužitelj kao rukovatelja sesijama.
Napomena: Prije nego što krenemo dalje, provjerite je li SSH sesija otvorena i povezana s redis-cli. U sljedećim koracima vratit ćemo se na redis-cli upit kako bismo provjerili jesu li podaci sesije ispravno pohranjeni nakon što napravimo potrebne promjene na web poslužitelju.
Korak 6 — Instalacija Redis proširenja na web poslužitelju
Sljedeće korake treba izvršiti na web poslužitelju. Moramo instalirati PHP Redis proširenje kako bi se PHP mogao povezati s Redis poslužiteljem.
Najprije ažurirajte predmemoriju upravitelja paketa pokretanjem naredbe:
|
1 |
sudo apt-get update |
Zatim instalirajte php5-redis paket:
|
1 |
sudo apt-get install php5-redis |
Sve je spremno za povezivanje s Redisom.
Korak 7 — Postavljanje Redisa kao zadane obrade sesija na web poslužitelju
PHP ima zadani rukovatelj sesijama. U ovom koraku uredit ćemo php.ini datoteku na web poslužitelju kako bismo promijenili zadane postavke. Lokacija php.ini datoteke ovisi o trenutnom stogu:
-
Za LAMP stog na Ubuntu 20.04, koristite: /etc/php5/apache2/php.ini.
-
Za LEMP stog na Ubuntu 20.04, putanja je obično /etc/php5/fpm/php.ini.
Ako niste sigurni u lokaciju svoje glavne php.ini datoteke, poslužite se funkcijom phpinfo(). Postavite sljedeći kod u datoteku pod nazivom info.php unutar vašeg korijenskog web direktorija:
|
1 2 |
<?php phpinfo(); |
Kada pokušate pristupiti skripti iz svog preglednika, potražite redak koji sadrži „Loaded Configuration File”. Pronaći ćete točnu lokaciju glavne učitane php.ini datoteke. Obavezno uklonite info.php datoteku jer sadrži sve osjetljive podatke o vašem okruženju.
Nakon toga otvorite php.ini datoteku i potražite redak koji sadrži session.save_handler. Zadana vrijednost bit će files, svakako je promijenite u redis.
Na LAMP okruženjima:
|
1 |
$ sudo vim /etc/php5/apache2/php.ini |
Na LEMP okruženjima:
|
1 |
$ sudo vim /etc/php5/fpm/php.ini |
|
1 |
session.save_handler = redis |
Zatim odkomentirajte session.save_path i izmijenite vrijednost tako da sadrži niz za povezivanje s Redisom. Sadržaj mora pratiti sljedeći format:
|
1 |
tcp://IPADDRESS:PORT?auth=REDISPASSWORD |
|
1 |
session.save_path = "tcp://10.133.14.9:6379?auth=yourverycomplexpasswordhere" |
Koristite lozinku koju smo postavili u Koraku 4. U slučaju da ne koristite postavljenu lozinku, navedite parametar auth prilikom konfiguriranja Redisa. Sada spremite datoteku i ponovno pokrenite php uslugu na oba okruženja.
Na LAMP okruženjima:
|
1 |
sudo service apache2 restart |
Na LEMP okruženjima:
|
1 |
sudo service php5-fpm restart |
Korak 8 — Testiranje Redis rukovanja sesijama
U posljednjem koraku, potrebna nam je PHP skripta ili aplikacija kako bismo se uvjerili da vašim sesijama sada upravlja Redis. Koristit ćemo jednostavnu skriptu koja implementira brojač – svaki put kada ponovno učitate stranicu, ispisani broj se povećava.
Izradite datoteku pod nazivom demo.php na web poslužitelju i držite je unutar korijenske mape vašeg dokumenta:
|
1 |
sudo sudo vim /usr/share/nginx/html/test.php |
Zatim promijenite /usr/share/nginx/html kako bi odražavao putanju korijenske mape vašeg dokumenta:
|
1 2 3 4 5 6 7 |
<?php //jednostavan brojač za testiranje sesija. trebao bi se povećavati pri svakom ponovnom učitavanju stranice. session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count; |
Zatim morate usmjeriti svoj preglednik na http://web/demo.php kako biste pristupili skripti. Program će povećati broj svaki put kada ponovno učitate stranicu.
Sada ćete imati informacije o sesiji pohranjene na Redis poslužitelju. Za provjeru, morate se vratiti na svoju SSH sesiju na redis računalu koristeći redis-cli. Ponovno dohvatite sadržaj pomoću keys *:
|
1 |
10.133.14.9:6379> keys * |
Vidjet ćete sljedeći izlaz:
|
1 2 |
OUTPUT: 1) "PHPREDIS_SESSION:j9rsgtde6st2rqb6lu5u6f4h83" |
Izlaz potvrđuje da su sve informacije sigurno pohranjene na redis poslužitelju. Ako želite povezati dodatne web poslužitelje, možete slijediti isti postupak.
Zaključak
Redis je NoSQL baza podataka koja omogućuje pohranu brojnih nestrukturiranih podataka. Vrlo malo baza podataka može se usporediti s funkcionalnostima i jednostavnošću redis poslužitelja. Njegova sve veća popularnost neprestano ga čini nezaobilaznim s malo zamjena u usporedbi s njegovim širokim značajkama.
Kako biste dodatno produbili svoje znanje o PHP aplikacijama i načinu njihova korištenja, možete pogledati sljedeće vodiče s našeg bloga:
- Implementacija PHP aplikacije na Kubernetes klaster s Ubuntu 18.04
- Instalacija phpBB-a na Ubuntu 20.04
- Instalacija i osiguravanje phpMyAdmin-a na Ubuntu 18.04
Sretno računanje!
Komentari
Još nema komentara. Budite prvi.