Terug naar blog

Een Redis-server instellen als sessiehandler voor PHP op Ubuntu 20.04

Een Redis-server instellen als sessiehandler voor PHP op Ubuntu 20.04

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:

Druk op de Enter-toets om te bevestigen. Na bevestiging zullen we de cache van de pakketbeheerder bijwerken met het volgende commando:

Vervolgens installeren we Redis met het commando:

Zonsa u het commando uitvoert, is Redis op uw server geïnstalleerd. Laten we de installatie testen met het commando:

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:

U krijgt de onderstaande uitvoer te zien:

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:

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:

Voor gebruikers die Redis hebben geïnstalleerd met de one-click-applicatie, volg je de onderstaande opdracht om je server opnieuw op te starten:

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:

Uncomment de regel die requirepass, en stel een sterk wachtwoord in:

Herstart de Redis-service om de wijzigingen die u hebt aangebracht door te voeren. Gebruik de opdracht om te herstarten:

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:

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:

Het is mogelijk dat u een AUTH foutmelding krijgt wanneer u probeert toegang te krijgen tot de gegevens met het gedefinieerde wachtwoord:

Uw uitvoer zal er ongeveer zo uitzien:

Om te authenticeren, voert u de AUTH opdracht uit samen met hetzelfde wachtwoord dat u hebt gedefinieerd in het /etc/redis/redis.conf-bestand:

Voer vervolgens de opdracht opnieuw uit:

Dit keer krijgt u een OK als antwoord in plaats van een foutmelding. U krijgt de uitvoer zoals hieronder:

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:

Installeer vervolgens het php5-redis-pakket:

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:

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:

Op LEMP-omgevingen:

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:

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:

Op LEMP omgevingen:

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:

Wijzig vervolgens de /usr/share/nginx/html om je document root-pad te weerspiegelen:

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 *:

Je ziet de onderstaande uitvoer:

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:

Veel computerplezier!

author

Shreyas Patil

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.