#howto - Installazione e configurazione di Redis Server su CentOS 8 e derivate
Redis è un programma archivio chiave-valore in memoria gratuito e open source che supporta diversi tipi di strutture dati. Può essere utilizzato come database, come cache oppure molto altro ancora. Spesso viene utilizzato per creare applicazioni scalabili e che hanno bisogno di una grande performance.
In questa guida vedremo come installare Redis Server su CentOS 8 e distribuzioni derivate.
Installazione di Redis Server
Il pacchetto Redis è disponibile nel repository predefinito di CentOS 8, ed è possibile installarlo tramite dnf
:
dnf install redis
Dopo averlo installato, avviamolo e facciamo in modo che venga eseguito all’avvio del sistema, questo via systemctl:
systemctl start redis
systemctl enable redis
Possiamo verificarne l’effettiva esecuzione con l’opzione status
:
systemctl status redis
il quale dovrà ritornare un output simile al seguente:
Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/redis.service.d
??limit.conf
Active: active (running) since Mon 2020-10-19 11:28:27 CEST; 6s ago
Main PID: 3712 (redis-server)
Tasks: 4 (limit: 12527)
Memory: 12.47M
CGroup: /system.slice/redis.service
??3712 /usr/bin/redis-server 127.0.0.1:6379
Oct 19 11:28:27 centos8 systemd[1]: Starting Redis persistent key-value database...
Oct 19 11:28:27 centos8 systemd[1]: Started Redis persistent key-value database.
Eseguiamo redis-cli
per verificare che sia effettivamente disponibile:
redis-cli
nella console che ci si presenta, digitiamo ping
per verificarne la connettività:
127.0.0.1:6379> ping
nel caso fosse tutto configurato correttamente, l’esito sarà il seguente:
PONG
Configurazione di Redis Cache
Una volta installato Redis dovremo configurarlo per fare in modo che funga da servizio di caching. Per fare ciò, apriamo il file di configurazione con un qualsiasi editor di testo:
nano /etc/redis.conf
e alla fine aggiungiamo le seguenti righe:
maxmemory 128mb
maxmemory-policy allkeys-lru
Il valore di maxmemory indica la memoria che Redis deve utilizzare, mentre il valore di maxmemory-policy, in questo caso allkeys-lru, specifica che cosa deve fare il programma una volta raggiunta la memoria massima allocata. Con allkeys-lru, ad esempio, diciamo a Redis di eliminare le chiavi provando a rimuovere prima le chiavi usate meno di recente (LRU), in modo da fare spazio per i nuovi dati aggiunti.
Una volta modificato il file, riavviamo il servizio:
systemctl restart redis
Sicurezza di Redis
Come standard, redis-cli
consente di eseguire qualsiasi comando all’interno della shell, e per questo motivo sarebbe necessario proteggere la shell utilizzando una password. Modificando il file di configurazione di Redis:
nano /etc/redis.conf
cerchiamo la seguente riga:
# requirepass foobared
togliamo il commento e cambiamo la password in una sicura e di nostra preferenza:
requirepass password
e riavviamo il servizio:
systemctl restart redis
In questo modo, provando ad eseguire un comando come:
127.0.0.1:6379> INFO server
dovremmo ricevere un messaggio che ci bloccherà l’accesso. Per accedere con la nostra password dovremo invece scrivere nella shell di Redis:
127.0.1:6379> AUTH password
Comandi pericolosi
È buona norma, in realtà, rinominare alcuni comandi pericolosi all’interno della shell di Redis, come “config”, che, se eseguiti, possono fornire dati sensibili che magari uno preferisce nascondere.
Per rinominare il comando config, con cui si può recuperare la password in questo modo:
127.0.0.1:6379> config get requirepass
andiamo a modificare il file di configurazione di Redis:
nano /etc/redis.conf
cerchiamo la seguente riga:
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
e al posto della lunga stringa dopo config inseriamo un valore a nostro piacere:
rename-command CONFIG nuovo_comando_config
Fatto ciò riavviamo Redis:
systemctl restart redis
e proviamo a rieseguire il comando config con i parametri get e requirepass:
127.0.0.1:6379> config get requirepass
Se tutto ha funzionato a dovere, si dovrebbe ottenere un errore come il seguente:
(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`,
Sostituendo “config” con il comando da noi dato nel file di configurazione:
127.0.0.1:6379> nuovo_comando_config get requirepass
dovremmo riuscire ad ottenere la nostra password.