Move a Discourse site to another VPS with rsync

Сегодня я переехал на новый VPS и решил поделиться своим опытом, так как, похоже, многие сталкиваются с блокировкой обновлений из-за устаревшей версии операционной системы :blush:

Я использую Digital Ocean, поэтому создал новый droplet.

Старый VPS = Ubuntu Server 18.04.6 LTS

Новый VPS = Ubuntu Server 23.10

Я выполнил стандартные процедуры обслуживания на новом VPS — пожалуйста, адаптируйте их под себя:

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

Затем я создал новую пустую директорию для Discourse:

sudo mkdir -p /var/discourse

После этого установил Docker:

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

Затем я изменил TTL в DNS с 30 минут до 10 минут (минимум, разрешённый GoDaddy).

На старом сервере я загрузил локальную копию резервной копии базы данных Discourse за прошлую ночь (локальных резервных копий никогда не бывает слишком много). Также я скачал копию app.yml на свой локальный ПК.

Как рекомендовали несколько человек выше, я выполнил rsync «root-to-root». Я использовал IP-адрес вместо имени хоста, чтобы избежать путаницы с DNS. Также, как было предложено выше, я использовал флаги -avz:

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

Для справки: размер моей папки discourse составляет 25 ГБ.

Синхронизация через rsync со старого сервера на новый заняла около 25 минут. Это было выполнено между двумя droplets Digital Ocean в одном регионе LON1. Ваш опыт может отличаться.

После rsync и попытки пересборки я столкнулся с той же ошибкой, что и @piratdavid, связанной с postgres: database system is shut down.

Поэтому я остановил приложение на старом VPS:

./launcher stop app

И выполнил ещё одну синхронизацию через rsync, но только для изменений:

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

Затем я снова запустил старое приложение Discourse и очень быстро перевёл его в режим обслуживания — это позволит пользователям получить к нему доступ и увидеть стандартное предупреждение о техническом обслуживании.

Это также даёт мне немного времени для работы на новом VPS :blush:

Я обновил файл HOSTS на своём локальном ПК, чтобы получить доступ к Discourse на новом VPS без предупреждений или проблем в браузере.

На новом VPS я затем выполнил:

./discourse-setup

Это необходимо, чтобы автоматически обновить настройки оперативной памяти и процессора в файле app.yml.

Затем я выполнил пересборку приложения на новом VPS:

./launcher rebuild app

Провёл несколько тестов, всё в порядке.

DNS обновлён — работа завершена.

Спасибо всем за подробную тему :smiley:

4 лайка