Problema al actualizar Discourse Forum


¡Hola a todos!
Estaba intentando actualizar el foro de Discourse usando el enlace publicado en el panel de administración y me apareció este error. Todo el foro ha desaparecido. ¿Qué debo hacer ahora para restablecer la actualización? Muchas gracias si alguien puede ayudarme. :sob:

1 me gusta

De hecho, significa que tu foro se está actualizando. - a menos que interrumpas la actualización antes de que finalice.

Intenta visitar tu foro https://yoursite.com/latest.json. Si devuelve algo, espera 10 minutos y comprueba si el problema se resuelve solo.

1 me gusta

Gracias por tu respuesta, probé el método que me diste y devuelve 502 Bad Gateway nginx.

Parece que tendrás que ./launcher rebuild app

Intenté ./launcher rebuild app y obtuve los siguientes mensajes de error:

FAILED

--------------------

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development' failed with return #<Process::Status: pid 340 exit 5>

Ubicación del fallo: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params {"cd"=>"$home", "hook"=>"bundle_exec", "cmd"=>["su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development'"]}

6e9e60bd6b6113cdcb001127fd2a24fe86f2a1658bf24500e5e2b720fd793510

** 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.

y me desplacé hacia arriba y encontré algunos registros de errores posibles:

1)200:M 25 Jun 2023 16:00:16.252 # Failed listening on port 6379 (TCP), aborting.

2)[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag

3)Bundler::PathError: The path `/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/sprockets-f4d3dae71ef2` does not exist.

4)Bundler::InstallError: sass-embedded-1.63.6-x86_64-linux requires rubygems version >= 3.3.22, which is incompatible with the current version, 3.2.18

¿Alguien más se encontró con un problema similar recientemente, por si sirve de ayuda?

Muchas gracias por tu respuesta, pero creo que no es el mismo problema, mi servidor está en Alemania. Estoy usando la imagen de Docker de Discourse para mi servidor. ¿Qué debo hacer si ./launcher rebuild app no funciona?

1 me gusta

Parece similar a
La reconstrucción falló debido a la incompatibilidad de gemas de Ruby

1 me gusta

¡Gracias por tu ayuda! Sí, parece similar y probé:

my server:/var/discourse**$ git pull

fatal: Not a git repository: ../.git/modules/discourse_docker

¿Debería hacer algo antes de ejecutar git pull? Lo estaba haciendo en el /var/discourse de mi servidor.

Parece posible que tengas una configuración inusual. ¿Es una instalación estándar?

1 me gusta

Leí los últimos documentos del programador para mí y dice que debido a que muchas cosas de la web se ejecutan detrás de nginx y discourse también necesita ser alojado detrás de nginx. La instalación estándar no funciona para mi situación.

y lo siguiente es cómo lo dijo en el documento y cómo lo hizo:

Discourse se ejecuta en un contenedor docker. Sin embargo, requiere un tipo especial de configuración, no a través de un archivo docker-compose.yml o un archivo .conf.

El repositorio de github discourse-project/ que requiere configurar y construir la imagen de docker se puede encontrar aquí. Ignora el agradable y jugoso programa “discourse-setup” que proporcionan, eso no funcionará aquí. Necesitamos configurar la aplicación nosotros mismos.

  1. clona discourse_docker a /var/discourse: git clone https://github.com/discourse/discourse_docker.git /var/discourse
  2. ve a la carpeta y usa una configuración de muestra proporcionada: cd /var/discourse && cp samples/standalone.yml containers/app.yml
  3. luego edita el archivo containers/app.yml (por ejemplo, con sudo nano)
  • Se realizaron cambios en la sección de alojamiento, la configuración smtp para el correo y, lo que es importante, la sección de exposición para que solo se exponga un puerto no utilizado al exterior.
  • Para ejecutar discourse en una ruta como “/forum”, se necesitaron algunos cambios más, como se describe aquí
  • También ocurren algunos problemas con la autenticación por correo electrónico:
    • El correo que envía correos electrónicos está aquí “correo electrónico del servidor”. Sin embargo, Discourse espera que el correo tenga el mismo dominio que su host, es decir, “correo electrónico del servidor”.
      • Solución descrita aquí
    • También usa “DISCOURSE_SMTP_AUTHENTICATION: login” como otra opción de entorno. Por qué también siempre. . .
  1. Luego construye la aplicación desde el directorio /var/discourse con sudo ./launcher bootstrap app. Esto lleva bastante tiempo.
  2. Luego, es posible que puedas iniciar el contenedor de discourse con sudo ./launcher start app.
