Configurer un fournisseur de stockage d'objets compatible S3 pour les téléchargements

Vous pouvez jeter un œil à la console javascript. Je suppose que soit le CDN est incorrect, soit vous n’avez pas bien géré la partie précompilation des assets.

https://community.itechguides.com/ fonctionne maintenant :

Si cela ne fonctionne pas pour vous, essayez un rechargement forcé et/ou une fenêtre de navigation privée.

2 « J'aime »

Le site s’est ouvert pour vous car, au moment où vous l’avez ouvert, j’avais commenté les lignes suivantes du fichier 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

Je viens de réactiver les lignes et de reconstruire le conteneur. Maintenant, le site affiche à nouveau une page blanche !

La capture d’écran ci-dessous montre où j’ai placé les codes dans mon app.yml. Comme vous pouvez le voir, j’ai placé les codes de configuration S3 sous DISCOURSE_NOTIFICATION_EMAIL


a

1 « J'aime »

Que se passe-t-il si vous commentez DISCOURSE_CDN_URL ?

1 « J'aime »

Je ne l’ai pas fait. Mais j’ai résolu le problème et je suis convaincu de ne pas avoir correctement configuré le CDN S3. J’utilise StackPath et je ne suis pas sûr de ce qu’il faut utiliser pour l’adresse d’origine et l’en-tête d’hôte.

1 « J'aime »

Une autre chose dont je ne suis pas sûr est la façon de configurer la fonction de liste de fichiers de mon compartiment DigitalOcean Space. Maintenant, j’utilise Restrict Listing. Est-ce que cela affecte quoi que ce soit ?

1 « J'aime »

J’ai mis en commentaire DISCOURSE_S3_CDN_URL et le site se charge. Cela confirme que ma configuration du CDN S3 est le problème, mais je ne sais toujours pas comment le configurer correctement.

J’apprécierais vraiment toute aide.

1 « J'aime »

Avez-vous terminé toutes les tâches de la section Configuration ?
Si je me souviens bien, la définition de DISCOURSE_S3_CDN_URL dans app.yml exige que les actifs soient stockés sur S3.

2 « J'aime »

Je ne sais pas bien comment fonctionne Discourse. Je suis juste un autre webmaster qui copie-colle du monde PHP, mais je me demande toujours pourquoi il faudrait déclarer le même CDN deux fois.

Je n’utilise pas DISCOURSE_CDN_URL car j’ai DISCOURSE_S3_CDN_URL (et probablement que la documentation que j’ai lue ne m’a pas guidé pour l’utiliser). J’ai donc essayé.

J’ai ajouté DISCOURSE_CDN_URL: <cdn-url>. La reconstruction n’a pas donné d’erreurs, mais j’ai obtenu une erreur 502. Quand je l’ai retiré, mon forum a fonctionné à nouveau.

Cependant, vos problèmes peuvent survenir à cause d’une mauvaise configuration ailleurs. Mais j’aime les solutions faciles, même quand j’ai tort, et je blâme la situation quand vous indiquez deux fois le CDN pour des besoins différents. Ou quelque chose comme ça.

2 « J'aime »

DISCOURSE_CDN_URL et DISCOURSE_S3_CDN_URL sont différents. Alors que DISCOURSE_CDN_URL pointe vers votre forum, DISCOURSE_S3_CDN_URL pointe vers votre URL de stockage S3.

L’idée est que DISCOURSE_CDN_URL serve des actifs téléchargeables comme le CSS, tandis que DISCOURSE_S3_CDN_URL serve des actifs téléchargeables comme le JS, les images et les téléchargements d’utilisateurs.

J’ai réussi à tout faire fonctionner, sauf mon CDN de stockage S3. Dès que j’active cette partie dans le fichier app.yml, mon forum s’affiche en blanc.

Un coup d’œil sur le réseau de l’inspecteur du navigateur montre que les actifs livrés par DISCOURSE_S3_CDN_URL affichent une erreur 404.

C’est là que je suis bloqué ! Je ne suis pas sûr de pourquoi le CDN S3 ne parvient pas à livrer les actifs.

4 « J'aime »

Merci pour votre explication patiente !

C’est assez… inhabituel pour moi. Mais comme je l’ai dit, j’ai une expérience très limitée. J’utilise AWS comme CDN via S3/CloudFlare dans WordPress, mais uniquement pour les fichiers statiques — les scripts nécessiteraient une autre configuration. Je suppose qu’il n’y a aucun intérêt à comparer WP et Discourse car ce sont des plateformes fondamentalement si différentes. Mais j’essaie de comprendre les principes du concept ici.

Eh bien, j’ai beaucoup plus maintenant que vous :smile:

EDIT : Et j’avais totalement tort dans ma configuration aussi :flushed: Tous les JS, images, etc. sont servis via le CDN. Mais je n’ai pas pu y trouver les CSS.

1 « J'aime »

Oui, ils le sont. Mais merci pour la mise à jour.

1 « J'aime »

Salut @Jagster, j’apprécierais vraiment votre aide.

Le problème que j’ai maintenant est que mon site essaie de charger des ressources .gz.js depuis le CDN de stockage d’objets, mais les fichiers ne s’y trouvent pas. Comment puis-je forcer Discourse à télécharger ces ressources .gz.js vers le stockage d’objets ?

1 « J'aime »

C’est ce que fait cette partie du guide :

1 « J'aime »

J’ai déjà cette ligne dans mon app.yml. J’ai mis le code ci-dessus après avoir défini les plugins. Ou dois-je les déplacer avant la liste des plugins ?

1 « J'aime »

C’est faux. La clé YAML after_assets_precompile doit se trouver sous la clé hooks.

Par défaut, nous livrons comme suit :

## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour les détails
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

et vous voulez

## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour les détails
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 « J'aime »

Merci beaucoup, @Falco. Je vais les déplacer maintenant et réessayer.

2 « J'aime »

Mais qu’en est-il des autres plugins ? Est-ce que je peux les lister ci-dessous

  • sudo -E -u discourse bundle exec rake s3:upload_assets ?
1 « J'aime »

Non.

Cela deviendra :

## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour les détails
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 est une structure de données arborescente et l’indentation par espaces blancs définit la structure.

3 « J'aime »

Avec les conseils que vous (@Falco) et @pfaffman avez fournis, j’ai terminé cette configuration avec succès.

Pour les autres membres de la communauté qui souhaitent voir mes configurations. Voici les captures d’écran. J’ai également rédigé un guide complet pendant que je configurais tout cela.

J’ai utilisé StackPath et DigitalOcean Spaces. Mon guide comprend une étape par étape de toute la configuration. Si quelqu’un a besoin de ce guide, je serai heureux de poster l’URL sur demande.

2 « J'aime »

Merci beaucoup à @Falco et @pfaffman pour votre aide. C’est la première fois que je configure Discourse, mais j’ai terminé les parties les plus difficiles (je pense !). Je vous suis très reconnaissant !.

3 « J'aime »