En este artículo veremos cómo instalar Redis en Fedora 36, 35 y 34 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.
Contenido
Antes de instalar Redis en Fedora 36
Para poder completar esta guía de instalación y configuración de Redis en Fedora 36, 35 y 34 es necesario satisfacer los siguientes requerimientos:
- Una instalación actualizada de Fedora 36, 35 ó 34.
- Un usuario con permisos de sudo o el mismo root.
- Conexión a Internet.
Cómo instalar Redis en Fedora 36
Para instalar Redis en Fedora 36 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 36, 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 36, 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
:
El servicio escucha peticiones locales en el puerto 6379 TCP como podemos comprobar con el comando ss:
~$ ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ... LISTEN 0 511 127.0.0.1:6379 0.0.0.0:* ... LISTEN 0 511 [::1]:6379 [::]:* ...
Versión instalada de Redis en Fedora 36
Si quieres saber la versión exacta de Redis que se ha instalado en Fedora 36 puedes averiguarlo con el comando redis-server:
~$ redis-server -v Redis server v=6.2.7 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=63e4c6cb7f542ebb
Instalación del cliente de Redis en Fedora 36
En Fedora 36 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 36
Para probar el nuevo servicio Redis en Fedora 36 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 36
Para configurar Redis en Fedora 36 trabajaremos sobre su archivo de configuración en la ruta /etc/redis.conf.
~$ sudo nano /etc/redis/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 36
La configuración por defecto de Redis en Fedora 36 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 36 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 36:
~$ redis-cli -h fedora.local.lan fedora.local.lan:6379> auth XXXXXXXX OK fedora.local.lan:6379> get diamantes "rojo" fedora.local.lan:6379>
PHP y Redis
Si estás interesado en desarrollo web sobre PHP entonces debes saber que existen extensiones para comunicar con Redis. La extensión más indicada para la versión incluida en los repositorios de la distribución es php-pecl-redis5, que instalamos fácilmente con yum:
~$ 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, añadiendo a la dirección del servidor (IP, dominio, nombre DNS, localhost si accedemos localmente, etc.) la ruta del archivo.
Por ejemplo, la máquina sobre la que hemos preparado este tutorial es accesible en el subdominio fedora.local.lan, así que podríamos acceder usando http://fedora.local.lan/redis.php como URL.
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 y leer contenido de los usuarios:
~$ sudo setsebool -P httpd_can_network_connect on ~$ sudo setsebool -P httpd_read_user_content on
Volvemos a cargar la página en el navegador:
Ahora ya funciona como se esperaba.
Conclusión
Ya sabes cómo instalar y configurar Redis en Fedora 36, 35 ó 34, 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 (están moderados para evitar el SPAM, pero se revisan prácticamente a diario).
¡Apoya este sitio!
¿Ya tienes el servicio montado en tu propia máquina gracias a esta breve guía de instalación y configuración? 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 y guías.
Puedes hacerlo dejando una propina de tan sólo 1 $ desde PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un cappuccino:
¡Gracias!
Actualizado a la versión 6.2.7 sobre Fedora 36.