Cómo instalar Redis en Fedora 30

En este artículo veremos cómo instalar Redis en Fedora 30 paso a paso, de forma que al final tendrás funcionando este servicio de bases de datos en memoria sobre tu servidor o VPS Fedora.

Antes de instalar Redis en Fedora 30

Para poder completar esta guía de instalación y configuración de Redis en Fedora 30 es necesario satisfacer los siguientes requerimientos:

  • Una instalación actualizada de Fedora 30.
  • Un usuario con permisos de sudo o el mismo root.
  • Conexión a Internet.

Cómo instalar Redis en Fedora 30

Para instalar Redis en Fedora 30 usaremos los paquetes disponibles en los repositorios de la distribución, así que el primer paso será actualizar la información de estos repositorios:

~$ sudo yum update

El paquete que debemos instalar es redis y lo haremos con el comando yum:

~$ sudo yum install -y redis

Se crea un nuevo servicio en Fedora 30, el servicio redis.service o redis, que no queda en ejecución ni habilitado para su inicio automático.

Iniciaremos Redis manualmente por primera vez con el comando systemctl:

~$ sudo systemctl start redis

Y si nos interesa que Redis inicie automáticamente junto a Fedora 30, habilitaremos también el servicio:

~$ sudo systemctl enable redis

En cualquier momento se puede consultar fácilmente el estado del servicio con el comando systemctl status redis:

como instalar redis en fedora 30

El servicio escucha peticiones locales en el puerto 6379 TCP.

Versión instalada de Redis en Fedora 30

Si quieres saber la versión exacta de Redis que se ha instalado en Fedora 30 puedes averiguarlo con el comando redis-server:

~$ redis-server -v
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=135199ef777757d

Instalación del cliente de Redis en Fedora 30

En Fedora 30 el mismo paquete incluye tanto el servicio Redis como el cliente de consola redis-cli, por lo tanto ya lo tendríamos instalado.

Sin embargo, si sólo necesitas el cliente para trabajar de forma remota, los pasos son los mismos, pero no habrá que activar el servicio localmente.

Probar Redis en Fedora 30

Para probar el nuevo servicio Redis en Fedora 30 podemos conectar al servicio con el cliente de consola redis-cli y enviar el comando ping:

~$ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

Se establece la conexión y recibimos respuesta.

Podemos crear pares clave/valor que quedarán almacenados:

> set corazones rojo
> set diamantes rojo
> set picas negro
> set tréboles negro
>

En cualquier momento podemos recuperar el valor de una clave:

> get tréboles
"negro"
>

Para abandonar el cliente basta con usar el comando exit.

Cómo configurar Redis en Fedora 30

Para configurar Redis en Fedora 30 trabajaremos sobre su archivo de configuración en la ruta /etc/redis.conf.

~$ sudo nano /etc/redis.conf

Acceder al servicio con contraseña

Hemos visto anteriormente que es posible acceder al servicio directamente, sin ningún tipo de credencial de acceso. Podemos cambiar este comportamiento estableciendo una contraseña en el archivo redis.conf, buscando la directiva requirepass:

...
# requirepass foobared
...

Activaremos esta directiva eliminando el carácter # inicial y asignando un valor:

...
requirepass XXXXXXXX
...

La contraseña debería ser muy fuerte, ya que al tratarse de una base de datos en memoria, un atacante podría probar miles de combinaciones por segundo.

Guardados los cambios, es necesario reiniciar Redis:

~$ sudo systemctl restart redis

La próxima vez que conectemos con el servicio no se aceptarán comandos si no se proporciona la contraseña:

~$ redis-cli
> get picas
(error) NOAUTH Authentication required.
>

Enviaremos la contraseña con el comando auth:

127.0.0.1:6379> auth XXXXXXXX
OK
> get picas
"negro"
>

Acceso remoto a Redis en Fedora 30

