Volver al blog

Configuración de un servidor Redis como gestor de sesiones para PHP en Ubuntu 20.04

Configuración de un servidor Redis como gestor de sesiones para PHP en Ubuntu 20.04

Redis es un sistema de almacenamiento y caché en memoria de código abierto, también conocido como servidor de estructura de datos. Ofrece soporte avanzado para varios tipos de datos, como hashes, listas, conjuntos, mapas de bits y muchos más. Debido a su excelente rendimiento, Redis es muy popular en industrias líderes y en las principales multinacionales.

Beneficios de Redis

Cuando se trata de velocidad, no hay rival para los servidores Redis. Como NoSQL servidor de bases de datos, ofrece una velocidad fantástica para almacenar y recuperar datos. Además, Redis cuenta con funcionalidades destacadas que permiten trabajar sin problemas con diferentes datos, incluidos los complejos. La facilidad de uso y las sofisticadas funcionalidades de Redis no solo lo han hecho destacar, sino que han permitido su creciente estandarización como base de datos principal para usuarios corporativos e individuales.

A continuación, detallaremos los pasos para ayudarte a instalar el software Redis en Ubuntu 20.04. En este tutorial, obtendrás toda la información que necesitas desde la instalación hasta la configuración de un servidor Redis externo para ser utilizado como manejador de sesiones para una aplicación PHP que se ejecuta en Ubuntu 20.04.

Primeros pasos

Para seguir los pasos, necesitarás dos servidores de bases de datos diferentes (droplets) ubicados en el mismo centro de datos con la red privada habilitada. Estos incluyen:

  • Un servidor web PHP que ejecuta LAMP y LEMP en Ubuntu 20.04 – nos referiremos a este servidor como web.

  • Un segundo servidor Ubuntu 20.04 limpio donde se instalará Redis – nos referiremos a este servidor como redis.

Paso 1 — Instalación del servidor Redis

Nuestro primer paso es instalar el servidor Redis en Ubuntu 20.04. Una vez hecho esto, asegúrate de que el servidor esté activo y funcionando en nuestro redis Droplet.

En este tutorial, utilizaremos Personal Package Archives (PPA). Recomendamos encarecidamente optar por los PPA por razones de seguridad. En comparación con otros repositorios de terceros, los PPA son estables, fáciles de instalar y, sobre todo, el repositorio está diseñado para usuarios de Ubuntu. PPA te permite obtener la última versión de software disponible, incluso para el software que no encuentras en los repositorios oficiales de Ubuntu.

Usar PPA de una fuente no autorizada es un gran error. Asegúrate de obtener los PPA únicamente de fuentes auténticas y verificadas. Puedes agregar el repositorio PPA usando el comando:

Presiona la tecla Enter para confirmar. Después de la confirmación, actualizaremos la caché del administrador de paquetes usando el siguiente comando:

A continuación, instalaremos Redis usando el comando:

Una vez que ejecutes el comando, tendrás Redis instalado en tu servidor. Probemos la instalación usando el comando:

Una vez que ejecutes el comando, verás una instancia de Redis ejecutándose en el localhost en el puerto 6379. Además, habrá una respuesta llamada PONG. Si ves esto, significa que has completado con éxito el primer paso. Para obtener una guía detallada sobre cómo instalar y asegurar Redis, puedes echar un vistazo a nuestro tutorial Cómo instalar y asegurar Redis en Ubuntu 18.04.

A continuación, pasemos al siguiente paso: configurar Redis.

Paso 2 — Configuración de Redis para aceptar conexiones externas

El objetivo principal de configurar Redis es aceptar conexiones que provienen del exterior. ¿Por qué? Porque Redis, por defecto, permite conexiones solo a localhost, y existe una restricción para conectarse desde cualquier otro lugar. En términos más sencillos, tendrás acceso desde el interior del servidor donde has instalado Redis.

Primero, obtén información detallada sobre tus interfaces de red usando el ifconfig comando:

Obtendrás la siguiente salida:

En la interfaz eth1, encontrará la inet_addr. Aquí tenemos 10.133.14.9. Utilizaremos esta dirección IP en los siguientes pasos para conectar el servidor redis desde el servidor web.

Paso 3 — Vinculación de Localhost

Puede utilizar el editor de código de su elección (Atom y Visual Studio Code son los más populares).

Ahora, abra el archivo /etc/redis/redis.conf y busque la línea que contiene la definición bind. Debe agregar su dirección IP de red privada a la línea:

Es posible que vea localhost, en lugar de 127.0.0.1. No se preocupe, solo necesita agregar su dirección IP privada. A continuación, reinicie el servicio Redis para aplicar los cambios. Utilice el siguiente comando para reiniciar el servidor redis :

Para aquellos usuarios que hayan instalado Redis utilizando la aplicación de un solo clic, sigan el comando que se menciona a continuación para reiniciar su servidor:

Una vez que reinicie el servidor redis, cualquier servidor presente en la misma red privada se conectará automáticamente a esta instancia de Redis, sin necesidad de hacerlo individualmente.

Paso 4 — Configuración de la contraseña del servidor Redis

