Сегодня я переехал на новый VPS и решил поделиться своим опытом, так как, похоже, многие сталкиваются с блокировкой обновлений из-за устаревшей версии операционной системы ![]()
Я использую 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 ![]()
Я обновил файл HOSTS на своём локальном ПК, чтобы получить доступ к Discourse на новом VPS без предупреждений или проблем в браузере.
На новом VPS я затем выполнил:
./discourse-setup
Это необходимо, чтобы автоматически обновить настройки оперативной памяти и процессора в файле app.yml.
Затем я выполнил пересборку приложения на новом VPS:
./launcher rebuild app
Провёл несколько тестов, всё в порядке.
DNS обновлён — работа завершена.
Спасибо всем за подробную тему ![]()