Aiuto per Conversione SMF2 e Rake su S3

Ho cercato, ma non riesco a trovare una panoramica di base su come spostare i nostri file caricati da DigitalOcean a S3. Ho configurato con successo S3 per i nuovi caricamenti e i nostri backup qualche mese fa. Vorrei completare lo spostamento dei nostri file caricati (~1,4 GB) su S3.

Questa è stata una conversione da SMF2 fin dall’inizio. Ora abbiamo due cartelle di caricamento: una nella root in smf2 e una in /var/discourse. La directory SMF2 è di 2,8 GB. Immagino che ci possano essere due passaggi qui? Devo eseguire passaggi separati per spostare i file dalla directory SMF2 e dalla directory /var/discourse?

Ho trovato “rake to s3”, ma non riesco a trovare una guida diversa da una serie di discussioni su errori incontrati e suggerimenti per correggerli. Esiste una guida?

Leggi questo articolo, dovrebbe guidarti su come configurare l’attività

Dovresti verificare la parte di configurazione per la sezione hooks e impostare il bucket utilizzando le variabili d’ambiente per evitare i problemi di cui hai già letto.

Ottimo! Grazie!

L’unica cosa di cui non so nulla è un CDN. Vedo che possiamo usare Amazon Cloudfront. Immagino che non sia stato configurato durante i passaggi precedenti di configurazione S3. Cercherò una guida su come configurarlo.

Puoi configurare CloudFront utilizzando il tuo bucket di upload come origine e, una volta attivato, puoi impostarlo come link CDN di S3. Non c’è altro da fare.

Grazie. Ho seguito questo video per configurare Cloudfront:

Sto eseguendo ora rake posts:rebake. Ci sono 84k post, quindi ci vorrà un po’ di tempo.

Uh oh… provo a riprovarlo…

root@discourse-app:/var/www/discourse# rake posts:rebake
Rigenerazione del markdown dei post per ‘default’
10027 / 83358 (12,0%)/usr/local/bin/rake: riga 2: 959 Terminato RAILS_ENV=production sudo -H -E -u discourse bundle exec bin/rake “$@”

È successo di nuovo… Hai qualche suggerimento?

root@discourse-app:/var/www/discourse# rake posts:rebake
Rigenerazione del markdown dei post per ‘default’
12901 / 83359 ( 15.5%)/usr/local/bin/rake: riga 2: 2569 Terminato RAILS_ENV=production sudo -H -E -u discourse bundle exec bin/rake “$@”

Alcuni post stanno ora recuperando i contenuti da Cloudfront, quindi almeno in parte funziona.

Sembra che questo stia accadendo senza che io abbia eseguito un rebake? Sidekiq sta lavorando sodo per recuperare le immagini hotlinkate.

Ok, ho ricostruito il sito e ho seguito le procedure di configurazione di S3.

Ora tutto dovrebbe essere caricato da S3. Quindi, come posso verificare? Posso eliminare la vecchia directory degli upload sul mio droplet per liberare spazio?

Ho chiaramente fatto qualcosa di sbagliato. Ora sto usando più spazio su disco di prima.

Il caricamento su S3 dovrebbe avvenire durante la ricostruzione. Dovresti essere in grado di navigare tra le risorse del sito nei bucket S3 e tutte le risorse del sito dovrebbero essere caricate dal link S3 o CDN fornito. Se non funziona, c’è sicuramente qualcosa di sbagliato nella configurazione. Stai ricevendo errori?

Sospetto che allora qualcosa sia andato storto. La mia ricostruzione non è durata abbastanza per permettere il caricamento di alcuni GB di dati durante il processo.

MODIFICA:
Tutti i caricamenti effettuati fino a diversi mesi fa erano già indirizzati a S3. Ciò che voglio spostare sono i dati legacy precedenti alla migrazione a S3.

Tieni presente che i server sono ordini di grandezza più veloci della tua connessione broadband. Non dovrebbero impiegare più di un paio di minuti per caricare le immagini dal tuo host su S3. Tuttavia, dovresti controllare attentamente il registro di ricostruzione per confermare se i caricamenti sono avvenuti o meno.

In alternativa, puoi eseguire ./discourse-doctor per generare un registro da esaminare.

Ecco l’output dello script:

L’unica cosa che noto è evidenziata in grassetto nella sezione DNS.

