Я делюсь своим недавним опытом миграции установки 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-адрес вашего нового хоста.