Move Discourse to a new server without setting up the web UI first?

Let’s say I want to move my Discourse site from one Amazon EC2 instance (e.g. t2.micro) to a larger instance (e.g. t2.medium), what is the correct procedure for this?

The only option I know about is:

  1. Backup the existing site
  2. Install Discourse on the new server
  3. Configure Discourse using temporary values
  4. Restore the backup

However, I’m thinking that the smart people at Discourse thought about this situation and there’s a way to restore a backup on a new installation without step 3.

Scouring the site, I wasn’t able to find a definitive answer.

I did look at Move your Discourse Instance to a Different Server, but the instructions seem to imply that a generic installation is already active on the target server and that you can log in and immediately perform a restore.

I think what you want to know is that you can copy the backup to the new instance and then restore from the command line like

cd /var/discourse
./launcher enter app
discourse enable_restore
discourse restore

The last command will give you a list of available backups and you can copy-and-paste to start the restore.

@pfaffman thank you for helping with this question, there’s one spot where I’m still a bit unclear.

On the new server (assuming the prerequisites are already installed), after cloning the Discourse repository, do I still need to run discourse-setup? I don’t believe it’s possible to issue the commands

until after setup completes. Or am I incorrect? If I am correct, this is the part I’m referring to, you have to essentially provide a set of default values before you are able to perform a restore.

Yes, you still need to set up Discourse, but you can just use the same app.yml that you use on the old instance (or type them in to discourse-setup if that’s easier for you). But you have to have all of those values for a running Discourse anyway, so it’s not “temporary” values, but the values.

The command-line restore saves the you time of creating a temporary admin account that you’d use just to restore the backup.

Когда я использую командную строку, процесс восстановления проходит нормально, но в конце появляется следующая ошибка:
Произошла ошибка при уведомлении пользователя.

Не могли бы вы подсказать, что мне делать?

Также возможно ли настроить новый сервер, просто скопировав /var/discourse/ со старого сервера на новый, вместо восстановления из резервной копии?

Похоже на ошибку.

Да, вы можете это сделать.

Извините, что возвращаюсь к старой / уже решённой теме, но я подумал, что это уточнение лучше разместить здесь, а не создавать новую тему.

Если я хочу перенести работающую автономную установку Discourse со старого сервера на новый, при условии, что на новом сервере установлен и работает Docker, может ли это быть так просто:

старый сервер:

cd /var/discourse
./launcher stop app

новый сервер:

rsync old-server:/var/discourse /var
cd /var/discourse
./launcher rebuild app

Затем изменить DNS, чтобы доменное имя форума указывало на новый сервер.

???

Вам нужно изменить это перед пересборкой. И если вы собираетесь изменить имя хоста, проще сделать резервную копию и восстановить её. В противном случае вам нужно следовать инструкции Как изменить доменное имя или переименовать мой Discourse?.

Вы можете переместить резервную копию с помощью scp и восстановить её из командной строки.

Привет, спасибо. Имя хоста/домена не изменится. Я просто перехожу на новый, более мощный сервер. Сработает ли в этом случае такая простая стратегия?

Редактирование: Я редактирую свой первоначальный пост выше, чтобы прояснить, что имя хоста для форума не изменится — просто новый сервер. Извините за путаницу.

Понятно. Возможно, стоит создать раздел howto.

Да, вы можете использовать rsync для копирования /var/discourse на новый сервер (это перенесёт и SSL-сертификаты), затем выполнить rebuild, переключить DNS, и всё должно заработать.

Если вы меняете характеристики сервера, вам стоит запустить discourse-setup — это утилита, которая автоматически настраивает app.yml и оптимизирует параметры масштабирования (количество воркеров Unicorn и общие буферы базы данных). Простое копирование папок не обеспечит такой настройки.

Спасибо, Стивен,

Я планирую вручную настроить эти параметры в app.yml. Я буду запускать Discourse параллельно с несколькими другими приложениями на основе Docker на том же сервере (как и сейчас), поэтому я настроил их на чуть более низкий уровень использования ресурсов, чем то, что установка предложила бы исходя из характеристик сервера, если бы Discourse был единственным запущенным приложением.