> root@discourse:/var/discourse# ./discourse-doctor
> DISCOURSE DOCTOR Thu May 14 11:35:17 UTC 2020
> OS: Linux discourse 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
> 
> 
> Found containers/app.yml
> 
> ==================== YML SETTINGS ====================
> DISCOURSE_HOSTNAME=
> SMTP_ADDRESS=
> DEVELOPER_EMAILS=
> SMTP_PASSWORD=
> SMTP_PORT=
> SMTP_USER_NAME=
> LETSENCRYPT_ACCOUNT_EMAIL=
> 
> ==================== DOCKER INFO ====================
> DOCKER VERSION: Docker version 18.09.6, build 481bc77
> 
> DOCKER PROCESSES (docker ps -a)
> 
> CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                      NAMES
> db900fc77ebe        local_discourse/app   "/sbin/boot"        15 hours ago        Up 15 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
> 
> db900fc77ebe        local_discourse/app   "/sbin/boot"        15 hours ago        Up 15 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
> 
> Discourse container app is running
> 
> 
> ==================== PLUGINS ====================
>             exec: {cd: $home/plugins, cmd: ['git clone https://github.com/discourse/docker_manager.git', 'git clone https://github.com/procourse/procourse-static-pages.git', 'git clone https://github.com/discourse/discourse-bbcode.git', 'git clone https://github.com/discourse/discourse-adplugin.git']}
> 
> No non-official plugins detected.
> 
> See https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb for the official list.
> 
> ========================================
> Discourse version at : NOT FOUND
> Discourse version at localhost: Discourse 2.5.0.beta4
**> ==================== DNS PROBLEM ====================**
**> This server reports Discourse 2.5.0.beta4 , but  reports NOT FOUND.**
**> This suggests that you have a DNS problem or that an intermediate proxy is to blame.**
**> If you are using Cloudflare, or a CDN, it may be improperly configured.**
> 
> 
> ==================== MEMORY INFORMATION ====================
> RAM (MB): 1008
> 
>               total        used        free      shared  buff/cache   available
> Mem:            985         636          69         121         279          88
> Swap:          2047         775        1272
> 
> ==================== DISK SPACE CHECK ====================
> ---------- OS Disk Space ----------
> Filesystem      Size  Used Avail Use% Mounted on
> /dev/vda1        25G   20G  4.8G  81% /
> 
> ---------- Container Disk Space ----------
> Filesystem      Size  Used Avail Use% Mounted on
> overlay          25G   20G  4.8G  81% /
> /dev/vda1        25G   20G  4.8G  81% /shared
> /dev/vda1        25G   20G  4.8G  81% /var/log
> 
> ==================== DISK INFORMATION ====================
> Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> Disklabel type: gpt
> Disk identifier: 02CBFCD2-7495-4A08-A11B-28E7D3872FAA
> 
> Device      Start      End  Sectors  Size Type
> /dev/vda1  227328 52428766 52201439 24.9G Linux filesystem
> /dev/vda14   2048    10239     8192    4M BIOS boot
> /dev/vda15  10240   227327   217088  106M Microsoft basic data
> 
> Partition table entries are not in disk order.
> 
> ==================== END DISK INFORMATION ====================
> 
> ==================== MAIL TEST ====================
> For a robust test, get an address from http://www.mail-tester.com/
> Or just send a test message to yourself.
> Email address for mail test? ('n' to skip) []: n
> Mail test skipped.
> Replacing: SMTP_PASSWORD
> Replacing: LETSENCRYPT_ACCOUNT_EMAIL
> Replacing: DEVELOPER_EMAILS
> Replacing: DISCOURSE_DB_PASSWORD
> Replacing: Sending mail to
> 
> ==================== DONE! ====================
> Would you like to serve a publicly available version of this file? (Y/n)n
> root@discourse:/var/discourse#

Ecco la sezione da app.yml:

> 
>     DISCOURSE_USE_S3: true
>     DISCOURSE_S3_REGION: us-east-1
>     DISCOURSE_S3_ACCESS_KEY_ID: <MY KEY>
>     DISCOURSE_S3_SECRET_ACCESS_KEY: <MY SECRET KEY>
>     DISCOURSE_S3_CDN_URL: 'https://d2hneyr8lp58j4.cloudfront.net'
>     DISCOURSE_S3_BUCKET: brcuploads
>     DISCOURSE_S3_BACKUP_BUCKET: bcruploads-backups
>     DISCOURSE_BACKUP_LOCATION: s3

Questo mi sta dicendo che ho configurato male il DNS su DigitalOcean? Ho aggiunto il CNAME da Cloudfront.

Wow, questo non è stato utile. Hai scelto n per

puoi generare una versione pubblicamente disponibile? Puoi condividere il link in DM, potrei essere in grado di verificare se la migrazione a S3 ha funzionato o è fallita per qualche motivo?

Ti invierò l’URL tramite messaggio privato.