Mover un sitio de Discourse a otro VPS con rsync

Hoy migré a un nuevo VPS y pensé en compartir mis experiencias, ya que parece que últimamente bastantes personas se encuentran con el bloqueo del sistema operativo de versión antigua en sus actualizaciones :blush:

Estoy en Digital Ocean, así que creé un nuevo droplet.

VPS antiguo = Ubuntu Server 18.04.6 LTS

Nuevo VPS = Ubuntu Server 23.10

Hice el mantenimiento habitual en el nuevo VPS; edita según tus necesidades:

Apt-get update

Apt-get upgrade

Apt-get install fail2ban

ufw default deny incoming

ufw default allow outgoing

ufw allow ssh

ufw allow http

ufw allow https

ufw enable

Luego creé un nuevo directorio vacío para Discourse:

sudo mkdir -p /var/discourse

Entonces instalé Docker:

wget -qO- https://get.docker.com/ | sh

Luego cambié el TTL de mi DNS de 30 minutos a 10 minutos (el mínimo que permite GoDaddy).

En mi servidor antiguo, descargué una copia local de la copia de seguridad de la base de datos de Discourse de anoche (nunca se tienen suficientes copias de seguridad locales). También descargué una copia de app.yml a mi PC local.

Como sugirieron algunas personas anteriormente, hice un rsync de “root a root”. Usé la dirección IP en lugar del nombre de host, para evitar confusiones de DNS. También, como se sugirió anteriormente, usé los modificadores -avz:

rsync -avz root@old.ip.address.here:/var/discourse /var

Como referencia, mi carpeta de Discourse tiene 25 GB.

Tardó ~25 minutos en sincronizarse con rsync desde el servidor antiguo al nuevo. Esto fue simplemente entre dos droplets de Digital Ocean en la misma región LON1. Tus experiencias pueden variar.

Después de sincronizar con rsync e intentar una reconstrucción, me encontré con el mismo error que @piratdavid encontró sobre postgres database system is shut down.

Así que luego detuve la aplicación en el VPS antiguo:

./launcher stop app

E hice otro rsync, solo para los cambios esta vez:

rsync -avz --delete root@old.ip.address.here:/var/discourse /var

Luego volví a iniciar la aplicación de Discourse antigua y muy rápidamente la puse en Modo de Mantenimiento; esto es para que la gente todavía pueda acceder a ella y vea el mensaje de advertencia de mantenimiento habitual.

Esto también me da tiempo para trabajar en el nuevo VPS :blush:

Actualicé mi archivo HOSTS en mi PC local para poder acceder a Discourse en el nuevo VPS sin advertencias/problemas del navegador.

En el nuevo VPS, ejecuté:

./discourse-setup

Esto fue para que pudiera actualizar la configuración de RAM y CPU en el archivo app.yml automáticamente.

Luego hice una reconstrucción de la aplicación en el nuevo VPS:

./launcher rebuild app

Hice algunas pruebas de humo, todo bien.

DNS actualizado - trabajo hecho.

Gracias por el tema detallado, a todos :smiley:

4 Me gusta