Il backup contiene molte directory e sottodirectory. Penso che dobbiate copiare i file presenti nelle directory, da entrambi i bucket in modo ricorsivo, nelle rispettive posizioni sul server locale. Ad esempio, tutto il contenuto delle directory 1X e 2X di entrambi i bucket deve essere copiato nelle directory 1X e 2X sul server locale. Non ne sono certo, ma credo di sì.
Potete confermare di aver copiato correttamente tutti i file?
Sì, ho compreso appieno e ho assicurato che i loro percorsi relativi rimangano esattamente gli stessi.
Ad esempio, se un file esisteva precedentemente in: //bucket1/uploads/original/2x/f/filename.jpg
e l’altro in: //bucket2/uploads/original/1x/a/filename.png
Ora entrambi esistono anche in: /var/discourse/shared/web_only/uploads/default/original/2x/filename.jpg e ../original/1x/a/filename.png
Problemi
Prima di copiare i contenuti del bucket sul server locale, ho notato che alcune delle mie immagini venivano visualizzate solo come icone, e l’immagine completa poteva essere vista dai visitatori del sito solo cliccando sull’icona.
Dopo aver copiato (non spostato) tutti i contenuti del bucket nella posizione sopra indicata del mio server locale (mantenendo i percorsi relativi intatti) ed eseguito il comando discourse remap:oldurl-or-path new-url-or-path,
non è cambiato nulla di visibile sul sito. Ma poi ho eseguito rake posts:rebake,
e persino le icone delle immagini sono scomparse e non appare alcun URL/percorso quando passi il mouse sopra lo spazio vuoto del segnaposto dell’immagine.
Ma come ho già spiegato, dopo aver eseguito le operazioni di ‘remap’ e ‘rebake’, persino le icone delle immagini scompaiono (cioè la situazione peggiora).
Devi fornire il percorso corretto durante la rimappatura, altrimenti potrebbe causare errori. Ho rimappato manualmente un link S3 dall’output di esempio che hai fornito in precedenza e funziona.
Puoi controllare un esempio di post del mio sito qui (il post è in hindi, ma puoi facilmente trovare la piccola icona dell’immagine all’interno del post). L’immagine completa viene visualizzata solo se si fa clic sulla piccola icona.
Tuttavia, se eseguo il rimappaggio e poi la ricottura, anche questa icona scompare completamente. Non rimane alcun modo per il visitatore di vedere l’immagine.
Sembra che tu abbia utilizzato in precedenza CloudFront per la memorizzazione nella cache. Cancella la cache del browser e riprova.
Se hai apportato configurazioni a CloudFront, credo sia meglio annullare tutte quelle impostazioni.
Ora sto ricevendo gli stessi link di CloudFront. Sembra che tu abbia abilitato AWS CloudFront per il tuo sito. CloudFront sta memorizzando nella cache le immagini nel tuo bucket. Penso che tu debba rimuovere la distribuzione da CloudFront. Devi accedere al tuo account AWS per verificare se la distribuzione CloudFront è attiva?
Non ho mai utilizzato CloudFront (o qualsiasi altra CDN) su AWS o nel frontend. Anche se circa due anni fa ho usato CloudFlare per un mese circa, l’ho poi rimosso definitivamente.
Non ho nemmeno scelto CloudFront su AWS. Quindi non sorge alcuna domanda nemmeno in quel caso.
Inoltre, sul mio PC, quando apro le immagini, vengono mostrati gli indirizzi del bucket AWS, non di alcuna altra CDN.
Stai solo suggerendo di rimappare i percorsi delle immagini (dall’URL del bucket S3 al percorso del server locale) e poi di rifare il baking.
Ma come ho già detto, l’ho già fatto e ho scoperto che ciò aggrava il problema. (inoltre, dopo il rebaking, anche la funzione ‘Ripristina’ non funziona ed è difficile tornare indietro).
Proverò di nuovo, con la massima cura possibile.
Ma stavo cercando un metodo per capire cosa succede dietro le quinte. Almeno con un singolo post di esempio, volevo vedere quali post hanno quale bucket mappato e in che guaio mi trovo.
Comunque, proverò di nuovo e farò sapere qui. Grazie ancora.
Il percorso che hai specificato nel tuo precedente remap verrà riflesso nell’output del comando sottostante. Poiché entrambi i bucket sono ancora presenti, penso che il tuo precedente remap possa essere fallito. Comunque, ora la decisione è tua. Spero che tu riesca presto a trovare una soluzione. In bocca al lupo.
./launcher enter app
rails c
Upload.all.sample(2000).pluck(:url)
Non sono più esperto di te, ma l’ho appena fatto io - e ce l’ho fatta con l’aiuto di @Pravi.
Passaggi necessari per tornare dallo stato di caricamento su S3 allo stato vanilla
Non è semplicissimo: fai molta attenzione al testo e ai link, perché se qualcosa va storto sarà un vero disastro da sistemare. Ma è assolutamente fattibile.
Passo 1 - Copia i file dal tuo bucket S3 alla cartella public/uploads/default
Per prima cosa, installa AWS CLI all’interno del contenitore dell’app
cd /var/discourse
./launcher enter app
sudo apt install awscli
Configura aws con il tuo ID e password S3 (di solito è semplice)
aws configure
Poi usa aws per copiare tutto il contenuto del bucket in public/uploads/default/
Il modo più semplice è trovare un’immagine sul tuo forum e ispezionare l’URL. Ti serve ogni parte fino al nome effettivo del file (incluso l’ultimo /):
Disattiva i caricamenti su S3 nelle impostazioni (o nel tuo app.yml se li hai configurati così). Se hai usato una CDN, rimuovi anche il link ad essa dall’impostazione (altrimenti non viene davvero disattivata).
Spegni il tuo contenitore. Io l’ho fatto spostando il contenuto in un nuovo contenitore come backup come primo passo.
Finito! Finora non ho riscontrato problemi. Vai a provarlo!
Ottimo lavoro! Credo che questi siano i passaggi che alla fine mi hanno aiutato a avere successo, ma ho provato molti altri rimappaggi diversi che non hanno funzionato altrettanto bene! È fantastico avere istruzioni formalizzate.