J’essaie de déplacer mon instance Discourse vers un autre serveur.
J’ai essayé d’utiliser l’option de restauration dans le tableau de bord d’administration sur le serveur de destination, mais cela a continué à échouer avec cette erreur :
[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 configuration exacte de app.yml est utilisée pour l’instance Discourse existante ainsi que pour le nouveau serveur vers lequel j’essaie de migrer.
Je n’ai pas réussi à faire fonctionner cela, j’ai donc décidé d’essayer ce guide ici : Restore a backup from the command line
J’ai obtenu la même erreur si j’utilisais la même configuration app.yml.
J’ai donc décidé de commenter tout ce qui est lié au S3, et cela a semblé faire l’affaire :
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.
Après que la restauration ait fonctionné, j’ai décidé de décommenter tout ce qui était lié au S3 et d’exécuter ./launcher rebuild app.
Ensuite, j’ai essayé d’accéder à mon instance Discourse et j’ai remarqué que toutes les téléversements étaient manquants (logo, photos de profil, etc.).
J’ai ensuite exécuté :
./launcher enter app
rake posts:rebake (aucune erreur, a indiqué qu’il a rebaké environ 60 posts)
rake posts:rebake_uncooked_posts (a indiqué qu’il a rebaké 0 posts)
Même avec cela, tous les téléversements ne fonctionnent toujours pas et renvoient une erreur 404 (ou dans le cas des photos de profil, ils affichent la photo de profil par défaut).
D’après le log ci-dessus avec la restauration, il semble bien que les URL aient été remappées car il pense que le S3 n’est plus utilisé, mais y a-t-il un moyen de le remapper à nouveau après la fin de la restauration, pour qu’il revienne à ce qu’il devrait être ?
Alternativement, y a-t-il un moyen de le faire fonctionner avec les paramètres S3 dans app.yml ? Je ne comprends pas pourquoi il insiste sur le fait que le bucket n’existe pas.
Pour référence, voici à quoi ressemble la configuration S3 dans mon 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
Le bucket utilisé pour les téléversements sur l’instance Discourse existante et la nouvelle instance Discourse sont les mêmes, donc je m’attendais à ce que la reconstruction fonctionne et remappe les URL.
Je ne suis pas sûr de ce que j’ai mal fait, mais j’espère que quelqu’un pourra m’orienter dans la bonne direction.
Merci.
