Error al configurar con Redis separado

Hay un servidor de base de datos medio perezoso ejecutando PostgreSQL en la red local y quería usarlo también para Discourse. La razón de esto es que el servidor web está mucho más estresado que el servidor de base de datos mencionado anteriormente, que todavía tiene muchos recursos/potencial sin usar. Redirigir PostgreSQL de Discourse fue bastante fácil, siguiendo algunos hilos en este foro (ejemplo). Sin embargo, cada vez que intento hacer lo mismo para Redis:

  • comentar - "templates/redis.template.yml"
  • establecer DISCOURSE_REDIS_HOST en su lugar

Siempre obtengo:

Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' falló con retorno #<Process::Status: pid 582 exit 1>
Ubicación del fallo: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec falló con los parámetros {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
el arranque falló con el código de salida 1

cada vez que intento reconstruir con launcher rebuild app

¿Es este un problema conocido? ¿Alguien ha logrado ejecutar Discourse con Redis no contenedorizado?

Eso es todo lo que necesitas, en efecto. ¿Puedes pegar el error completo de la reconstrucción? Probablemente necesites una contraseña, TLS obligatorio o un dominio inalcanzable. Cuál de ellos debería estar claro en el registro de reconstrucción.

1 me gusta

Eso es básicamente todo. Hay algunas advertencias más arriba en el registro:

warning " > @mixer/parallel-prettier@2.0.3" has unmet peer dependency "prettier@^2.0.0".
warning "eslint-config-discourse > eslint-plugin-lodash@7.10.0" has unmet peer dependency "lodash@>=4".
warning " > babel-plugin-debug-macros@0.4.0-pre1" has unmet peer dependency "@babel/core@^7.0.0".
warning "workspace-aggregator-3fff36d0-9fd8-4d1a-ac4c-d10694a59627 > discourse > @uppy/aws-s3@3.0.6" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-3fff36d0-9fd8-4d1a-ac4c-d10694a59627 > discourse > @uppy/aws-s3-multipart@3.1.3" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-3fff36d0-9fd8-4d1a-ac4c-d10694a59627 > discourse > @uppy/xhr-upload@3.1.1" has incorrect peer dependency "@uppy/core@^3.1.2".

pero están ahí incluso al reconstruir con Redis contenerizado.

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 581 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
2533af220cc44d8c77bc12c17ed7635dee49ba7f280[...]

ACTUALIZACIÓN:

Encontré líneas marcadas como INFO en lugar de error y esto podría ser la razón, supongo:

I, [2023-04-06T18:44:02.460059 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2023-04-06T18:44:04.581741 #1]  INFO -- : docker_manager is already at latest compatible version

I, [2023-04-06T18:44:04.581929 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
Discourse requires Redis 6.2.0 or up
I, [2023-04-06T18:44:05.937604 #1]  INFO -- :

Y el bastante reciente Ubuntu 22.04.2 LTS proporciona:

Package: redis-server
Architecture: amd64
Version: 5:6.0.16-1ubuntu1

Argh… no hay posibilidades de usar esta versión, ¿verdad?

Creo que Discourse utiliza algunos comandos de Redis que solo se introdujeron con la versión 6.2.

También puedes instalarlo utilizando el repositorio APT oficial de Redis:

https://redis.io/docs/getting-started/installation/install-redis-on-linux/

3 Me gusta

Sí, eso es exactamente lo que estoy haciendo, gracias. Solo desearía que ese mensaje se hubiera marcado como ERROR en lugar de INFO (entre muchos otros INFO), y se hubiera detenido de inmediato. Perdí mucho tiempo depurando todo tipo de cosas y sin notar esta línea.

Redis no consume muchos recursos y no puedes compartirlo con varios servidores. Yo usaría el de Discourse que ya estaba funcionando.