La actualización falla (de nuevo :) )

Cambiando de proveedor de dominio y también de dominio del foro, así que mejor actualizar primero… mala idea, olvidé que el 50% de mis actualizaciones de Discourse fallan :frowning: .

Quizás un problema con “gem ‘mini_racer’” y encontré algunos comentarios sobre distribuciones/gcc demasiado antiguas, pero con 9 días antes de que expire el dominio, simplemente decidí restaurar la copia de seguridad, a través de la consola ya que el sitio ahora está caído (y acabo de publicar el mensaje de que la URL del foro cambiará, así que la gente podría intentarlo ahora mismo, ¡uy!).

Lo que también falla. ¡Uy de nuevo, aparentemente el sitio estará caído un poco más!

Registros adjuntos, bastante perdido (como siempre), tengo que hacer algunos recados, así que solo cruzo los dedos para una solución simple.

discourse_upgrade_fails.txt (40.7 KB)

Si tiene problemas con mini-racer, es probable que su instalación de Ubuntu sea demasiado antigua.

Consulte este problema similar en Dev:

¡Claro que sí, estamos hablando de 16.04.3 LTS.

Por ahora, solo quiero volver a la versión anterior.

Luego, con tiempo suficiente, comprobaré si es posible actualizar “fácilmente” o si finalmente, después de 10 años, haré una nueva instalación de Ubuntu desde cero y moveré las cosas allí. Pero recordando qué MÁS he hecho a lo largo de los años… oh, oh.

Vaya, solo muévete a un nuevo servidor.

4 Me gusta

Si te mueves a un nuevo servidor usando backup/restore, y mantienes los cambios en app.yml entonces todo debería moverse contigo.

3 Me gusta

Sí, pero configurar un nuevo servidor y considerar si mover también el control de origen y todo lo que he instalado a lo largo de los años para tenerlo en una instancia en la nube 24/7… Algo que prefiero hacer al menos un día. Lo cual no tengo ahora.

Ok, por ahora solo estoy restaurando la instancia de anoche y cargando la copia de seguridad en ella. Espero que al menos eso salga bien.

En serio, si una actualización falla, debería haber un mecanismo de seguridad automático para volver al estado anterior. Hacer una copia de seguridad de tu instancia parece excesivo y depende del administrador. Ser paranoico y tener dos instancias y empezar siempre moviendo la activa a la más antigua y actualizando esa… bueno, probablemente es lo que debería hacer hoy en día.

1 me gusta

Con la instalación estándar, puedes intentar simplemente reiniciar el contenedor.

2 Me gusta

Cuando tu sistema operativo tiene 4 años después del fin de su vida útil, no puedes esperar que ninguna actualización funcione.

Pasa a una nueva máquina virtual. Es poco probable que haya algo en el servidor antiguo que necesites. No sé a qué control de versiones te refieres.

1 me gusta

Sí, una mirada al espejo es necesaria :smiley: .

  • Pero me tomó 2 años actualizar todas las instancias domésticas a WIN11 (=siempre falta de tiempo).
  • Finlandia cambiará a TV solo HD a finales de este mes (alguien, de hecho, no ve todo en Netflix = sí) y he estado trabajando en eso durante meses.
  • Todavía tengo un servidor web W7/IIS7 sin actualizar :slight_smile:
  • Y, discourse está al final de esta lista… quizás en verano.
  • Hay cosas que se deben hacer y cosas que se pueden hacer. La realidad es dura.

Hubo algunos problemas para restaurar la copia de seguridad del droplet, pero logré que todo volviera a funcionar. Uf.

Disculpa las molestias.

2 Me gusta

Así que quédate con la versión antigua hasta que estés listo para actualizar.

De hecho, es casi más fácil mudarse a una nueva VM que hacer la actualización de PostgreSQL 15.

O simplemente no actualices nada y espera otros años. :wink:

2 Me gusta

Bueno, tuve que actualizar app.yml debido al cambio de dominio y en lugar de reiniciar, reconstruí la aplicación por error sin haber tomado una instantánea en Digital Ocean primero. Así que me vi obligado a actualizar en este momento :(.

Lo cual finalmente funcionó. Dado que encontré algunos obstáculos (se permiten risas), publicaré mi camino de (mala) fortuna aquí. Quizás alguien se encuentre con el mensaje de error exacto y obtenga ayuda de esto.

Tiempo empleado 3,5 h (supongo que debería haber sido perezoso y simplemente haber usado la configuración de 1 clic de Digital Ocean, pero tenía curiosidad por ver si la actualización funcionaría).

*****Actualización Ubuntu 16.x → Ubuntu 18.x
*****Actualización Ubuntu 18.x → Ubuntu 20.x (sorprendido de lo bien que funcionó esto, mucho mejor que Windows :smiley: )

*Bienvenido a Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-208-generic x86_64)*

