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

Puoi dare un’occhiata alla console javascript. La mia ipotesi è che il CDN sia sbagliato o che tu non abbia gestito correttamente la parte di precompilazione degli asset.

https://community.itechguides.com/ funziona ora:

Se non funziona per te, prova un ricaricamento forzato e/o una finestra in incognito.

2 Mi Piace

Il sito si è aperto per te perché, nel momento in cui l’hai aperto, avevo commentato le seguenti righe dal file app.yml:

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: nyc3
DISCOURSE_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
DISCOURSE_S3_ACCESS_KEY_ID: accesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: secretkey
DISCOURSE_S3_CDN_URL: https://community-cdn.itechguides.com
DISCOURSE_S3_BUCKET: itg-community-files
DISCOURSE_S3_BACKUP_BUCKET: itg-community-files/backups
DISCOURSE_BACKUP_LOCATION: s3

Ho appena riattivato le righe e ricostruito il container. Ora, il sito mostra di nuovo una pagina bianca!

Lo screenshot qui sotto mostra dove ho inserito i codici nel mio app.yml. Come puoi vedere, ho inserito i codici di configurazione S3 sotto DISCOURSE_NOTIFICATION_EMAIL


a

1 Mi Piace

Cosa succede se si commenta DISCOURSE_CDN_URL?

1 Mi Piace

Non l’ho fatto. Ma ho fatto il troubleshooting e credo fermamente di non aver configurato correttamente l’S3 CDN. Sto usando StackPath e non sono sicuro di cosa usare nell’indirizzo di origine e nell’intestazione host

1 Mi Piace

Un’altra cosa di cui non sono sicuro è come impostare la funzionalità di elencazione dei file del mio bucket Space di DigitalOcean. Ora, sto usando Restrict Listing. Questo influisce su qualcosa?

1 Mi Piace

Ho commentato DISCOURSE_S3_CDN_URL e il sito si carica. Questo conferma che la mia configurazione di S3 CDN è il problema, ma non so ancora come impostarla correttamente.

Apprezzerei molto qualsiasi aiuto.

1 Mi Piace

Hai completato tutte le attività nella sezione Configurazione?

Se ricordo bene, l’impostazione di DISCOURSE_S3_CDN_URL in app.yml richiede che gli asset siano archiviati su S3.

2 Mi Piace

Non so molto bene come funziona Discourse. Sono solo un altro webmaster che copia e incolla dal mondo PHP, ma mi chiedo ancora perché ci sia bisogno di dichiarare due volte lo stesso CDN.

Non uso DISCOURSE_CDN_URL perché ho DISCOURSE_S3_CDN_URL (e probabilmente nessuna documentazione che ho letto mi ha guidato ad usarlo). Quindi ho provato.

Ho aggiunto DISCOURSE_CDN_URL: <cdn-url>. La ricostruzione non ha dato errori, ma ho ottenuto un errore 502. Quando l’ho rimosso, il mio forum ha funzionato di nuovo.

Tuttavia, i tuoi problemi potrebbero verificarsi a causa di una qualche errata configurazione altrove. Ma mi piacciono le soluzioni facili, anche quando sbaglio, e incolpo la situazione quando si indica due volte il CDN per esigenze diverse. O qualcosa del genere.

2 Mi Piace

DISCOURSE_CDN_URL e DISCOURSE_S3_CDN_URL sono diversi. Mentre DISCOURSE_CDN_URL punta al tuo forum, DISCOURSE_S3_CDN_URL punta all’URL del tuo storage S3.

L’idea è che DISCOURSE_CDN_URL serva asset scaricabili come CSS, mentre DISCOURSE_S3_CDN_URL serva asset caricabili come JS, immagini e caricamenti utente.

Sono riuscito a far funzionare tutto tranne il mio CDN di storage S3. Ogni volta che abilito quella parte nel file app.yml, il mio forum viene visualizzato vuoto.

Un’occhiata alla rete dell’elemento di ispezione del browser mostra che gli asset forniti da DISCOURSE_S3_CDN_URL mostrano un errore 404.

È qui che sono bloccato! Non sono sicuro del perché il CDN S3 non riesca a fornire gli asset.

4 Mi Piace

Grazie per la paziente spiegazione!

È piuttosto… insolito per me. Ma come ho detto, ho un’esperienza molto limitata. Uso AWS come CDN tramite S3/CloudFlare in WordPress ma solo per file statici — gli script richiederebbero un’altra configurazione. Ritengo che non abbia senso confrontare WP e Discourse perché sono piattaforme fondamentalmente così diverse. Ma sto cercando di capire i principi del concetto qui.

Beh, ora ho capito molto di più di te :smile:

MODIFICA: E ho anche sbagliato totalmente la mia configurazione :flushed: Tutti i JS, le immagini, ecc. vengono serviti tramite CDN. Ma non ho trovato il CSS lì.

1 Mi Piace

Sì, lo sono. Ma grazie per l’aggiornamento.

1 Mi Piace

Ciao @Jagster apprezzerò molto il tuo aiuto.

Il problema che sto riscontrando ora è che il mio sito sta cercando di caricare asset .gz.js dal CDN di Object Storage ma i file non ci sono. Come posso forzare Discourse a caricare quegli asset .gz.js su Object Storage?

1 Mi Piace

Questo è ciò che fa questa parte della guida:

1 Mi Piace

Ho già quella riga nella mia app.yml. Ho inserito il codice sopra dopo aver definito i plugin. Oppure li sposto sopra l’elenco dei plugin?

1 Mi Piace

That’s wrong. La chiave YAML after_assets_precompile deve essere sotto la chiave hooks.

Per impostazione predefinita spediamo come:

## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

e tu vuoi

## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
1 Mi Piace

Grazie mille, @Falco. Li sposterò ora e riproverò.

2 Mi Piace

Ma per quanto riguarda gli altri plugin? Va bene elencarli di seguito

  • sudo -E -u discourse bundle exec rake s3:upload_assets ?
1 Mi Piace

No.

Diventerà:

## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets

YAML è una struttura dati simile a un albero e l’indentazione degli spazi bianchi definisce la struttura.

3 Mi Piace

Con la guida che tu (@Falco) e @pfaffman avete fornito, ho appena completato con successo questa configurazione.

Per gli altri membri della community che desiderano vedere le mie configurazioni. Ecco gli screenshot. Ho anche scritto una guida completa mentre configuravo tutto questo.

Ho utilizzato StackPath e DigitalOcean Spaces. La mia guida include una spiegazione passo passo dell’intera configurazione. Se qualcuno ha bisogno di questa guida, sarò felice di pubblicare l’URL su richiesta.

2 Mi Piace

@Falco e @pfaffman vi ringrazio entrambi moltissimo per il vostro aiuto. È la prima volta che configuro Discourse, ma ho appena completato le parti più difficili (credo!). Vi sono molto grato!.

3 Mi Piace