Пример миграции при самохостинге — с VPS на VPS

Я делюсь своим недавним опытом миграции установки Discourse с собственного хостинга с одного VPS на другой, чтобы сказать «спасибо!» создателям Discourse и сообществу администраторов. Эта миграция сохраняет конфигурации SSL LetsEncrypt и почты.

Исходная установка находилась на экземпляре типа g1-small от Google Cloud Platform (GCP) (1 vCPU, 1,7 ГБ ОЗУ), следуя официальному руководству (INSTALL-cloud.md) и отслеживая ветку tests-passed.

Новая установка размещена на KVM VPS типа «Developer» от Evolution Host (2 ядра CPU, 2 ГБ ОЗУ, 40 ГБ SSD, время восстановления 7 минут 23 секунды, 10 евро/мес). Была установлена минимальная версия Ubuntu Server 18.04.4 с разделом подкачки объемом 1 ГБ (вероятно, на основе шаблона).

Если на вашем хосте было установлено дополнительное программное обеспечение, обязательно удалите ненужные программы, например, веб-серверы, и позаботьтесь о безопасности вашего хоста (имена пользователей по умолчанию, пароли, конфигурации sshd и т. д.).

Ниже приведены команды терминала, выполненные от имени root, с удалением данных, специфичных для установки (замените части, написанные ЗАГЛАВНЫМИ БУКВАМИ, на свои). Пожалуйста, пишите комментарии с любыми исправлениями или вопросами!

Подготовка нового хоста

apt update && apt -y dist-upgrade
apt install -y byobu mosh htop iotop hugepages curl git && byobu-enable

hugeadm --thp-never

fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
echo '/swapfile       swap    swap    auto      0       0' | tee -a /etc/fstab
echo 'vm.swappiness = 10' > /etc/sysctl.d/30-discourse-swap.conf

git clone https://github.com/discourse/discourse_docker.git /var/discourse

reboot

Подготовка старого хоста и резервное копирование файлов Discourse

cd /var/discourse
./launcher rebuild app

./launcher enter app
discourse backup
exit

(запомните имя файла вашей резервной копии Discourse)

cp -v containers/app.yml ~
cd shared/standalone
cp -v settings.yml ~
tar cvf ~/ssl.tar ssl
tar cvf ~/letsencrypt.tar letsencrypt

cd ~
scp -C ssl.tar letsencrypt.tar app.yml settings.yml USERNAME@NEW-HOST-IP:~
scp /var/discourse/shared/standalone/backups/default/YOUR-DISCOURSE-BACKUP.tar.gz USERNAME@NEW-HOST-IP:~
exit

Восстановление Discourse на новом хосте

(переместите файлы, скопированные с помощью scp выше, в домашнюю директорию пользователя root)

echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts

cd /var/discourse
cp -v ~/app.yml containers

mkdir -v shared/standalone
cd shared/standalone
cp -v ~/settings.yml .   
tar xvf ~/ssl.tar
tar xvf ~/letsencrypt.tar

cd /var/discourse
./discourse-setup

(discourse-setup должен завершиться без ошибок, что позволит вам проверить всю соответствующую конфигурационную информацию)

mkdir -v shared/standalone/backups/default
cp -v ~/YOUR-DISCOURSE-BACKUP.tar.gz shared/standalone/backups/default

./launcher enter app
discourse enable_restore
discourse restore YOUR-DISCOURSE-BACKUP.tar.gz
discourse disable_restore

Тестирование с вашего локального компьютера

echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts

Откройте в браузере https://YOUR-DISCOURSE-FQHN/admin/email

В нижней части страницы введите свой адрес электронной почты для проверки отправки писем и просмотрите свой сайт Discourse, чтобы убедиться в его работоспособности.

Когда вы будете уверены, что всё работает правильно, измените DNS A-запись для YOUR-DISCOURSE-FQHN, чтобы она указывала на IP-адрес вашего нового хоста.

6 лайков