Configura un fornitore di storage di oggetti compatibile con S3 per gli upload

Cercherò di riassumere le risposte alle mie domande:

  • L’interfaccia utente Web e la variabile ENV entrano in conflitto?

Se si utilizzano le variabili ENV (cosa che si dovrebbe fare), tali impostazioni non saranno più visibili nell’interfaccia utente Web.

  • Quando dovrebbero essere caricati gli asset nel bucket?
    Aggiungendo questo snippet ad app.yml nella sezione hook, verrà caricato dopo after_assets_precompile (durante la ricostruzione dell’app).
after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
  • Come posso eseguire il debug? Non vedo errori nei log.
    Eseguendo:
cd /var/discourse
sudo ./launcher enter app
sudo -E -u discourse bundle exec rake s3:upload_assets --trace
  • È possibile impostare una sottocartella di un bucket nella configurazione?

Devo davvero usare bucket separati per caricamenti e backup?

No, non è necessario, ma di solito è il modo più semplice per configurare. Essenzialmente è necessario utilizzare due bucket diversi o un prefisso per il bucket di backup. Ad esempio, le seguenti combinazioni funzioneranno:

  1. Bucket diversi
  • s3_upload_bucket: tuo-bucket-caricamenti
  • s3_backup_bucket: tuo-bucket-backup
  1. Prefissi diversi
  • s3_upload_bucket: tuo-bucket-caricamenti/caricamenti
  • s3_backup_bucket: tuo-bucket-caricamenti/backup

È possibile utilizzare prefissi per organizzare i dati archiviati nei bucket Amazon S3. Un prefisso è una sequenza di caratteri all’inizio del nome della chiave dell’oggetto. Un prefisso può avere qualsiasi lunghezza, soggetta alla lunghezza massima del nome della chiave dell’oggetto (1.024 byte). È possibile considerare i prefissi come un modo per organizzare i dati in modo simile alle directory. Tuttavia, i prefissi non sono directory. (Organizing objects using prefixes - Amazon Simple Storage Service)

  • Una volta che questo funziona, le immagini precedentemente caricate vengono trasferite nel bucket? Se faccio un rebake, che aspetto avranno gli URL delle immagini precedentemente caricate?

Ho abilitato i caricamenti S3 nella mia istanza Discourse (che è in funzione da un po’); cosa devo fare con i caricamenti locali esistenti?

Per migrare i caricamenti esistenti su S3, puoi eseguire un paio di rake tasks. Per farlo, è necessario avere accesso SSH, permessi di root ed essere entrati nell’app Discourse (come da Operazioni di massa amministrative). Ah, e devi impostare alcune variabili d’ambiente in app.yml. Non per i deboli di cuore.

Una volta fatto tutto ciò, sei pronto per le rake tasks:

rake uploads:migrate_to_s3
rake posts:rebake

Una volta completate queste operazioni (e i caricamenti funzionano bene), non sarà più necessario includere i caricamenti nei backup. E come bonus, sarai in grado di Ripristinare un backup dalla riga di comando in caso di catastrofe (basta conservare una copia di app.yml da qualche parte).

3 Mi Piace