La configuración por defecto de Redis en Fedora 30 sólo permite conexiones locales, así que si necesitamos acceso remoto cambiaremos el valor de la directiva bind en redis.conf:

...
bind 127.0.0.1
...

Podemos añadir la dirección del adatapdor con el que la máquina conecta a la red, sustituir el valor por 0.0.0.0 para permitir conexiones desde cualquier sitio o desactivar la directiva:

...
#bind 127.0.0.1
...

Reiniciamos el servicio para aplicar los cambios.

Firewall

Lo habitual es que el firewall de Fedora 30 esté activado, así que si queremos permitir el acceso remoto al servicio Redis habrá que añadir una regla:

~$ sudo firewall-cmd --permanent --add-service=redis

Y recargamos la configuración del firewall:

~$ sudo firewall-cmd --reload

Establecer la conexión remota

Podremos conectar desde otra máquina que tenga un cliente de Redis como redis-cli indicando la dirección del servidor Fedora 30:

~$ redis-cli -h fedora30.local
fedora30.local:6379> auth XXXXXXXX
OK
fedora30.local:6379> get diamantes
"rojo"
fedora30.local:6379>

PHP y Redis

Si estás interesado en desarrollo web sobre PHP entonces debes saber que existen extensiones para comunicar con Redis. La más indicada para la versión de Redis incluida en Fedora 30 es php-pecl-redis5:

~$ sudo yum install -y php-pecl-redis5

Como siempre que se instalan extensiones, hay que recargar la configuración del servicio PHP-FPM para que la extensión esté disponible:

~$ sudo systemctl reload php-fpm

Podemos crear un pequeño script en PHP para probar desde consola:

~$ sudo nano redis.php

Con un contenido tan básico como establecer conexión, autenticar el acceso con la contraseña y recuperar el valor de una clave:

<?php
$key = 'corazones';
$password = 'XXXXXXXX';
$redisObj = new Redis();
$redisObj->connect('127.0.0.1', 6379);
if ($redisObj->auth($password)) {
        $value = $redisObj->get($key);
        echo "La clave '$key' tiene el valor '$value'\n\n";
} else {
        echo "Error de autenticación\n\n";
}
$redisObj->close();

Si lanzamos el script con el comando php en consola obtenemos esto:

~$ php redis.php
La clave 'corazones' tiene el valor 'rojo'

~$

Justo como esperábamos.

SELinux, Redis y PHP

Vamos a probar el script anterior vía web a través del navegador, para lo que lo moveremos a una ruta accesible desde el servicio web:

~$ sudo mv redis.php /var/www/html/

Ahora trataremos de acceder desde el navegador:

como configurar redis en fedora 30

Fatal error: Uncaught RedisException: Permission denied in…

Redis->connect(‘127.0.0.1’, 6379) #1 {main} thrown in…

Si aparece un error como el mostrado anteriormente se debe a que SELinux está activado y bloqueando las conexiones de red del servicio web.

Configuraremos SELinux para que permita las conexiones entre la aplicación web y el servicio Redis:

~$ sudo setsebool -P httpd_can_network_connect on

Volvemos a cargar la página en el navegador:

configuración de redis en fedora 30

Ahora ya funciona como se esperaba.

Conclusión

Ya sabes cómo instalar y configurar Redis en Fedora 30, por lo que puedes empezar a trabajar con este servicio de bases de datos en memoria con tus propias aplicaciones web o instalando aquellas que lo requieren.

En caso de dudas o preguntas, alguna sugerencia, etc. puedes dejar un comentario.

¡Apoya este sitio!

¿Ya tienes el servicio montado gracias a esta guía de instalación y configuración de Redis en Fedora 30? Si es así y te apetece agradecérnoslo, cualquier aportación es una gran ayuda al mantenimiento de este sitio y para la creación de nuevos tutoriales de Fedora 30 y Redis. ¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 5,00 de 5)
Cargando...

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies