Ich versuche, meine Discourse-Instanz auf einen anderen Server zu verschieben.
Ich habe versucht, die Wiederherstellungsoption im Admin-Dashboard auf dem Zielserver zu verwenden, aber sie schlug immer wieder mit diesem Fehler fehl:
[2022-04-23 21:59:00] Remapping uploads...
[2022-04-23 21:59:00] Restoring uploads, this may take a while...
[2022-04-23 21:59:00] EXCEPTION: Aws::S3::Errors::NoSuchBucket
Die exakt gleiche app.yml-Konfiguration wird sowohl für die vorhandene Discourse-Instanz als auch für den neuen Server verwendet, zu dem ich versuche zu wechseln.
Ich konnte dies überhaupt nicht zum Laufen bringen, also beschloss ich, dieser Anleitung zu folgen: Restore a backup from the command line
Ich erhielt den gleichen Fehler, wenn ich die gleiche app.yml-Konfiguration verwendete.
Also beschloss ich, alles S3-bezogene auszukommentieren, und das schien den Trick zu tun:
Reconnecting to the database...
Reloading site settings...
Disabling outgoing emails for non-staff users...
Disabling readonly mode...
Clearing category cache...
Reloading translations...
Remapping uploads...
Remapping '//bucket.nyc3.digitaloceanspaces.com/' to '/uploads/default/'
optimized_images=480
uploads=35
user_histories=13
Remapping 'https://cdnurl.com/' to 'https://forumurl.com/uploads/default/'
post_revisions=2
posts=4
topic_links=4
Remapping 'cdnurl.com' to 'forumurl.com'
topic_links=4
Restoring uploads, this may take a while...
Posts will be rebaked by a background job in sidekiq. You will see missing images until that has completed.
You can expedite the process by manually running "rake posts:rebake_uncooked_posts"
Clearing emoji cache...
Clear theme cache
Executing the after_restore_hook...
Cleaning stuff up...
Dropping functions from the discourse_functions schema...
Removing tmp '/var/www/discourse/tmp/restores/default/2022-04-23-234852' directory...
Unpausing sidekiq...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[SUCCESS]
Restore done.
Nachdem die Wiederherstellung funktioniert hatte, beschloss ich, alles S3-bezogene wieder einzukommentieren und ./launcher rebuild app auszuführen.
Dann versuchte ich, auf meine Discourse-Instanz zuzugreifen, und bemerkte, dass alle Uploads fehlten (Logo, Profilbilder usw.).
Ich habe dann Folgendes ausgeführt:
./launcher enter app
rake posts:rebake (keine Fehler, sagte, es habe über 60 Beiträge neu gebacken)
rake posts:rebake_uncooked_posts (sagte, es habe 0 Beiträge neu gebacken)
Selbst damit funktionieren immer noch keine Uploads und es wird ein 404 zurückgegeben (oder im Fall von Profilbildern wird das Standardprofilbild angezeigt).
Aus dem obigen Protokoll mit der Wiederherstellung scheint es definitiv, dass URLs neu zugeordnet wurden, da es davon ausgeht, dass S3 nicht mehr verwendet wird, aber gibt es eine Möglichkeit, dies nach Abschluss der Wiederherstellung erneut neu zuzuordnen, zurück zu dem, was es sein sollte?
Alternativ gibt es eine Möglichkeit, es mit den S3-Einstellungen in app.yml zum Laufen zu bringen? Ich bin mir nicht sicher, warum es darauf besteht, dass der Bucket nicht existiert.
Zur Referenz sieht die S3-Konfiguration in meiner app.yml wie folgt aus:
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: nyc3
DISCOURSE_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
DISCOURSE_S3_ACCESS_KEY_ID: KEY
DISCOURSE_S3_SECRET_ACCESS_KEY: ACCESS_KEY
DISCOURSE_S3_CDN_URL: https://forumcdn.com
DISCOURSE_S3_BUCKET: upload-bucket
DISCOURSE_S3_BACKUP_BUCKET: backup-bucket
DISCOURSE_BACKUP_LOCATION: s3
Der für Uploads auf der vorhandenen Discourse-Instanz und der neuen Discourse-Instanz verwendete Bucket ist derselbe, daher erwartete ich, dass das Neuerstellen funktionieren und die URLs neu zuordnen würde.
Ich bin mir nicht sicher, wo ich hier falsch abgebogen bin, aber ich hoffe, jemand kann mich in die richtige Richtung weisen.
Danke
