Redis is een open-source in-memory cache- en opslagsysteem, ook wel een datastructuurserver genoemd. Het biedt geavanceerde ondersteuning voor verschillende datatypes, zoals hashes, lijsten, sets, bitmaps en nog veel meer. Vanwege de uitstekende prestaties is Redis populair in toonaangevende industrieën en top-MNC's.
Voordelen van Redis
Als het op snelheid aankomt, zijn Redis-servers onverslaanbaar. Als een NoSQL databaseserver biedt het een fantastische snelheid voor het opslaan en ophalen van gegevens. Daarnaast heeft Redis uitstekende functionaliteiten die het naadloos maken om met verschillende gegevens te werken, inclusief complexe. Het gebruiksgemak en de geavanceerde functionaliteiten van Redis hebben er niet alleen voor gezorgd dat het opvalt, maar hebben ook geleid tot een toenemende standaardisatie als een mainstream database voor zakelijke en individuele gebruikers.
Hieronder beschrijven we de stappen om u te helpen Redis te installeren op Ubuntu 20.04-software. In deze handleiding krijgt u alle informatie die u nodig heeft, van het installeren tot het configureren van een externe Redis-server om te worden gebruikt als een sessie-handler voor een PHP-applicatie die draait op Ubuntu 20.04.
Aan de slag
Om de stappen te doorlopen, heeft u twee verschillende databaseservers (droplets) nodig die zich in hetzelfde datacentrum bevinden met een ingeschakeld privénetwerk. Deze omvatten:
-
Een PHP-webserver die draait op LAMP en LEMP op Ubuntu 20.04 – we zullen naar deze server verwijzen als web.
-
Een tweede, schone Ubuntu 20.04-server waarop Redis zal worden geïnstalleerd – we zullen naar deze server verwijzen als redis.
Stap 1 — Installatie van de Redis-server
Onze eerste stap is het installeren van de Redis-server op Ubuntu 20.04. Zorg er daarna voor dat de server actief is op onze redis Droplet.
In deze handleiding gebruiken we Personal Package Archives (PPA's). Om veiligheidsredenen raden we ten zeerste aan om voor PPA's te kiezen. Vergeleken met andere repositories van derden zijn PPA's stabiel, eenvoudig te installeren en bovenal is de repository ontworpen voor Ubuntu-gebruikers. Met een PPA kunt u de nieuwste beschikbare softwareversie downloaden, zelfs voor software die u niet in de officiële Ubuntu-repositories vindt.
Het gebruik van PPA's uit een niet-geautoriseerde bron is een absolute no-go. Zorg ervoor dat u de PPA's alleen van authentieke en geverifieerde bronnen haalt. U kunt de PPA-repository toevoegen met het commando:
|
1 |
sudo add-apt-repository ppa:chris-lea/redis-server |
Druk op de Enter-toets om te bevestigen. Na bevestiging zullen we de cache van de pakketbeheerder bijwerken met het volgende commando:
|
1 |
sudo apt-get update |
Vervolgens installeren we Redis met het commando:
|
1 |
sudo apt-get install redis-server |
Zonsa u het commando uitvoert, is Redis op uw server geïnstalleerd. Laten we de installatie testen met het commando:
|
1 |
redis-cli ping |
Zonsa u het commando uitvoert, ziet u een Redis-instantie draaien op de localhost op poort 6379. Ook zal er een reactie zijn genaamd PONG. Als u dit ziet, betekent dit dat u de eerste stap met succes heeft voltooid. Voor een gedetailleerde handleiding over het installeren en beveiligen van Redis kunt u een kijkje nemen in onze handleiding Hoe Redis te installeren en te beveiligen op Ubuntu 18.04.
Laten we vervolgens doorgaan naar de volgende stap: het configureren van Redis.
Stap 2 — Redis-configuratie om externe verbindingen te accepteren
Het belangrijkste doel van het configureren van Redis is het accepteren van verbindingen die van buitenaf komen. Waarom? Omdat Redis – standaard – alleen verbindingen toestaat met localhost, en er is een beperking om vanaf ergens anders verbinding te maken. Simpel gezegd heeft u alleen toegang vanaf de server waarop u Redis heeft geïnstalleerd.
Krijg eerst een gedetailleerd inzicht in uw netwerkinterfaces met behulp van het ifconfig commando:
|
1 |
sudo ifconfig |
U krijgt de onderstaande uitvoer te zien:
|
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) |
Bij de eth1 interface vind je de inet_addr. Hier hebben we 10.133.14.9. We zullen dit IP-adres in de volgende stappen gebruiken om de redis server te verbinden vanaf de web server.
Stap 3 — Localhost-binding
Het staat je vrij om de code-editor van je keuze te gebruiken (Atom en Visual Studio Code zijn de populairste).
Open nu het bestand /etc/redis/redis.conf en zoek naar de regel die de bind definitie bevat. Je moet je IP-adres van het privénetwerk aan de regel toevoegen:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 |
bind localhost 10.133.14 |
Je ziet mogelijk localhost, in plaats van 127.0.0.1. Geen zorgen, je hoeft alleen je privé-IP-adres toe te voegen. Start vervolgens de Redis-service opnieuw op om de wijzigingen toe te passen. Gebruik de onderstaande opdracht om de redis server opnieuw op te starten:
|
1 |
sudo service redis-server restart |
Voor gebruikers die Redis hebben geïnstalleerd met de one-click-applicatie, volg je de onderstaande opdracht om je server opnieuw op te starten:
|
1 |
sudo service redis restart |
Zodra je de redis server opnieuw opstart, zal elke server in hetzelfde privénetwerk automatisch verbinding maken met deze Redis-instantie, zonder dat dit afzonderlijk hoeft te gebeuren.
Stap 4 — Wachtwoordinstelling Redis-server
Je kunt deze stap overslaan als je de Redis-installatie gebruikt voor oefen- of trainingsdoeleinden. Het instellen van het wachtwoord voor de redis server wordt echter ten zeerste aanbevolen als je een extra beveiligingslaag wilt toevoegen aan je Redis-installatie. Laten we hetzelfde configuratiebestand aanpassen als in de vorige stap. Gebruik de opdracht om te bewerken:
|
1 |
sudo vim /etc/redis/redis.conf |
Uncomment de regel die requirepass, en stel een sterk wachtwoord in:
|
1 |
requirepass StrongPassword |
Herstart de Redis-service om de wijzigingen die u hebt aangebracht door te voeren. Gebruik de opdracht om te herstarten:
|
1 |
sudo service redis-server restart |
Stap 5 — Redis-verbinding en authenticatietests
In deze stap maken we verbinding met de Redis-service van binnenuit de redis machine om te controleren of alle aangebrachte wijzigingen naadloos werken zoals verwacht. Gebruik de onderstaande opdracht om verbinding te maken:
|
1 |
redis-cli -h 10.133.14.9 |
Hier zal het, zelfs als u vergeet de hostnaam te vermelden, nog steeds worden uitgevoerd. Ons primaire doel is om ervoor te zorgen dat de Redis-service de verbindingen naadloos accepteert:
|
1 |
10.133.14.9:6379> |
Het is mogelijk dat u een AUTH foutmelding krijgt wanneer u probeert toegang te krijgen tot de gegevens met het gedefinieerde wachtwoord:
|
1 |
10.133.14.9:6379> keys * |
Uw uitvoer zal er ongeveer zo uitzien:
|
1 2 |
OUTPUT: (error) NOAUTH Authentication required. |
Om te authenticeren, voert u de AUTH opdracht uit samen met hetzelfde wachtwoord dat u hebt gedefinieerd in het /etc/redis/redis.conf-bestand:
|
1 |
10.133.14.9:6379> AUTH StrongPassword |
Voer vervolgens de opdracht opnieuw uit:
|
1 |
10.133.14.9:6379> keys * |
Dit keer krijgt u een OK als antwoord in plaats van een foutmelding. U krijgt de uitvoer zoals hieronder:
|
1 2 |
OUTPUT: (empty list of set) |
De uitvoer empty list of set betekent dat de Redis-server leeg is. Dat komt omdat we de webserver nog niet hebben geconfigureerd als sessie-handler.
Note: Voordat we verder gaan, moet u ervoor zorgen dat de SSH-sessie is geopend en verbonden is met de redis-cli. In de volgende stappen keren we terug naar de redis-cli-prompt om te controleren of de sessiegegevens correct zijn opgeslagen nadat we de nodige wijzigingen hebben aangebracht in de web server.
Stap 6 — Installatie van de Redis-extensie op de webserver
De volgende stappen moeten worden uitgevoerd op de web server. We moeten de PHP Redis-extensie installeren zodat PHP verbinding kan maken met de Redis-server.
Werk eerst de cache van uw pakketbeheerder bij door de volgende opdracht uit te voeren:
|
1 |
sudo apt-get update |
Installeer vervolgens het php5-redis-pakket:
|
1 |
sudo apt-get install php5-redis |
U bent helemaal klaar om verbinding te maken met Redis.
Stap 7 — Redis instellen als de standaard sessie-handler op de webserver
PHP heeft een standaard sessie-handler. In deze stap bewerken we het php.ini-bestand op de web server om de standaardinstellingen te wijzigen. De locatie van het php.ini-bestand hangt af van de huidige stack:
-
Voor een LAMP stack op Ubuntu 20.04 gebruikt u: /etc/php5/apache2/php.ini.
-
Voor een LEMP stack op Ubuntu 20.04 is het pad meestal /etc/php5/fpm/php.ini.
Als u niet zeker bent van de locatie van uw hoofd- php.ini-bestand, maak dan gebruik van de functie phpinfo(). Plaats de volgende code in een bestand genaamd info.php in uw web-rootmap:
|
1 2 |
<?php phpinfo(); |
Wanneer u het script probeert te openen vanuit uw browser, zoekt u naar de rij met 'Loaded Configuration File'. U vindt daar de exacte locatie van het geladen hoofd- php.ini-bestand. Zorg ervoor dat u het info.php-bestand verwijdert, omdat het alle gevoelige inhoud van uw omgeving bevat.
Open daarna het php.ini-bestand en zoek naar de regel met session.save_handler. De standaardwaarde is files, zorg ervoor dat u deze wijzigt in redis.
Op LAMP-omgevingen:
|
1 |
$ sudo vim /etc/php5/apache2/php.ini |
Op LEMP-omgevingen:
|
1 |
$ sudo vim /etc/php5/fpm/php.ini |
|
1 |
session.save_handler = redis |
Haal vervolgens de commentaartekens weg voor session.save_path en wijzig de waarde zodat deze de Redis-verbindingsreeks bevat. De inhoud moet de onderstaande indeling hebben:
|
1 |
tcp://IPADDRESS:PORT?auth=REDISPASSWORD |
|
1 |
session.save_path = "tcp://10.133.14.9:6379?auth=yourverycomplexpasswordhere" |
Gebruik het wachtwoord dat we hebben ingesteld in Stap- 4. Mocht u het ingestelde wachtwoord niet gebruiken, geef dan de parameter auth op bij het configureren van Redis. Sla nu het bestand op en herstart de php service op beide omgevingen.
Op LAMP omgevingen:
|
1 |
sudo service apache2 restart |
Op LEMP omgevingen:
|
1 |
sudo service php5-fpm restart |
Stap 8 — Redis-sessieafhandeling testen
In de laatste stap hebben we een PHP-script of -applicatie nodig om te controleren of je sessies nu door Redis worden afgehandeld. We gebruiken een eenvoudig script dat een teller implementeert – elke keer dat je de pagina herlaadt, wordt het getoonde getal verhoogd.
Maak een bestand genaamd demo.php op de web server en bewaar het in je document root-map:
|
1 |
sudo sudo vim /usr/share/nginx/html/test.php |
Wijzig vervolgens de /usr/share/nginx/html om je document root-pad te weerspiegelen:
|
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; |
Vervolgens moet je je browser richten op http://web/demo.php om toegang te krijgen tot het script. Het programma zal het getal elke keer dat je de pagina herlaadt verhogen.
Nu heb je sessie-informatie opgeslagen op de Redis-server. Om dit te controleren, moet je teruggaan naar je SSH-sessie op de redis machine met behulp van de redis-cli. Haal de inhoud nogmaals op met keys *:
|
1 |
10.133.14.9:6379> keys * |
Je ziet de onderstaande uitvoer:
|
1 2 |
OUTPUT: 1) "PHPREDIS_SESSION:j9rsgtde6st2rqb6lu5u6f4h83" |
De uitvoer bevestigt dat alle informatie veilig is opgeslagen op de redis server. Als je extra web servers wilt aansluiten, kun je op dezelfde manier te werk gaan.
Conclusie
Redis is een NoSQL-database die de opslag van talrijke ongestructureerde gegevens mogelijk maakt. Zeer weinig databases kunnen tippen aan de functionaliteiten en eenvoud van de redis server. De toenemende populariteit maakt het voortdurend een must-have met weinig alternatieven in vergelijking met de brede functies.
Om je kennis van PHP-applicaties en het gebruik ervan verder te verdiepen, kun je een kijkje nemen naar de volgende handleidingen op onze blog:
- Een PHP-applicatie implementeren op een Kubernetes-cluster met Ubuntu 18.04
- phpBB installeren op Ubuntu 20.04
- phpMyAdmin installeren en beveiligen op Ubuntu 18.04
Veel computerplezier!
Reacties
Nog geen reacties. Wees de eerste.