Konfigurieren Sie einen S3-kompatiblen Objektspeicheranbieter für Uploads

Sie können einen Blick in die JavaScript-Konsole werfen. Ich vermute, entweder ist das CDN falsch oder Sie haben den Teil mit den vorkompilierten Assets nicht richtig hinbekommen.

https://community.itechguides.com/ funktioniert jetzt:

Wenn es bei Ihnen nicht funktioniert, versuchen Sie einen Hard Reload und/oder ein Inkognito-Fenster.

2 „Gefällt mir“

Die Website wurde für Sie geöffnet, da ich zu dem Zeitpunkt, als Sie sie geöffnet haben, die folgenden Zeilen aus der Datei app.yml auskommentiert hatte:

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

Ich habe die Zeilen gerade wieder aktiviert und den Container neu erstellt. Jetzt wird die Website wieder mit einer leeren Seite angezeigt!

Der Screenshot unten zeigt, wo ich die Codes in meiner app.yml platziert habe. Wie Sie sehen können, habe ich die S3-Konfigurationscodes unter DISCOURSE_NOTIFICATION_EMAIL platziert.


a

1 „Gefällt mir“

Was passiert, wenn Sie DISCOURSE_CDN_URL auskommentieren?

1 „Gefällt mir“

Das habe ich nicht getan. Aber ich habe Fehlerbehebungen vorgenommen und bin fest davon überzeugt, dass ich das S3 CDN nicht richtig eingerichtet habe. Ich benutze StackPath und bin mir nicht sicher, was ich in die Ursprungsadresse und den Host-Header eingeben soll

1 „Gefällt mir“

Eine weitere Sache, bei der ich mir nicht sicher bin, ist, wie ich die Dateilistenfunktion meines DigitalOcean Space Buckets einrichten kann. Derzeit verwende ich “Restrict Listing”. Hat das Auswirkungen?

1 „Gefällt mir“

Ich habe DISCOURSE_S3_CDN_URL auskommentiert und die Seite wird geladen. Das bestätigt, dass mein S3 CDN-Setup das Problem ist, aber ich weiß immer noch nicht, wie ich es richtig einrichte.

Ich wäre für jede Hilfe dankbar.

1 „Gefällt mir“

Haben Sie alle Aufgaben im Abschnitt „Konfiguration“ abgeschlossen?

Wenn ich mich richtig erinnere, erfordert das Festlegen von DISCOURSE_S3_CDN_URL in app.yml, dass Assets auf S3 gespeichert werden.

2 „Gefällt mir“

Ich weiß nicht viel darüber, wie Discourse funktioniert. Ich bin nur ein weiterer Webmaster, der von der PHP-Welt kopiert und einfügt, aber ich frage mich immer noch, warum dieselbe CDN zweimal deklariert werden müsste.

Ich verwende DISCOURSE_CDN_URL nicht, da ich DISCOURSE_S3_CDN_URL habe (und wahrscheinlich hat mich keine Dokumentation, die ich gelesen habe, dazu angeleitet, es zu verwenden). Also habe ich es versucht.

Ich habe DISCOURSE_CDN_URL: <cdn-url> hinzugefügt. Das Neuerstellen gab keine Fehler, aber ich bekam den Fehler 502. Als ich es entfernte, funktionierte mein Forum wieder.

Dennoch können Ihre Probleme aufgrund einer Fehlkonfiguration irgendwo anders auftreten. Aber ich mag einfache Lösungen, auch wenn ich falsch liege, und ich mache die Situation dafür verantwortlich, dass Sie die CDN zweimal für unterschiedliche Bedürfnisse angeben. Oder so ähnlich.

2 „Gefällt mir“

DISCOURSE_CDN_URL und DISCOURSE_S3_CDN_URL sind unterschiedlich. Während DISCOURSE_CDN_URL auf Ihr Forum verweist, verweist DISCOURSE_S3_CDN_URL auf Ihre S3-Speicher-URL.

Die Idee ist, dass DISCOURSE_CDN_URL abrufbare Assets wie CSS bereitstellt, während DISCOURSE_S3_CDN_URL pushbare Assets wie JS, Bilder und Benutzer-Uploads bereitstellt.

