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:
Backup the existing site
Install Discourse on the new server
Configure Discourse using temporary values
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.
@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.
when I use the command line, everything goes well during the restore but at the end I get the following error: Something went wrong while notifying user.
do you have any idea what I should do?
also is it possible to set up the new server by simply copying /var/discourse/ of the old server into the new one, rather than restoring a backup?
Entschuldigen Sie, dass ich ein altes / gelöstes Thema wieder aufgreife, aber ich dachte, diese Klarstellung sollte hier statt in einem neuen Thema stehen.
Wenn ich eine funktionierende Standalone-Discourse-Installation von einem alten Server auf einen neuen Server verschieben möchte und davon ausgehe, dass Docker auf dem neuen Server installiert und funktionsfähig ist, könnte es so einfach sein wie:
alter-server:
cd /var/discourse
./launcher stop app
neuer-server:
rsync alter-server:/var/discourse /var
cd /var/discourse
./launcher rebuild app
Ändern Sie dann die DNS, um den Domainnamen des Forums auf den neuen Server zu verweisen.
Sie müssen die ändern, bevor Sie neu erstellen. Und wenn Sie den Hostnamen ändern möchten, ist es einfacher, ein Backup zu erstellen und wiederherzustellen. Andernfalls müssen Sie Change the domain name or rename my Discourse? befolgen.
Sie können das Backup mit scp verschieben und von der Befehlszeile wiederherstellen.
Hallo, danke. Es wird keine Änderung am Host-/Domänennamen geben. Ich ziehe einfach auf einen neuen, größeren Server um. Wird diese einfache Strategie in diesem Fall funktionieren?
Bearbeitung: Ich bearbeite meinen obigen Originalbeitrag, um klarzustellen, dass sich der Hostname für das Forum nicht ändern wird – nur ein neuer Server. Entschuldigung für die Verwirrung.
Ich verstehe. Vielleicht sollte es eine howto geben.
Ja, Sie können /var/discourse per rsync auf den neuen Server kopieren (und das beinhaltet die SSL-Zertifikate), einen Rebuild durchführen und dann die DNS-Einträge ändern, und es sollte einfach funktionieren.
Wenn Sie Server-Spezifikationen ändern, profitieren Sie von der Ausführung von discourse-setup – es behandelt bestimmte Aspekte der Skalierung (Unicorn-Worker und DB-Shared-Buffer) und konfiguriert die app.yml automatisch. Das bloße Kopieren von Ordnern erreicht dies nicht.
Ich beabsichtige, diese Parameter in app.yml manuell anzupassen. Ich werde Discourse parallel zu einigen anderen Docker-basierten Anwendungen auf demselben Server ausführen (wie ich es jetzt tue), und daher habe ich sie auf ein etwas geringeres Ressourcenverbrauchsniveau abgestimmt als dort, wo die Einrichtung sie basierend auf den Server-Spezifikationen platzieren würde, wenn Discourse die einzige laufende Anwendung wäre.