A luta para fazer o Redis funcionar no Nextcloud

8 min

language: ja bn en es hi pt ru zh-cn zh-tw

Olá, sou um inútil.

Configurar Nextcloud 21.0.1 + Nginx + PHP + MariaDB + Redis no Ubuntu 20.04

Segui este artigo, que também usei como referência na minha instalação anterior do Nextcloud, mas o Redis não funcionou corretamente no meu ambiente.
Mesmo que não funcione, ele funciona normalmente, então não precisaria fazer isso...
Mas como isso me incomodava, esta é a parte da solução.
Além disso, como configurei o cache de proxy no Nginx, me perguntei qual era a diferença e pedi ao ChatGPT para explicar. Você pode ver clicando no botão abaixo.

#myText { display: none; } #toggleButton:checked ~ #myText { display: block; }

Mostrar explicação

O cache de proxy do Nginx é integrado ao próprio servidor web (Nginx).
Ele funciona como um proxy reverso, armazenando em cache as requisições para o servidor de aplicação e retornando as respostas.

É usado principalmente para armazenar em cache conteúdo web (HTML, imagens, CSS, JavaScript, etc.).
Acelera a entrega de arquivos estáticos e reduz a carga no servidor.

O cache de proxy do Nginx pode ser facilmente gerenciado e controlado usando o arquivo de configuração do Nginx.
Você pode configurar a expiração do cache, o tamanho, as URLs a serem armazenadas em cache, etc.

O cache de proxy do Nginx opera dentro de um único servidor Nginx, e para escalabilidade e alta disponibilidade, são necessárias técnicas como clustering ou replicação do Nginx.

Ele armazena arquivos de cache temporários no disco, mas não oferece funcionalidade para persistência ou durabilidade de dados a longo prazo.

Redis é uma plataforma de banco de dados e cache independente.
Ele é executado em um servidor separado, e as aplicações se conectam ao Redis para ler e gravar dados em cache.

É uma plataforma de cache de propósito geral e pode armazenar em cache vários tipos de dados.
Os tipos de dados que podem ser armazenados em cache incluem strings, listas, conjuntos, conjuntos ordenados, hashes, etc.

O Redis é controlado e gerenciado diretamente por programas.
Os dados em cache são manipulados usando comandos Redis para definir, obter, excluir, definir expiração, etc.

Problemas

Primeiramente, o Redis não funcionou.
Pacotes finalmente instalados
Redis, Redis-server, Redis-tools, php-fpm

Ao tentar iniciar o Redis

sudo service redis-server start

Erro que apareceu

Erro 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

Solução : O Redis reclama que não consegue acessar o log configurado em redis.conf!
Como ele parece criar o arquivo de log automaticamente mesmo sem especificar 'logfile', eu o deixei como "". Se for realmente necessário, acredito que funcionará normalmente se você configurar o log, as permissões e as permissões de acesso.

Erro 2

# Opening port: bind: Address already in use

Solução : O Redis reclama que a porta já está em uso!
A porta configurada inicialmente em redis.conf é 6379. Por alguma razão, no Devuan (OpenRC), ele não para mesmo com sudo service redis-server stop, e um erro aparece. Então, para verificar o que está usando a porta, digite o seguinte:

root@hoge:~# lsof -i :6379

Se houver um processo Redis rodando em segundo plano, bingo. Verifique o PID e mate-o.

root@hoge:~# kill -9 <PID>

Depois disso, ele deve iniciar normalmente.

Erro 3

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 135
>>> 'slave-serve-stale-data yes'
Bad directive or wrong number of arguments

Solução : Percebi que isso geralmente ocorre devido a uma diferença entre a versão do Redis e a versão da sintaxe em redis.conf.

Escolha a versão correspondente à sua no site do Redis e copie e cole tudo.

Configuração do Redis

Erro 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

Solução : Ele está dizendo que não consegue abrir o arquivo dump.rdb.
Algo semelhante acontece quando arquivos RDB antigos permanecem, fazendo com que o Redis caia após a inicialização. No início, pensei que era um problema de memória, mas não era.
Isso aconteceu depois que o Redis foi iniciado e eu alterei a pasta de destino do cache Dir */~ em redis.conf.
Parece que ele tenta carregar o arquivo mesmo depois de mudar o diretório de cache, então vamos excluí-lo à força. No meu caso, estava em /var/lib/redis/dump.rdb.

sudo rm /var/lib/redis/dump.rdb

Com isso, os problemas do lado do Redis foram resolvidos.

Lado do Nextcloud

root@hoge:~# sudo -u www-data php /var/www/html/nextcloud/occ maintenance:update:htaccess

O que se faz ao atualizar o htaccess.

RedisException: Connection refused in /var/www/html/nextcloud/lib/private/RedisFactory.php:137
~~~~~

Solução : Se muitos erros ocorrerem com nomes de arquivo, é um erro que indica que o Redis não está funcionando corretamente ou que a configuração do Nextcloud está incorreta e não consegue se conectar ao Redis.
Suspeite principalmente do Redis e do php.config do Nextcloud.


Acho que havia outros, mas foi basicamente isso.

Agora, mesmo que eu precise lidar com o Redis no futuro, estarei tranquilo.

Aliás, se eu empilhar caches de memória, a velocidade diminuirá? Estou pensando nisso, mas o que você acha? Se for rápido até certo ponto, a velocidade de resposta do servidor ou dispositivo que está se comunicando nesse meio tempo pode se tornar um gargalo.
Ainda há muito a explorar, então estou ansioso.

Estou exausto.
Até mais.

Related Posts