Sto cercando di spostare la mia istanza Discourse su un server diverso.
Ho provato a utilizzare l’opzione di ripristino nella dashboard di amministrazione sul server di destinazione, ma continuava a fallire con questo errore:
[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
La configurazione di app.yml esattamente identica viene utilizzata sia per l’istanza Discourse esistente che per il nuovo server a cui sto cercando di spostarmi.
Non sono riuscito a far funzionare nulla, quindi ho deciso di provare questa guida qui: Restore a backup from the command line
Ho ottenuto lo stesso errore se ho utilizzato la stessa configurazione di app.yml.
Quindi ho deciso di commentare tutte le cose relative a S3, e questo sembra aver risolto il problema:
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.
Dopo che il ripristino ha funzionato, ho deciso di decommentare tutte le cose relative a S3 ed eseguire ./launcher rebuild app.
Poi ho provato ad accedere alla mia istanza Discourse e ho notato che tutti i caricamenti sono mancanti (logo, immagini del profilo, ecc.).
Ho quindi eseguito:
./launcher enter app
rake posts:rebake (nessun errore, ha detto che ha rebaked circa 60 post)
rake posts:rebake_uncooked_posts (ha detto che ha rebaked 0 post)
Anche con questo, tutti i caricamenti non funzionano ancora e restituiscono un 404 (o nel caso delle immagini del profilo, mostrano l’immagine del profilo predefinita).
Dal log sopra con il ripristino, sembra decisamente che gli URL siano stati rimappati poiché pensa che S3 non venga più utilizzato, ma c’è un modo per rimapparlo di nuovo dopo che il ripristino è completo, a quello che dovrebbe essere?
In alternativa, c’è un modo per farlo funzionare con le impostazioni S3 in app.yml? Non sono sicuro del perché insista sul fatto che il bucket non esista.
Per riferimento, ecco come appare la configurazione S3 nel mio app.yml:
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
Il bucket utilizzato per i caricamenti sull’istanza Discourse esistente e sulla nuova istanza Discourse sono gli stessi, quindi mi aspettavo che la ricostruzione funzionasse e rimappasse gli URL.
Non sono sicuro di dove ho sbagliato, ma spero che qualcuno possa indicarmi la giusta direzione.
Grazie