Ich konnte alles zum Laufen bringen, außer meinem S3-Speicher-CDN. Immer wenn ich diesen Teil in der app.yml-Datei aktiviere, wird mein Forum leer angezeigt.

Ein Blick auf das Browser-Inspektionsnetzwerk zeigt, dass Assets, die von DISCOURSE_S3_CDN_URL bereitgestellt werden, den Fehler 404 anzeigen.

Hier hänge ich fest! Ich bin mir nicht sicher, warum das S3-CDN die Assets nicht bereitstellen kann.

4 „Gefällt mir“

Vielen Dank für die geduldige Erklärung!

Das ist für mich ziemlich… ungewohnt. Aber wie gesagt, ich habe sehr begrenzte Erfahrung. Ich benutze AWS als CDN über S3/CloudFlare in WordPress, aber nur für statische Dateien – Skripte würden eine andere Einrichtung erfordern. Ich vermute, es hat keinen Sinn, WP und Discourse zu vergleichen, da dies grundlegend so unterschiedliche Plattformen sind. Aber ich versuche, die Prinzipien des Konzepts hier zu verstehen.

Nun, ich habe jetzt viel mehr als Sie :smile:

EDIT: Und ich lag mit meinem Setup auch total falsch :flushed: Alle JS, Bilder usw. werden über CDN ausgeliefert. Aber ich konnte dort keine CSS finden.

1 „Gefällt mir“

Ja, das sind sie. Aber danke für das Update.

1 „Gefällt mir“

Hallo @Jagster, ich weiß deine Hilfe wirklich zu schätzen.

Das Problem, das ich jetzt habe, ist, dass meine Website versucht, .gz.js-Assets vom Object Storage CDN zu laden, aber die Dateien sind nicht da. Wie zwinge ich Discourse, diese .gz.js-Assets in den Object Storage hochzuladen?

1 „Gefällt mir“

Das macht dieser Teil in der Anleitung:

1 „Gefällt mir“

Ich habe diese Zeile bereits in meiner app.yml. Ich habe den obigen Code nach der Definition der Plugins eingefügt. Oder soll ich sie über die Plugin-Listen verschieben?

1 „Gefällt mir“

Das ist falsch. Der YAML-Schlüssel after_assets_precompile muss sich unter dem Schlüssel hooks befinden.

Standardmäßig liefern wir wie folgt:

## Plugins gehen hier hin
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

und Sie möchten

## Plugins gehen hier hin
## siehe https://meta.discourse.org/t/19157 für Details
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 „Gefällt mir“

Vielen Dank, @Falco. Ich werde sie jetzt verschieben und es erneut versuchen.

2 „Gefällt mir“

Aber was ist mit den anderen Plugins? Ist es in Ordnung, sie unten aufzulisten

  • sudo -E -u discourse bundle exec rake s3:upload_assets ?
1 „Gefällt mir“

Nein.

Es wird zu Folgendem:

## Plugins gehen hier hin
## siehe https://meta.discourse.org/t/19157 für Details
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 ist eine baumartige Datenstruktur und die Einrückung mit Leerzeichen definiert die Struktur.

3 „Gefällt mir“

Mit der Anleitung von Ihnen (@Falco) und @pfaffman habe ich diese Konfiguration gerade erfolgreich abgeschlossen.

Für andere Community-Mitglieder, die meine Konfigurationen sehen möchten. Hier sind die Screenshots. Ich habe auch einen umfassenden Leitfaden geschrieben, während ich all dies konfiguriert habe.

Ich habe StackPath und DigitalOcean Spaces verwendet. Mein Leitfaden enthält eine Schritt-für-Schritt-Anleitung der gesamten Konfiguration. Wenn jemand diesen Leitfaden benötigt, werde ich die URL gerne auf Anfrage posten.

2 „Gefällt mir“

@Falco und @pfaffman, vielen Dank für eure Hilfe. Dies ist das erste Mal, dass ich Discourse konfiguriere, aber ich habe gerade die schwierigsten Teile (glaube ich!) erledigt. Ich bin sehr dankbar!

3 „Gefällt mir“