Redis è un sistema di memorizzazione e cache in-memory open-source, noto anche come server di strutture dati. Offre un supporto avanzato per diversi tipi di dati, come hash, elenchi, set, bitmap e molti altri. Grazie alle sue eccellenti prestazioni, Redis è molto popolare nei settori leader e nelle principali multinazionali.
Vantaggi di Redis
Quando si tratta di velocità, non ci sono rivali per i server Redis. Come NoSQL database server, offre una velocità fantastica nell'archiviazione e nel recupero dei dati. Inoltre, Redis dispone di funzionalità eccezionali che rendono semplicissimo lavorare con dati diversi, anche complessi. La facilità d'uso e le funzionalità sofisticate di Redis non solo lo hanno reso unico, ma hanno permesso la sua crescente standardizzazione come database principale per utenti aziendali e individuali.
Di seguito, analizzeremo in dettaglio i passaggi per aiutarti a installare Redis sul software Ubuntu 20.04. In questo tutorial otterrai tutte le informazioni necessarie, dall'installazione alla configurazione di un server Redis esterno da utilizzare come gestore di sessione per un'applicazione PHP in esecuzione su Ubuntu 20.04.
Primi passi
Per seguire i passaggi, avrai bisogno di due diversi server di database (droplet) situati nello stesso data center con rete privata abilitata. Questi includono:
-
Un server web PHP con LAMP e LEMP su Ubuntu 20.04 – faremo riferimento a questo server come web.
-
Un secondo server Ubuntu 20.04 pulito in cui verrà installato Redis – faremo riferimento a questo server come redis.
Passo 1 — Installazione del server Redis
Il nostro primo passo è installare il server Redis su Ubuntu 20.04. Una volta fatto, assicurati che il server sia attivo e funzionante sul nostro redis Droplet.
In questo tutorial utilizzeremo i Personal Package Archives (PPA). Consigliamo vivamente di utilizzare i PPA per motivi di sicurezza. Rispetto ad altri repository di terze parti, i PPA sono stabili, facili da installare e, soprattutto, il repository è progettato per gli utenti Ubuntu. Il PPA ti consente di ottenere l'ultima versione del software disponibile, anche per i software che non trovi nei repository ufficiali di Ubuntu.
L'uso di PPA da una fonte non autorizzata è assolutamente sconsigliato. Assicurati di ottenere i PPA solo da fonti autentiche e verificate. Puoi aggiungere il repository PPA usando il comando:
|
1 |
sudo add-apt-repository ppa:chris-lea/redis-server |
Premi il tasto Invio per confermare. Dopo la conferma, aggiorneremo la cache del gestore dei pacchetti utilizzando il seguente comando:
|
1 |
sudo apt-get update |
Successivamente, installeremo Redis utilizzando il comando:
|
1 |
sudo apt-get install redis-server |
Una volta eseguito il comando, avrai Redis installato sul tuo server. Testiamo l'installazione utilizzando il comando:
|
1 |
redis-cli ping |
Una volta inviato il comando, vedrai un'istanza di Redis in esecuzione su localhost sulla porta 6379. Inoltre, ci sarà una risposta chiamata PONG. Se vedi questo, significa che hai completato con successo il primo passo. Per una guida dettagliata su come installare e proteggere Redis, puoi dare un'occhiata al nostro tutorial Come installare e proteggere Redis su Ubuntu 18.04.
Ora passiamo al passaggio successivo: la configurazione di Redis.
Passo 2 — Configurazione di Redis per accettare connessioni esterne
L'obiettivo principale della configurazione di Redis è accettare connessioni provenienti dall'esterno. Perché? Perché Redis, per impostazione predefinita, consente connessioni solo a localhost, e c'è una restrizione per connettersi da qualsiasi altro luogo. In parole povere, avrai accesso solo dall'interno del server in cui hai installato Redis.
Innanzitutto, ottieni informazioni dettagliate sulle tue interfacce di rete utilizzando il ifconfig comando:
|
1 |
sudo ifconfig |
Otterrai il seguente output:
|
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) |
Sull'interfaccia eth1 troverai l' inet_addr. Qui abbiamo 10.133.14.9. Useremo questo indirizzo IP nei passaggi successivi per connettere il redis server dal web server.
Passaggio 3 — Binding di Localhost
Sei libero di usare l'editor di codice che preferisci (Atom e Visual Studio Code sono i più popolari).
Ora apri il file /etc/redis/redis.conf e cerca la riga che contiene la definizione bind. Dovresti aggiungere il tuo indirizzo IP della rete privata alla riga:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 |
bind localhost 10.133.14 |
Potresti vedere localhost, invece di 127.0.0.1. Non preoccuparti, devi solo aggiungere il tuo indirizzo IP privato. Successivamente, riavvia il servizio Redis per applicare le modifiche. Usa il comando seguente per riavviare il server redis server:
|
1 |
sudo service redis-server restart |
Per gli utenti che hanno installato Redis utilizzando l'applicazione con un clic, seguire il comando indicato di seguito per riavviare il server:
|
1 |
sudo service redis restart |
Una volta riavviato il server redis server, qualsiasi server presente nella stessa rete privata si connetterà automaticamente a questa istanza di Redis, senza la necessità di farlo singolarmente.
Passaggio 4 — Configurazione della password del server Redis
Puoi saltare questo passaggio se stai utilizzando l'installazione di Redis a scopo di pratica o formazione. Tuttavia, la configurazione della password per il server redis server è altamente consigliata se desideri aggiungere un ulteriore livello di sicurezza alla tua installazione di Redis. Modifichiamo lo stesso file di configurazione del passaggio precedente. Usa il comando per modificare:
|
1 |
sudo vim /etc/redis/redis.conf |
Decommenta la riga che contiene requirepass, e imposta una password sicura:
|
1 |
requirepass StrongPassword |
Riavvia il servizio Redis per applicare le modifiche apportate. Usa il comando per riavviare:
|
1 |
sudo service redis-server restart |
Passaggio 5 — Test di connessione e autenticazione di Redis
In questo passaggio, ci connetteremo al servizio Redis dall'interno della macchina redis per assicurarci che tutte le modifiche apportate funzionino perfettamente come previsto. Per connetterti, usa il comando seguente:
|
1 |
redis-cli -h 10.133.14.9 |
Qui, anche se si evita di menzionare l'hostname, funzionerà comunque. Il nostro obiettivo principale è assicurarci che il servizio Redis accetti le connessioni senza problemi:
|
1 |
10.133.14.9:6379> |
È possibile che si riceva un errore AUTH quando si tenta di accedere ai dati con la password definita:
|
1 |
10.133.14.9:6379> keys * |
L'output sarà simile a questo:
|
1 2 |
OUTPUT: (error) NOAUTH Authentication required. |
Per autenticarsi, esegui il comando AUTH insieme alla stessa password definita nel file /etc/redis/redis.conf file:
|
1 |
10.133.14.9:6379> AUTH StrongPassword |
Successivamente, esegui nuovamente il comando:
|
1 |
10.133.14.9:6379> keys * |
Questa volta riceverai un OK come risposta invece di un errore. Riceverai l'output come segue:
|
1 2 |
OUTPUT: (empty list o set) |
L'output empty list o set significa che il server Redis è vuoto. Questo perché non abbiamo ancora configurato il server web come gestore delle sessioni.
Nota: Prima di procedere, assicurati che la sessione SSH sia aperta e connessa a redis-cli. Nei passaggi successivi, torneremo al prompt di redis-cli per verificare se i dati della sessione sono stati memorizzati correttamente dopo aver apportato le modifiche necessarie al server web server.
Passaggio 6 — Installazione dell'estensione Redis sul server Web
I passaggi successivi devono essere eseguiti sul server web server. Dobbiamo installare l'estensione PHP Redis affinché PHP possa connettersi al server Redis.
Per prima cosa, aggiorna la cache del gestore pacchetti eseguendo il comando:
|
1 |
sudo apt-get update |
Successivamente, installa il pacchetto php5-redis :
|
1 |
sudo apt-get install php5-redis |
Sei pronto per connetterti a Redis.
Passaggio 7 — Configurazione di Redis come gestore di sessione predefinito sul server Web
PHP ha un gestore di sessione predefinito. In questo passaggio, modificheremo il file php.ini sul server web server per modificare le impostazioni predefinite. La posizione del file php.ini dipende dallo stack corrente:
-
Per uno stack LAMP su Ubuntu 20.04, usa: /etc/php5/apache2/php.ini.
-
Per uno stack LEMP su Ubuntu 20.04, il percorso è solitamente /etc/php5/fpm/php.ini.
Se non sei sicuro della posizione del tuo file principale php.ini , fatti aiutare dalla funzione phpinfo(). Inserisci il seguente codice in un file chiamato info.php all'interno della directory principale del tuo sito web:
|
1 2 |
<?php phpinfo(); |
Quando provi ad accedere allo script dal browser, cerca la riga contenente "Loaded Configuration File". Troverai la posizione esatta del file principale php.ini caricato. Assicurati di rimuovere il file info.php poiché contiene informazioni sensibili sul tuo ambiente.
Dopodiché, apri il file php.ini e cerca la riga contenente session.save_handler. Il valore predefinito sarà files, assicurati di cambiarlo in redis.
Su ambienti LAMP:
|
1 |
$ sudo vim /etc/php5/apache2/php.ini |
Su ambienti LEMP:
|
1 |
$ sudo vim /etc/php5/fpm/php.ini |
|
1 |
session.save_handler = redis |
Successivamente, decommenta la riga session.save_path e modifica il valore in modo che contenga la stringa di connessione di Redis. Il contenuto deve seguire il formato seguente:
|
1 |
tcp://IPADDRESS:PORT?auth=REDISPASSWORD |
|
1 |
session.save_path = "tcp://10.133.14.9:6379?auth=yourverycomplexpasswordhere" |
Usa la password che abbiamo impostato nel Passaggio 4. . Nel caso in cui non si utilizzi la password impostata, fornire il parametro auth durante la configurazione di Redis. Ora salva il file e riavvia il servizio php servizio su entrambi gli ambienti.
Su LAMP ambienti:
|
1 |
sudo service apache2 restart |
Su LEMP ambienti:
|
1 |
sudo service php5-fpm restart |
Passo 8 — Testare la gestione delle sessioni di Redis
Nell'ultimo passaggio, abbiamo bisogno di uno script o di un'applicazione PHP per assicurarci che le sessioni siano ora gestite da Redis. Utilizzeremo un semplice script che implementa un contatore – ogni volta che ricarichi la pagina, il numero stampato viene incrementato.
Crea un file chiamato demo.php sul server web e conservalo all'interno della cartella radice dei documenti (document root):
|
1 |
sudo sudo vim /usr/share/nginx/html/test.php |
Quindi, modifica /usr/share/nginx/html per riflettere il percorso della tua document root:
|
1 2 3 4 5 6 7 |
<?php //semplice contatore per testare le sessioni. dovrebbe incrementarsi a ogni ricarica della pagina. session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count; |
Successivamente, devi puntare il tuo browser su http://web/demo.php per accedere allo script. Il programma incrementerà il numero ogni volta che ricarichi la pagina.
Ora avrai le informazioni sulla sessione memorizzate sul server Redis. Per verificare, devi tornare alla tua sessione SSH sulla macchina redis utilizzando il redis-cli. Ottieni nuovamente il contenuto con keys *:
|
1 |
10.133.14.9:6379> keys * |
Vedrai l'output qui sotto:
|
1 2 |
OUTPUT: 1) "PHPREDIS_SESSION:j9rsgtde6st2rqb6lu5u6f4h83" |
L'output verifica che tutte le informazioni siano memorizzate in modo sicuro sul server redis . Se desideri connettere ulteriori server web, puoi seguire la stessa procedura.
Conclusione
Redis è un database NoSQL che consente la memorizzazione di numerosi dati non strutturati. Pochissimi database possono essere paragonati alle funzionalità e alla semplicità del server redis. La sua crescente popolarità lo rende continuamente un must-have con pochi sostituti rispetto alle sue ampie funzionalità.
Per approfondire ulteriormente la tua conoscenza delle applicazioni PHP e di come utilizzarle, puoi dare un'occhiata ai seguenti tutorial del nostro blog:
- Distribuire un'applicazione PHP su un cluster Kubernetes con Ubuntu 18.04
- Installare phpBB su Ubuntu 20.04
- Installare e proteggere phpMyAdmin su Ubuntu 18.04
Buon computing!
Commenti
Ancora nessun commento. Scrivi il primo.