*root@Discourse:~# cd /var/discourse/*
*root@Discourse:/var/discourse# ./launcher restart app*
*ERROR: Docker version 19.03.13 no es compatible, actualiza a al menos 20.10.0, o recomendado 24.0.7*
*root@Discourse:/var/discourse# sudo apt-get install docker-ce --only-upgrade*
*Leyendo la lista de paquetes... Hecho*
*Creando árbol de dependencias*
*Leyendo la información de estado... Hecho*
*docker-ce ya es la versión más reciente (5:19.03.13~3-0~ubuntu-xenial).*

******(/(\u0026(%%(\u0026/()(=)/\u0026/))\u0026/*
******No quería desechar docker y reinstalarlo, pero ahora he tenido suficiente...*

*root@Discourse:/var/discourse# sudo apt remove docker docker-engine docker.io containerd runc*
*root@Discourse:/var/discourse# sudo apt install apt-transport-https ca-certificates curl software-properties-common*
*root@Discourse:/var/discourse# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -*
*root@Discourse:/var/discourse# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"*
*root@Discourse:/var/discourse# sudo apt update*

******Iba a ejecutar esto también, pero no pude encontrarlo en mis registros, así que tal vez no lo hice (el comando no se muestra, pero la instalación sí, ¿eh?):*
******sudo apt install docker-ce docker-ce-cli containerd.io*

*root@Discourse:/var/discourse# sudo docker --version*
*Docker version 28.0.1, build 068a01e*
*root@Discourse:/var/discourse# ./launcher rebuild app*

******Tomó algunos intentos, pero finalmente se vio mejor después de algunas reconstrucciones.*
******...finalmente llegué a redis, ¡hurra!... o no*
*docker: Error de respuesta del demonio: no se pudo configurar la red del contenedor: el controlador falló al programar la conectividad externa en el endpoint app (ea1a6cc790c13940435c2626a4e8b6169f04612f4be552be25564def7d5745eb): no se pudo enlazar el puerto del host para 0.0.0.0:80:172.17.0.2:80/tcp: dirección ya en uso*

******(/(\u0026(%%(\u0026/()(=)/\u0026/))\u0026/ (¿o ya lo dije?)*

*root@Discourse:/var/discourse# hostname -I*
*139.X.X.X 10.19.0.5 172.17.0.1*
*root@Discourse:/var/discourse# sudo lsof -i :80*
*COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME*
*apache2 839 root 4u IPv6 23477 0t0 TCP *:http (LISTEN)*
*apache2 844 www-data 4u IPv6 23477 0t0 TCP *:http (LISTEN)*
*apache2 845 www-data 4u IPv6 23477 0t0 TCP *:http (LISTEN)*

******¿Apache activado por defecto? ¿Desde cuándo? ¡Claro que no!*

*root@Discourse:/var/discourse# sudo systemctl stop apache2*
*root@Discourse:/var/discourse# sudo systemctl disable apache2*
*Sincronizando el estado de apache2.service con el script del servicio SysV con /lib/systemd/systemd-sysv-install.*
*Ejecutando: /lib/systemd/systemd-sysv-install disable apache2*
*Eliminado /etc/systemd/system/multi-user.target.wants/apache2.service.*
*root@Discourse:/var/discourse# ./launcher start app*

******¡Listo, por fin! (Después del habitual y lento mensaje de error de nginx)*

******Después de arrancar, por supuesto, obtengo... lo que estaba esperando... bueno, una vez que todo funcione durante una semana, tal vez continúe sufriendo... después de tomar una instantánea y una copia de seguridad y... ;) *
*Nueva versión '22.04.5 LTS' disponible.*
*Ejecuta 'do-release-upgrade' para actualizarla.*
1 me gusta

No lo seas. Esa no es la forma de instalación admitida.

Habría creado un nuevo droplet y habría hecho una instalación limpia y copiado la copia de seguridad o Mover un sitio de Discourse a otro VPS con rsync. También hago una versión híbrida donde copio los certificados SSL con rsync, pero luego restauro una copia de seguridad. Esto ahorra el paso de actualizar la base de datos.