Redis egy nyílt forráskódú, memóriában működő gyorsítótár- és tárolórendszer, amelyet adatstruktúra-szerverként is emlegetnek. Fejlett támogatást nyújt számos adattípushoz, mint például a hash-ek, listák, halmazok, bitképek és még sok más. Kiváló teljesítményének köszönhetően a Redis rendkívül népszerű a vezető iparágakban és a legfontosabb multinacionális vállalatok körében.
A Redis előnyei
Ha a sebességről van szó, a Redis szervereknek nincs párja. Mint NoSQL adatbázis-szerver, fantasztikus sebességet kínál az adatok tárolásához és lekérdezéséhez. Emellett a Redis olyan kiemelkedő funkciókkal rendelkezik, amelyek zökkenőmentessé teszik a különböző, akár összetett adatokkal való munkát. A Redis egyszerű használata és kifinomult funkciói nemcsak kiemelik a mezőnyből, hanem lehetővé tették növekvő szabványosítását is, mint fősodorbeli adatbázis a vállalati és egyéni felhasználók számára.
Az alábbiakban részletesen bemutatjuk a Redis Ubuntu 20.04 szoftverre történő telepítésének lépéseit. Ebben az útmutatóban minden szükséges információt megtalál a telepítéstől kezdve a külső Redis szerver konfigurálásáig, amelyet egy Ubuntu 20.04-en futó PHP alkalmazás munkamenet-kezelőjeként (session handler) fogunk használni.
Első lépések
A lépések végrehajtásához két különböző adatbázis-szerverre (droplet-re) lesz szüksége, amelyek ugyanabban az adatközpontban találhatók, és engedélyezve van rajtuk a privát hálózat. Ezek a következők:
-
Egy PHP webszerver, amelyen a LAMP és a LEMP fut Ubuntu 20.04-en – erre a szerverre a továbbiakban úgy hivatkozunk, mint web.
-
Egy második, tiszta Ubuntu 20.04 szerver, amelyre a Redis telepítve lesz – erre a szerverre a továbbiakban úgy hivatkozunk, mint redis.
1. lépés — A Redis szerver telepítése
Az első lépésünk a Redis szerver telepítése Ubuntu 20.04-re. Ha ez kész, győződjön meg arról, hogy a szerver fut a redis Dropletünkön.
Ebben az útmutatóban személyes csomagtárolókat (PPA-kat) fogunk használni. Biztonsági okokból kifejezetten javasoljuk a PPA-k használatát. Más harmadik féltől származó tárolókhoz képest a PPA-k stabilak, könnyen telepíthetők, és mindenekelőtt a tárolót kifejezetten Ubuntu-felhasználók számára tervezték. A PPA lehetővé teszi a legújabb elérhető szoftververzió beszerzését, még azon szoftverek esetében is, amelyeket nem talál meg a hivatalos Ubuntu tárolókban.
A nem engedélyezett forrásból származó PPA-k használata szigorúan tilos. Győződjön meg arról, hogy a PPA-kat kizárólag hiteles és ellenőrzött forrásokból szerzi be. A PPA tárolót a következő paranccsal adhatja hozzá:
|
1 |
sudo add-apt-repository ppa:chris-lea/redis-server |
Nyomja meg az Enter billentyűt a megerősítéshez. A megerősítés után a következő paranccsal frissítjük a csomagkezelő gyorsítótárát:
|
1 |
sudo apt-get update |
Ezután a következő paranccsal telepítjük a Redis-t:
|
1 |
sudo apt-get install redis-server |
A parancs végrehajtása után a Redis telepítve lesz a szerverén. Teszteljük a telepítést a következő paranccsal:
|
1 |
redis-cli ping |
A parancs futtatása után látni fog egy Redis példányt, amely a localhost címen fut a 6379 porton. Emellett egy PONG nevű válasz is érkezik. Ha ezeket látja, az azt jelenti, hogy sikeresen elvégezte az első lépést. A Redis telepítéséről és biztonságossá tételéről szóló részletes útmutatóért tekintse meg a következő leírásunkat: Hogyan telepítsük és tegyük biztonságossá a Redis-t Ubuntu 18.04-en.
Most pedig lépjünk tovább a következő lépésre - a Redis konfigurálására.
2. lépés — A Redis konfigurálása külső kapcsolatok fogadására
A Redis konfigurálásának fő célja a kívülről érkező kapcsolatok fogadása. Miért? Mert a Redis – alapértelmezés szerint – csak a localhost felé engedélyezi a kapcsolatokat, és korlátozás van érvényben a bárhonnan máshonnan történő csatlakozásra. Egyszerűbben fogalmazva, csak azon a szerveren belülről lesz hozzáférése, amelyre a Redis-t telepítette.
Először is, kérjen részletes információt a hálózati interfészeiről a ifconfig paranccsal:
|
1 |
sudo ifconfig |
A következő kimenetet fogja kapni:
|
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) |
A(z) eth1 interfészen találja a inet_addr címet. Itt a következő van: 10.133.14.9. Ezt az IP-címet fogjuk használni a következő lépésekben, hogy csatlakoztassuk a redis szervert a web szerverről.
3. lépés — Localhost kötés
Bátran használhatja az Ön által választott kódszerkesztőt (az Atom és a Visual Studio Code a legnépszerűbbek).
Most nyissa meg a /etc/redis/redis.conf fájlt, és keresse meg azt a sort, amely a bind definíciót tartalmazza. Hozzá kell adnia a privát hálózati IP-címét a sorhoz:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 |
bind localhost 10.133.14 |
Lehet, hogy a localhost szöveget látja a 127.0.0.1 helyett. Semmi gond, csak hozzá kell adnia a privát IP-címét. Ezután indítsa újra a Redis szolgáltatást a módosítások alkalmazásához. Használja az alábbi parancsot a redis szerver újraindításához:
|
1 |
sudo service redis-server restart |
Azon felhasználók számára, akik az egykattintásos alkalmazással telepítették a Redis-t, az alábbi parancsot kell követniük a szerver újraindításához:
|
1 |
sudo service redis restart |
Miután újraindította a redis szervert, az ugyanabban a privát hálózatban lévő bármely szerver automatikusan csatlakozni fog ehhez a Redis példányhoz, anélkül, hogy ezt egyenként kellene megtenni.
4. lépés — Redis szerver jelszó beállítása
Kihagyhatja ezt a lépést, ha a Redis telepítést gyakorlati vagy oktatási célokra használja. Azonban a jelszó beállítása a redis szerverhez erősen ajánlott, ha egy extra biztonsági réteget szeretne adni a Redis telepítéséhez. Módosítsuk ugyanazt a konfigurációs fájlt, mint az előző lépésben. Használja a parancsot a szerkesztéshez:
|
1 |
sudo vim /etc/redis/redis.conf |
Vegye ki a kommentjelet abból a sorból, amely a requirepass kifejezést tartalmazza, és állítson be egy erős jelszót:
|
1 |
requirepass StrongPassword |
Indítsa újra a Redis szolgáltatást a végrehajtott módosítások érvénybe léptetéséhez. Használja a következő parancsot az újraindításhoz:
|
1 |
sudo service redis-server restart |
5. lépés — Redis kapcsolat és hitelesítés tesztelése
Ebben a lépésben a Redis szolgáltatáshoz fogunk csatlakozni a redis gépen belülről, hogy megbizonyosodjunk arról, hogy minden elvégzett módosítás zökkenőmentesen és az elvárásoknak megfelelően működik. A csatlakozáshoz használja az alábbi parancsot:
|
1 |
redis-cli -h 10.133.14.9 |
Itt még akkor is futni fog, ha kihagyja a gépnév megadását. Elsődleges célunk annak ellenőrzése, hogy a Redis szolgáltatás zökkenőmentesen fogadja-e a kapcsolatokat:
|
1 |
10.133.14.9:6379> |
Előfordulhat, hogy egy AUTH hibát kap, amikor megpróbál hozzáférni az adatokhoz a megadott jelszóval:
|
1 |
10.133.14.9:6379> keys * |
A kimenet ehhez hasonlóan fog kinézni:
|
1 2 |
KIMENET: (hiba) NOAUTH Hitelesítés szükséges. |
A hitelesítéshez futtassa az AUTH parancsot azzal a jelszóval együtt, amelyet a /etc/redis/redis.conf fájlban adott meg:
|
1 |
10.133.14.9:6379> AUTH StrongPassword |
Ezután futtassa újra a parancsot:
|
1 |
10.133.14.9:6379> keys * |
Ezúttal egy OK választ fog kapni hiba helyett. A kimenet az alábbi lesz:
|
1 2 |
KIMENET: (üres lista vagy halmaz) |
Az üres lista vagy halmaz kimenet azt jelenti, hogy a Redis szerver üres. Ez azért van, mert még nem konfiguráltuk a webszervert munkamenet-kezelőként.
Megjegyzés: Mielőtt továbblépnénk, győződjön meg arról, hogy az SSH-munkamenet meg van nyitva és csatlakozik a redis-cli-hez. A következő lépésekben visszatérünk a redis-cli parancssorhoz, hogy ellenőrizzük, megfelelően lettek-e tárolva a munkamenet-adatok, miután elvégeztük a szükséges módosításokat a web szerveren.
6. lépés — Redis kiterjesztés telepítése a webszerveren
A következő lépéseket a web szerveren kell végrehajtani. Telepítenünk kell a PHP Redis kiterjesztést, hogy a PHP csatlakozni tudjon a Redis szerverhez.
Először frissítse a csomagkezelő gyorsítótárát a következő parancs futtatásával:
|
1 |
sudo apt-get update |
Ezután telepítse a php5-redis csomagot:
|
1 |
sudo apt-get install php5-redis |
Minden készen áll a Redis-hez való csatlakozáshoz.
7. lépés — A Redis beállítása alapértelmezett munkamenet-kezelőként a webszerveren
A PHP rendelkezik egy alapértelmezett munkamenet-kezelővel. Ebben a lépésben szerkeszteni fogjuk a php.ini fájlt a web szerveren az alapértelmezett beállítások módosításához. A php.ini fájl helye az aktuális szoftvercsomagtól függ:
-
A LAMP szoftvercsomag esetén Ubuntu 20.04-en használja a következőt: /etc/php5/apache2/php.ini.
-
A LEMP szoftvercsomag esetén Ubuntu 20.04-en az elérési út általában /etc/php5/fpm/php.ini.
Ha nem biztos a fő php.ini fájl helyében, hívja segítségül a phpinfo() függvényt. Helyezze el a következő kódot egy info.php nevű fájlban a webes gyökérkönyvtárában:
|
1 2 |
<?php phpinfo(); |
Amikor megpróbálja elérni a szkriptet a böngészőjéből, keresse meg a „Loaded Configuration File” sort. Itt megtalálja a betöltött fő php.ini pontos helyét. Mindenképpen távolítsa el az info.php fájlt, mivel az a környezet összes érzékeny adatát tartalmazza.
Ezután nyissa meg a php.ini fájlt, és keresse meg a session.save_handler sort. Az alapértelmezett érték files lesz, ezt mindenképpen módosítsa a következőre: redis.
A LAMP környezetekben:
|
1 |
$ sudo vim /etc/php5/apache2/php.ini |
A LEMP környezetekben:
|
1 |
$ sudo vim /etc/php5/fpm/php.ini |
|
1 |
session.save_handler = redis |
Ezután vegye ki a megjegyzésből a session.save_path sort, és módosítsa az értéket úgy, hogy az tartalmazza a Redis kapcsolati karakterláncot. A tartalomnak az alábbi formátumot kell követnie:
|
1 |
tcp://IPADDRESS:PORT?auth=REDISPASSWORD |
|
1 |
session.save_path = "tcp://10.133.14.9:6379?auth=yourverycomplexpasswordhere" |
Használja azt a jelszót, amelyet a 4. lépésben állítottunk be.. Abban az esetben, ha nem használja a beállított jelszót, adja meg az auth paramétert a Redis konfigurálásakor. Most mentse el a fájlt, és indítsa újra a php szolgáltatást mindkét környezetben.
A LAMP környezeteken:
|
1 |
sudo service apache2 restart |
A LEMP környezeteken:
|
1 |
sudo service php5-fpm restart |
8. lépés — A Redis munkamenet-kezelés tesztelése
Az utolsó lépésben szükségünk van egy PHP-szkriptre vagy alkalmazásra, hogy megbizonyosodjunk arról, hogy a munkameneteket most már a Redis kezeli. Egy egyszerű szkriptet fogunk használni, amely egy számlálót valósít meg – minden alkalommal, amikor újratölti az oldalt, a kiírt szám növekszik.
Hozzon létre egy fájlt a következő névvel: demo.php a web szerveren, és tartsa a dokumentum gyökérkönyvtárában:
|
1 |
sudo sudo vim /usr/share/nginx/html/test.php |
Ezután módosítsa a /usr/share/nginx/html részt, hogy a dokumentum gyökérkönyvtárának útvonalát tükrözze:
|
1 2 3 4 5 6 7 |
<?php //simple counter to test sessions. should increment on each page reload. session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count; |
Ezután irányítsa a böngészőjét a http://web/demo.php címre a szkript eléréséhez. A program minden alkalommal növeli a számot, amikor újratölti az oldalt.
Most már a Redis szerveren lesznek tárolva a munkamenet-információk. Az ellenőrzéshez vissza kell térnie az SSH-munkamenethez a redis gépen a redis-cli használatával. Kérje le újra a tartalmat a keys *:
|
1 |
10.133.14.9:6379> keys * |
Az alábbi kimenetet fogja látni:
|
1 2 |
OUTPUT: 1) "PHPREDIS_SESSION:j9rsgtde6st2rqb6lu5u6f4h83" |
A kimenet igazolja, hogy minden információ biztonságosan tárolva van a redis szerveren. Ha további web szervereket szeretne csatlakoztatni, ugyanígy járhat el.
Összegzés
A Redis egy NoSQL adatbázis, amely számos strukturálatlan adat tárolását teszi lehetővé. Nagyon kevés adatbázis hasonlítható össze a redis szerver funkcionalitásával és egyszerűségével. Növekvő népszerűsége folyamatosan elengedhetetlenné teszi, és széleskörű funkcióihoz képest kevés alternatívája van.
A PHP-alkalmazásokkal és azok használatával kapcsolatos ismeretei további elmélyítéséhez tekintse meg a blogunkon található alábbi útmutatókat:
- PHP-alkalmazás telepítése Kubernetes-fürtre Ubuntu 18.04 rendszeren
- A phpBB telepítése Ubuntu 20.04 rendszeren
- A phpMyAdmin telepítése és biztosítása Ubuntu 18.04 rendszeren
Kellemes számítástechnikát!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.