Puede omitir este paso si está utilizando la instalación de Redis con fines de práctica o capacitación. Sin embargo, se recomienda encarecidamente configurar la contraseña para el servidor redis es muy recomendable si desea agregar una capa adicional de seguridad a su instalación de Redis. Modifiquemos el mismo archivo de configuración que en el paso anterior. Utilice el comando para editar:

Descomente la línea que contiene requirepass, y establezca una contraseña segura:

Reinicie el servicio Redis para reflejar los cambios que ha realizado. Use el comando para reiniciar:

Paso 5 — Prueba de conexión y autenticación de Redis

En este paso, nos conectaremos al servicio Redis desde el interior de la máquina redis para asegurarnos de que todos los cambios realizados funcionen a la perfección como se espera. Para conectarse, use el siguiente comando:

Aquí, incluso si omite mencionar el nombre de host, se ejecutará de todos modos. Nuestro objetivo principal es asegurarnos de que el servicio Redis acepte las conexiones sin problemas:

Es posible que reciba un AUTH de error al intentar acceder a los datos desde la contraseña definida:

Su salida se verá similar a esto:

Para autenticarse, ejecute el comando AUTH junto con la misma contraseña que definió en el archivo /etc/redis/redis.conf :

A continuación, ejecute el comando de nuevo:

Esta vez, obtendrá un OK como respuesta en lugar de un error. Obtendrá la salida como se muestra a continuación:

La salida empty list o set significa que el servidor Redis está vacío. Esto se debe a que aún no hemos configurado el servidor web como manejador de sesiones.

Nota: Antes de continuar, asegúrese de que la sesión SSH esté abierta y conectada a redis-cli. En los próximos pasos, volveremos al indicador de redis-cli para verificar si los datos de la sesión se almacenaron correctamente después de realizar los cambios necesarios en el servidor web .

Paso 6 — Instalación de la extensión de Redis en el servidor web

Los siguientes pasos deben ejecutarse en el servidor web . Necesitamos instalar la extensión PHP Redis para que PHP se conecte al servidor Redis.

Primero, actualice la caché de su gestor de paquetes ejecutando el comando:

A continuación, instale el paquete php5-redis :

Ya está todo listo para conectarse a Redis.

Paso 7 — Configuración de Redis como el manejador de sesiones predeterminado en el servidor web

PHP tiene un manejador de sesiones predeterminado. En este paso, editaremos el archivo php.ini en el servidor web para cambiar la configuración predeterminada. La ubicación del archivo php.ini depende de la pila actual:

  • Para una pila LAMP en Ubuntu 20.04, use: /etc/php5/apache2/php.ini.

  • Para una pila LEMP en Ubuntu 20.04, la ruta suele ser /etc/php5/fpm/php.ini.

Si no está seguro de la ubicación de su archivo php.ini principal, ayúdese de la función phpinfo(). Coloque el siguiente código en un archivo llamado info.php dentro de su directorio raíz web:

Cuando intente acceder al script desde su navegador, busque la fila que contiene “Loaded Configuration File”. Encontrará la ubicación exacta del archivo principal php.ini cargado. Asegúrese de eliminar el archivo info.php ya que contiene todo el contenido confidencial de su entorno.

Después de eso, abra el archivo php.ini y busque la línea que contiene session.save_handler. El valor predeterminado será files, asegúrese de cambiarlo a redis.

En entornos LAMP :

En entornos LEMP :

A continuación, descomente session.save_path y modifique el valor para que contenga la cadena de conexión de Redis. El contenido debe seguir el siguiente formato:

Use la contraseña que hemos configurado en el Paso- 4. En caso de que no esté utilizando la contraseña establecida, proporcione el parámetro auth al configurar Redis. Ahora, guarde el archivo y reinicie php servicio en ambos entornos.

En LAMP entornos:

En LEMP entornos:

Paso 8 — Probando el manejo de sesiones de Redis

En el paso final, necesitamos un script o aplicación PHP para asegurarnos de que sus sesiones ahora sean manejadas por Redis. Usaremos un script simple que implementa un contador – cada vez que recargue la página, el número impreso se incrementará.

Cree un archivo llamado demo.php en el servidor web y manténgalo dentro de su carpeta raíz de documentos:

Luego, cambie el /usr/share/nginx/html para reflejar su ruta raíz de documentos:

A continuación, debe apuntar su navegador a http://web/demo.php para acceder al script. El programa incrementará el número cada vez que recargue la página.

Ahora tendrá la información de la sesión almacenada en el servidor Redis. Para verificar, debe volver a su sesión SSH en la máquina redis utilizando el redis-cli. Obtenga el contenido una vez más con keys *:

Verá la siguiente salida:

La salida verifica que toda la información se almacena de forma segura en el servidor redis. Si desea conectar servidores web adicionales, puede seguir el mismo procedimiento.

Conclusión

Redis es una base de datos NoSQL que permite el almacenamiento de numerosos datos no estructurados. Muy pocas bases de datos pueden compararse con las funcionalidades y la simplicidad del servidor redis. Su creciente popularidad lo convierte continuamente en un elemento imprescindible con pocos sustitutos en comparación con sus amplias características.

Para profundizar aún más en sus conocimientos sobre las aplicaciones PHP y cómo utilizarlas, puede echar un vistazo a los siguientes tutoriales de nuestro blog:

¡Feliz computación!

author

Shreyas Patil

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.