La lucha para hacer funcionar Redis con Nextcloud
Hola, soy un inútil.
Configurar Nextcloud21.0.1+Nginx+PHP+MariaDB+Redis en Ubuntu 20.04
Aunque seguí este artículo, que también consulté cuando instalé Nextcloud anteriormente, Redis no funcionó correctamente en mi entorno.
Aunque no funcione, funciona normalmente, así que no es necesario hacerlo...
Como me ha estado molestando, esta es la parte de la solución.
Por cierto, como tengo configurado un caché de proxy en Nginx, me preguntaba cuál era la diferencia, así que le pedí a ChatGPT que me lo explicara. Puedes verlo presionando el botón de abajo.
#myText { display: none; } #toggleButton:checked ~ #myText { display: block; }
Mostrar explicación
El caché de proxy de Nginx está integrado en el propio servidor web (Nginx).
Funciona como un proxy inverso, almacenando en caché las solicitudes al servidor de aplicaciones y devolviendo las respuestas.
Se utiliza principalmente para almacenar en caché contenido web (HTML, imágenes, CSS, JavaScript, etc.).
Acelera la entrega de archivos estáticos y reduce la carga del servidor.
El caché de proxy de Nginx se puede gestionar y controlar fácilmente utilizando el archivo de configuración de Nginx.
Puede configurar la caducidad y el tamaño del caché, las URL a almacenar en caché, etc.
El caché de proxy de Nginx funciona dentro de un único servidor Nginx, y para la escalabilidad y alta disponibilidad, se requieren técnicas como la agrupación o replicación de Nginx.
Guarda archivos de caché temporales en el disco, pero no ofrece funciones para la persistencia o durabilidad de datos a largo plazo.
Redis es una plataforma de base de datos y caché independiente.
Se ejecuta en un servidor diferente, y las aplicaciones se conectan a Redis para leer y escribir datos en caché.
Es una plataforma de caché de propósito general y puede almacenar en caché varios tipos de datos.
Los tipos de datos que se pueden almacenar en caché incluyen cadenas, listas, conjuntos, conjuntos ordenados, hashes, etc.
Redis se controla y gestiona directamente desde el programa.
Se utilizan comandos de Redis para manipular los datos en caché, como establecer, obtener, eliminar y configurar la caducidad de los datos.
Problemas
En primer lugar, Redis no funcionó en absoluto.
Paquetes instalados finalmente
Redis , Redis-server , Redis-tools , php-fpm
Al intentar iniciar Redis
sudo service redis-server start
Errores que aparecieron
Error 1
Reading the configuration file, at line 1
>>> 'logfile "/var/log/redis/redis.log"'
Can't open the log file: No such file or directory
Solución: Se queja de que no puede acceder al log configurado en redis.conf.
Como parece que lo crea automáticamente incluso sin especificar `logfile`, lo dejé como `""`. Si es realmente necesario, creo que funcionaría normalmente si se configuran los logs, los permisos y los derechos.
Error 2
# Opening port: bind: Address already in use
Solución: Se queja de que '¡ese puerto ya está en uso!'
El puerto configurado inicialmente en redis.conf es 6379. Por alguna razón, en Devuan (OpenRC), `sudo service redis-server stop` también da un error y no se detiene. Por lo tanto, para verificar qué lo está usando, introduzca lo siguiente:
root@hoge:~# lsof -i :6379
Si hay un proceso de Redis ejecutándose en segundo plano, bingo. Verifique el PID y mátelo.
root@hoge:~# kill -9 <PID>
Después de esto, debería poder iniciarse normalmente.
Error 3
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 135
>>> 'slave-serve-stale-data yes'
Bad directive or wrong number of arguments
Solución: Me di cuenta de que esto suele ocurrir debido a la diferencia entre la versión de Redis y la versión de la configuración en redis.conf.
Elija la versión que coincida con la suya en el sitio web de Redis y simplemente copie y pegue todo.
Error 4
Failed opening the RDB file dump.rdb (in server root dir /) for saving: Permission denied
6232:M 07 Jul 2023 03:56:39.182 # Background saving error
Solución: Dice 'No se puede abrir el archivo dump.rdb'.
De manera similar, si quedan archivos RDB antiguos, puede que se caiga después de iniciar. Al principio pensé que era un problema de memoria, pero no lo era.
Esto ocurrió después de iniciar y cambiar la carpeta de destino del caché `Dir */~` en redis.conf.
Parece que intenta leerlo incluso si se cambia el directorio de caché, así que elimínelo forzosamente. En mi caso, estaba en `/var/lib/redis/dump.rdb`.
sudo rm /var/lib/redis/dump.rdb
Con esto, los problemas del lado de Redis están resueltos.
Lado de Nextcloud
root@hoge:~# sudo -u www-data php /var/www/html/nextcloud/occ maintenance:update:htaccess
Lo que se hace al actualizar htaccess.
RedisException: Connection refused in /var/www/html/nextcloud/lib/private/RedisFactory.php:137
~~~~~
Solución: Si aparecen muchos errores con nombres de archivo después de esto, es un error que indica que Redis no está funcionando correctamente o que la configuración de Nextcloud es incorrecta y no puede conectarse a Redis.
Sospeche principalmente de Redis y del php.config de Nextcloud.
Creo que hubo otros, pero esto es lo principal.
Ahora puedo manejar Redis con confianza en el futuro.
Por cierto, me pregunto si superponer cachés de memoria en realidad ralentizaría las cosas. Si es rápido hasta cierto punto, la velocidad de respuesta del servidor o dispositivo que se comunica en ese momento podría convertirse en el cuello de botella.
Todavía hay mucho por explorar, así que estoy emocionado.
Estoy agotado.
Hasta luego.