Hallo zusammen,
ich wollte auf meinen vorherigen Beitrag zurückkommen und mitteilen, dass ich einige Fortschritte gemacht habe.
Was jetzt funktioniert
- Benutzer-Uploads werden korrekt von meinem S3-Bucket über das CDN (CloudFront) bereitgestellt, das ist großartig!
Ich habe jedoch immer noch ein Problem mit den vorkompilierten Assets
Die vorkompilierten Assets werden immer noch nicht korrekt vom CDN bereitgestellt.
Wenn ich DISCOURSE_CDN_URL auf die CloudFront-URL (d. h. https://dsuqioxhrz2qn.cloudfront.net) setze, werden die URLs der vorkompilierten Assets zu:
• https://dsuqioxhrz2qn.cloudfront.net/stylesheets/color_definitions_shades-of-blue_7_1_e6f11758f9c015d1e5ed9b08c437e9c5c267c932.css?__ws=forum.hobiguru.com
• https://dsuqioxhrz2qn.cloudfront.net/stylesheets/discourse-presence_308d905aa5c03567866fec50e9a28d8721ab0463.css
Das Problem ist, dass diese Pfade nicht in meinem S3-Bucket existieren. Die vorkompilierten Assets werden unter dem Ordner /assets/* in S3 hochgeladen (z. B. /assets/locales, /assets/plugins, /assets/scripts), aber es gibt keinen /stylesheets/-Ordner, und das Laden dieser URLs führt natürlich zu einem 403 Forbidden-Fehler.
Wenn ich jedoch DISCOURSE_CDN_URL: https://forum.hobiguru.com ändere, funktioniert mein Forum korrekt, aber die Assets werden jetzt vom Server (z. B. https://forum.hobiguru.com/) und nicht vom CDN bereitgestellt (z. B. https://forum.hobiguru.com/stylesheets/admin_308d905aa5c03567866fec50e9a28d8721ab0463.css?__ws=forum.hobiguru.com)
Mein aktuelles Setup (zum Kontext) ist:
app.yaml
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: eu-central-1
DISCOURSE_S3_ACCESS_KEY_ID: AKIA......LQMB
DISCOURSE_S3_SECRET_ACCESS_KEY: PaXQu7pKN.....fJNY
DISCOURSE_S3_BUCKET: hobiguru-s3-bucket-eu
DISCOURSE_CDN_URL: https://dsuqioxhrz2qn.cloudfront.net # Stelle sicher, dass die CDN-URL auf CloudFront zeigt
DISCOURSE_CDN_URL: https://forum.hobigur.com # BEACHTE DAS!
und die Precompile-Hooks:
hooks:
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
Es scheint, dass nach dem Vorkompilieren die Assets in S3 in einer bestimmten Struktur hochgeladen werden, aber wenn sie dann über das CDN geladen werden, ist der Pfad zu den Objekten etwas falsch.