Migrieren von Discourse von einem DigitalOcean Droplet zu einem anderen ohne Ausfallzeit

Wir ziehen auf einen neuen DigitalOcean-Droplet um und haben versucht, das Marketplace-Image zu verwenden. Beim Ausführen des Setup-Skripts schlägt dies frühzeitig fehl, da unser Domainname noch auf unsere aktuelle Produktionsinstanz zeigt.

Ich muss diese neue Installation zum Laufen bringen, um ihr Backup wiederherzustellen und danach die DNS-Einträge aktualisieren zu können.

Fehlermeldung:

Prüfe deinen Domainnamen . . .
WARNUNG: Port 443 des Computers scheint über den Hostnamen nicht erreichbar zu sein: x
WARNUNG: Die Verbindung zu x (Port 80) schlägt ebenfalls fehl.

Dies deutet darauf hin, dass x auf eine IP-Adresse aufgelöst wird, die nicht mit diesem
Maschine, auf der du Discourse installierst, erreichbar ist.

Das Erste, was zu tun ist, besteht darin, zu bestätigen, dass x auf die IP-Adresse dieses Servers aufgelöst wird.
Dies machst du normalerweise an derselben Stelle, an der du die Domain erworben hast.

Wenn du sicher bist, dass die IP-Adresse korrekt aufgelöst wird, könnte es sich um ein Firewall-Problem handeln.
Eine Websuche nach „Ports öffnen DEIN CLOUD-DIENST

Hey Matt,

wir (das Discourse-Team) verwalten das DO-Marktplatz-Image nicht, daher befürchte ich, dass wir bei der Lösung dieses spezifischen Problems nur begrenzt helfen können.

Aber das verwalten Sie doch, oder?

Selbst die Anweisungen für die manuelle Installation enthalten diesen Schritt.

Ich kann doch nicht der Erste sein, der das versucht. Wie machen das die anderen?

Ja, das übernehmen wir. Ich habe mir den Code nicht angesehen; ich ging davon aus, dass die Prüfung von der Marketplace-Image kommt.

./discourse-setup dient als einfache Möglichkeit, Discourse einzurichten, um das manuelle Bearbeiten einer Textdatei beim Starten einer neuen Discourse-Site zu vermeiden. Ihr Anwendungsfall ist kein „typischer

1 „Gefällt mir“

Wo finde ich die Standard-Datei app.yml? Ich möchte mit einer frischen Standardinstallation beginnen.

Außerdem: Wie bringe ich den Server ohne das Setup-Skript zum Laufen? Der Zugriff auf die IP-Adresse reagiert weiterhin nicht, da ich das Setup-Skript nicht ausführen kann.

Standardmäßig zu finden unter samples/standalone.yml. Auch auf GitHub.

Wenn du dich an den offiziellen Installationsleitfaden hältst, solltest du nach den Befehlen unter „Discourse installieren“ Folgendes tun:

Kopiere die Standard-YAML-Datei aus samples nach containers:

cp samples/standalone.yml containers/app.yml

Bearbeite die Datei manuell:

nano containers/app.yml

Starte den Bootstrap-Prozess und starte Discourse:

./launcher rebuild app

Danke, das bringt mich schon einmal näher.

Aber jetzt kann ich das Backup nicht importieren, weil ich mein temporäres Admin-Konto nicht aktivieren kann:

(6) Das Laden des Skripts ‘’ wurde verweigert, da es gegen die folgende Content-Security-Policy-Richtlinie verstößt: “script-src ”. Beachten Sie, dass ‘script-src-elem’ nicht explizit festgelegt wurde, daher wird ‘script-src’ als Fallback verwendet.

Gibt es eine direkte Möglichkeit, aus einem Backup wiederherzustellen oder die CSP bis dahin zu deaktivieren?

Verbinde dich per SSH mit deinem Server und führe dann Folgendes aus:

cd /var/discourse
sudo ./launcher enter app
rails c
SiteSetting.content_security_policy = false
exit
exit

Beachte, dass ich zuerst den Wiederherstellungsversuch aus dem Backup über die Kommandozeile versuchen würde – das löst dein eigentliches Problem (Wiederherstellung eines Backups) im Gegensatz zum aktuellen Hindernis (CSP).

1 „Gefällt mir“

Danke für die Hinweise.

Beim Ausführen der Wiederherstellung erhalte ich:

ERROR:  could not create unique index "index_incoming_referers_on_path_and_incoming_domain_id"
DETAIL:  Key (path, incoming_domain_id)=(/s/free+proxy+hideip.me, 1009) is duplicated.
EXCEPTION: psql failed: DETAIL:  Key (path, incoming_domain_id)=(/s/free+proxy+hideip.me, 1009) is duplicated.
/var/www/discourse/lib/backup_restore/database_restorer.rb:87:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:51:in `run'
script/discourse:143:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.0.1/lib/thor/base.rb:485:in `start'
script/discourse:284:in `<top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/cli.rb:497:in `exec'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/exe/bundle:49:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/lib/bundler/friendly_errors.rb:130:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.3/exe/bundle:37:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Trying to rollback...
Rolling back...
Cleaning stuff up...
Dropping functions from the discourse_functions schema...
Removing tmp '/var/www/discourse/tmp/restores/default/2020-12-29-214249' directory...
Unpausing sidekiq...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

Es sieht so aus, als hättest du einen beschädigten Index. Hast du ein Upgrade auf der vorhandenen Instanz durchgeführt? Das könnte eventuell helfen.

Es gibt irgendwo einen Beitrag mit Anweisungen zum Kopieren der Rohdatenbank- (und Let’s Encrypt-) Dateien von der alten Instanz. Das wäre wahrscheinlich das, was ich tun würde.

1 „Gefällt mir“

Was ist „rub run

Hast du einen Link dazu?

Backups über rsync und cron übertragenvielleicht

1 „Gefällt mir“