Sì, ma l’hai sovrascritto nel tuo punto #2, quindi tornando a quella soluzione stai di nuovo caricando i file su S3.
Le impostazioni del file app.yml vengono utilizzate solo durante la ricostruzione del contenitore e servono a popolare il file config/discourse.conf nel contenitore in fase di costruzione.
Ahh! Quindi, se ho delle variabili s3_ nel mio file conf/discourse.conf, Discourse pensa che gli upload su S3 siano abilitati? Ok… ho capito… li rimuoverò e riproverò.
Probabilmente ce n’è solo uno che conta… Non sono al mio computer per verificare cosa possa far scattare quell’azione, ma se quel controllo viene attivato, mi aspetterei che il tuo sito stia caricando tutti i nuovi file su S3.
Funziona, funziona, funziona, funziona e funziona! Evviva!!! Grazie mille per tutto il tuo lavoro e per avermi spiegato con pazienza cosa dovevo fare. È fantastico poter iniziare finalmente.
Quindi, ecco alcune domande veloci per capire meglio cosa sta succedendo…
Sto eseguendo un batch di 100 elementi alla volta. Nei primi cicli, lo strumento stava migrando i post (?), ma ora si limita a copiare le immagini. Ho migliaia e migliaia di post e ognuno di solito contiene solo un’immagine… quindi non capisco perché e come abbia “esaurito” i post da migrare? Cosa significa migrare un post? Questa è la domanda 1: cosa sta succedendo esattamente? ![]()
La domanda 2 è più semplice. Ora, quando lo eseguo, copia solo le immagini, ma noto che le immagini 2X vengono copiate nella directory 3X localmente:
Downloaded 27/100: //my-forum-storage.s3.dualstack.us-east-1.amazonaws.com/original/2X/1/14c56ef9f1dddb7b7a6f14e920234e0f714ea699.jpeg to /uploads/default/original/3X/1/4/14c56ef9f1dddb7b7a6f14e920234e0f714ea699.jpeg
Notate che l’URL cambia da 2X/1/xyz.jpeg a 3X/1/4/xyz.jpeg (c’è un percorso di cartella in più)
È tutto corretto?
Infine, ho controllato a campione le immagini e sembrano a posto, ma dato che non so a quale post sia associata ogni immagine, non posso fare un controllo “dal vivo” sul forum ed essere sicuro al 100% che i miei utenti vedano la cosa giusta. Come posso mappare il nome del file JPEG al post del forum?
Esattamente quali comandi stavi digitando? Dovrai ampliare il limite per coprire tutti i tuoi post.
Alla fine ho specificato un limite elevato una volta che ho avuto la certezza di passare alla fase successiva, qualcosa del genere:
bin/rake uploads:batch_migrate_from_s3[100,100000]
Migra prima gli upload che trova nei post; non c’è integrità referenziale tra i riferimenti in post.raw a un upload e l’oggetto upload nel database. Cerca i post con riferimenti a URL normali o URL con il pseudo-protocollo upload:// che rappresentano contenuti remoti, dove è necessario almeno ricucinare il post dopo la migrazione, se non salvare una modifica come per gli URL di base che puntano direttamente a S3. Quando non trova alcun contenuto in un post che deve essere migrato, passa al successivo.
Le modifiche al percorso non sono guidate direttamente dallo script di migrazione, ma sono semplicemente cambiamenti nella posizione in cui Discourse salva i file. Un livello di directory in più aiuta le prestazioni quando si hanno molti file, e molti altri sistemi utilizzano due e talvolta tre livelli di directory per distribuire i file.
Potresti imbatterti nello stesso problema che ho incontrato io, dove la migrazione degli altri upload ha fatto perdere a Discourse la traccia delle immagini dei profili degli utenti. Non me ne sono accorto fino a quando non era troppo tardi per ripristinare dal backup, quindi ho semplicemente contattato gli utenti interessati, mi sono scusato e ho chiesto loro di correggere i loro avatar. Ancora non so cosa sia andato storto lì.
Ah ok, figo. Vedo questo nell’output di avanzamento:
Tutti gli upload dei post sono stati migrati. Si stanno migrando gli upload del profilo...
Tutti gli upload del profilo sono stati migrati. Si stanno migrando altri upload non relativi ai post...
Cosa sono gli “upload non relativi ai post”? Sembra che tutto il lavoro rimanente sia qui: la migrazione dei post e degli upload del profilo non sembra fare nulla.
Grazie per la rassicurazione riguardo ai percorsi per gli upload raw!
Non sono sicuro se stia accadendo o meno, ma non importa: il mio sito utilizza SSO, quindi passo l’URL dell’avatar ogni volta che l’utente effettua il login (o modifica la sua immagine sul sito principale).
Onestamente, non so cosa fossero gli altri. Speravo che, se l’integrità referenziale fosse un problema, ci fosse un vincolo di chiave esterna, e che altrimenti si limitasse a cercare il caricamento e a utilizzare quello che fosse. Di certo ho incontrato vincoli di chiave esterna come indicatore della necessità di fare qualcosa di speciale per due caricamenti allegati ai profili utente.
Hmm, sembra che stia funzionando… anche se questa mattina ho avuto un problema serio… improvvisamente l’utilizzo del disco è aumentato del 25% e ha riempito l’unità, bloccando completamente i forum.
Al momento, mentre eseguo il rake, sembra che stia scaricando/caricando le immagini proprio durante l’esecuzione in batch. Digito il comando rake, elabora esattamente 300 immagini (le eseguo in lotti da 300) e poi termina.
Quindi la domanda importante è: si potrebbero mettere in coda solo i download da S3 al disco locale? Potrebbe essersi accumulato qualche tipo di batch che poi è stato eseguito alle 5 del mattino e ha fatto cadere i forum? ![]()
Ho fatto in modo di attendere che la coda si svuotasse prima di eseguire ogni nuovo post durante la migrazione dei post, ogni nuovo insieme di caricamenti di profili e poi ogni altro caricamento. Dovrebbe elaborare tutte le tue immagini subito dopo che sono state spostate. (La versione standard si limita ad accumulare tutto e intasa la coda fino al completamento; nel mio caso, ciò avrebbe significato 10-12 giorni senza inviare alcuna notifica del forum mentre elaborava nuovamente le immagini.)
Non mi viene in mente nulla che possa aver causato un picco del genere, a meno che non abbia incontrato un gran numero di caricamenti di file molto grandi?
Sì, è un mistero per me. Insomma, non eseguo nemmeno così spesso i batch: inserisco manualmente il comando ogni volta e osservo l’esecuzione. Non ho più post o profili da migrare; tutto ciò che rimane sono “altri caricamenti”. Quando eseguo il batch, sembra che scarichi da S3 e ricarichi su Digital Ocean in tempo reale. (E non vedo nulla in Sidekiq che suggerisca che qualcosa sia in coda.)
Sto cercando altri log che possano indicare cosa è successo alle 5:35.
Leggi l’intero argomento.
Ma la maggior parte mi è sembrata confusa. Anche se sono perfettamente familiare con i comandi Docker/container e i comandi base di Rails.
Sto riscontrando problemi simili (molti dei miei post hanno immagini mancanti, o alcune non mostrano le immagini finché non si clicca su di esse).
Ho utilizzato 2 diversi bucket S3 in due periodi diversi dell’anno. Ho circa 1000 post e più o meno lo stesso numero di immagini.
Ora ho copiato tutte le immagini dai bucket S3 al mio server locale. Qualcuno può dirmi come rimappare gli URL di Discourse in modo che queste immagini siano ora collegate correttamente ai post?