1 me gusta

Esas son buenas notas.

El git pull;./launcher rebuild app debería funcionar.

¿Desde qué versión estás actualizando?

¿Está el sistema operativo desactualizado? (cat /etc/issue)

¿Está el disco lleno? (df - h)

1 me gusta

¡Gracias por tu respuesta! La versión de la que estoy actualizando es la 2.8.0.beta6 y la última actualización fue el 28.09.2021.

Después de ejecutar cat /etc/issue obtuve:
Debian GNU/Linux 9 \n \l

Y la siguiente información según ./discourse-doctor

==================== MEMORY INFORMATION ====================
RAM (MB): 4050

              total        used        free      shared  buff/cache   available
Mem:           3955         427        1152          63        2375        3182
Swap:             0           0           0

==================== DISK SPACE CHECK ====================
---------- OS Disk Space ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        63G   27G   34G  45% /

==================== DISK INFORMATION ====================
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc0b6220c

Device     Boot Start       End   Sectors Size Id Type
/dev/sda1        2048 134217727 134215680  64G 83 Linux

Es posible que agregues intercambio.

Además, consulta Actualización de PostgreSQL 13.

¿Recompilaste más de una vez?

Consulta también Debian | endoflife.date

Realmente necesitas mover todo a una nueva máquina virtual con un sistema operativo compatible. Así que también necesitarás actualizar cualquier otra cosa que tengas en funcionamiento.

1 me gusta

Hola Jammy, después de varios intentos fallidos de instalación, descubrí que se debían al límite de memoria del servidor y a la red. Te sugiero que uses un servidor con 4 GB de memoria y acceso normal a GitHub y Ruby.

Este error me molesta, ¿todavía lo ves? El contenedor de Docker ahora debería estar ejecutando 3.2.0.

Pero si tu /var/discourse no es un directorio git, se ha hecho algo diferente a las instrucciones. Impide una actualización y causa la discrepancia de la versión de ruby. Para mí:

/var/discourse# git status
On branch main
Your branch is up to date with 'origin/main'.

También vemos un directorio .git:

# ls -a /var/discourse/
.     .github     README.md  cids              discourse-setup  launcher     scripts    tests
..    .gitignore  bin        containers        image            rebuild.log  shared
.git  LICENSE     c          discourse-doctor  index.html       samples      templates

Editar: pero es cierto, si estás en un sistema operativo demasiado antiguo, tienes trabajo que hacer, para instalar discourse en un sistema operativo nuevo y recuperar tu copia de seguridad, y también para hacer todas las cosas adicionales que puedan ser necesarias para tu situación específica.

Si tu servidor está haciendo más cosas que solo ejecutar discourse, eso es una complicación adicional. Puede que necesites experiencia local.

3 Me gusta

Tengo un fallo comparable con los gemas de ruby, etc.
Fue una instalación nueva en un servidor nuevo.

Gracias chicos por la ayuda, probaré sus sugerencias una por una para solucionar el problema. Si hay alguna opinión (buena o mala), la publicaré de nuevo en el foro. ¡Gracias de nuevo!

1 me gusta

Instalé correctamente la nueva versión de Discourse. Seguí las instrucciones del documento anterior y me funcionó. Pero ahora tengo problemas para restaurar desde la copia de seguridad.
Intenté Restaurar una copia de seguridad desde la línea de comandos pero obtuve lo siguiente:

root@my_server:/var/www/discourse# discourse restore my_server-2023-06-20-033008-v20210922064213.tar.gz
Starting restore: my_server-2023-06-20-033008-v20210922064213.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /var/www/discourse/tmp/restores/default/2023-06-29-113408 exists...
Copying archive to tmp directory...
Unzipping archive, this may take a while...
EXCEPTION: /var/www/discourse/lib/discourse.rb:137:in `exec': Failed to decompress archive.

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
/var/www/discourse/lib/discourse.rb:171:in `execute_command'
/var/www/discourse/lib/discourse.rb:137:in `exec'
/var/www/discourse/lib/discourse.rb:33:in `execute_command'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:78:in `decompress_archive'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:23:in `decompress'
/var/www/discourse/lib/backup_restore/restorer.rb:42:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/base.rb:485:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Trying to rollback...
There was no need to rollback
Cleaning stuff up...
Removing tmp '/var/www/discourse/tmp/restores/default/2023-06-29-113408' directory...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

¿Qué debería hacer ahora?

Hay un problema con tu archivo de copia de seguridad. Podría estar simplemente truncado.

1 me gusta