Je devrai peut-être diviser cela en trois publications distinctes, mais elles sont liées, je vais donc commencer par une seule.
Il y a quelques jours, j’ai utilisé ce tutoriel (How to Scale a Discourse Deployment with a Load Balancer and Managed Database Cluster | DigitalOcean) quasiment à la lettre et j’ai migré mon Droplet Discourse autonome sur Digital Ocean vers deux Droplets à l’intérieur d’un équilibreur de charge, jusqu’ici tout va bien.
J’ai ensuite suivi ce tutoriel (Configure an S3 compatible object storage provider for uploads), mais après avoir reconstruit Discourse depuis la ligne de commande, mon site Discourse n’affichait qu’un écran vide. J’ai regardé dans l’inspecteur du navigateur pour constater que le navigateur bloquait tout mon contenu car il était servi en HTTP et non en HTTPS. C’est probablement parce que l’équilibreur de charge est terminé SSL, donc tout ce qui est externe est en HTTPS, mais les serveurs eux-mêmes fonctionnent en HTTP.
À ce stade, j’ai complètement cassé mes serveurs à nouveau, en essayant de les faire fonctionner avec HTTPS à l’intérieur de l’équilibreur de charge, mais ce n’était tout simplement pas possible. Je n’ai pas pu faire fonctionner l’espace/CDN Digital Ocean avec S3/CDN selon ce tutoriel (Configure an S3 compatible object storage provider for uploads). Je l’ai parcouru méticuleusement et inspecté chaque aspect plusieurs fois, mais cela n’a pas fonctionné. La seule façon d’obtenir la reconstruction de Discourse a été de supprimer le paramètre DISCOURSE_S3_ENDPOINT: https://sfo3.digitaloceanspaces.com de app.yml, mais ensuite, même s’il avait été reconstruit, je n’ai pas pu obtenir de réponse du serveur. J’ai obtenu soit une erreur 503 serveur ne répond pas, soit une erreur normale de navigateur serveur ne répond pas ou serveur déconnecté. Cela variait en fonction de l’équilibreur de charge et des paramètres de l’espace/CDN DO que j’essayais. J’ai essayé toutes les combinaisons possibles de paramètres et rien n’a pu me permettre de servir une page.
Lorsque j’ai conservé le paramètre DISCOURSE_S3_ENDPOINT, j’ai obtenu l’erreur suivante lors de la reconstruction de Discourse, mais elle a disparu lorsque j’ai commenté le paramètre S3_ENDPOINT.
Aws::S3::Errors::InvalidAccessKeyId: Aws::S3::Errors::InvalidAccessKeyId
Tous mes fichiers ont été synchronisés avec S3, donc je pense qu’il est sûr de supposer que la clé d’accès était correcte, et que le problème était causé d’une manière ou d’une autre par le paramètre S3_ENDPOINT.
Aujourd’hui, j’ai abandonné en essayant de faire fonctionner la tentative précédente, et j’ai restauré une sauvegarde de mes Droplets qui ne faisaient que de l’équilibrage de charge avec uniquement HTTP et j’ai finalement réussi à le faire fonctionner à nouveau en suivant ce tutoriel (Set up file and image uploads to S3) mais cette fois, j’ai modifié les paramètres S3 via le panneau d’administration de Discourse plutôt que de modifier app.yml avec les paramètres du tutoriel recommandé. Cela a finalement fonctionné, mais la différence importante est que j’ai délibérément omis les paramètres CDN S3. J’ai confirmé que les images téléchargées dans les publications sont stockées sur S3 et que je peux sauvegarder Discourse directement sur S3, et c’est vraiment tout ce que je veux, mais j’ai maintenant trois problèmes qui me hantent, un est critique et deux sont ignorables, bien que j’aimerais confirmer ici si possible.
Le problème critique est que les utilisateurs ne peuvent plus se connecter en utilisant le bouton de connexion Patreon sur la page de connexion Discourse. Ce message s’affiche :
Désolé, une erreur s’est produite lors de l’autorisation de votre compte. Veuillez réessayer.
L’URL est la suivante :
https://mbp.community/auth/failure?message=invalid_credentials&origin=https%3A%2F%2Fmbp.community%2Flogin&strategy=patreon
J’apprécierais vraiment des conseils sur ce que je pourrais essayer pour que cela fonctionne, mais encore une fois, je me demande si c’est parce qu’en interne les serveurs ne fonctionnent pas en HTTPS. Comme vous pouvez le voir dans l’URL, en externe ils sont en HTTPS, il est donc difficile de savoir avec certitude. Je suppose que j’espère que quelqu’un ici a de l’expérience avec l’équilibrage de charge Digital Ocean, etc. avec Discourse.
Les deux autres problèmes sont signalés maintenant dans la console d’administration comme ci-dessous :
Quelques conseils basés sur les paramètres actuels de votre site
- Votre site Web utilise le SSL. Mais
[force_https](https://mbp.community/admin/site_settings/category/all_results?filter=force_https)n’est pas encore activé dans les paramètres de votre site. - Le serveur est configuré pour télécharger des fichiers sur S3, mais aucun CDN S3 n’est configuré. Cela peut entraîner des coûts S3 coûteux et des performances de site plus lentes. Voir “Utilisation du stockage d’objets pour les téléchargements” pour en savoir plus.
Donc, je ne suis pas contre essayer d’activer force_https, mais je crains que cela ne me bloque l’accès à mon serveur car en interne les serveurs équilibrés en charge ne fonctionnent pas en HTTPS et en raison des problèmes que j’ai eus hier, je suis réticent à passer encore douze heures à me cogner la tête contre un mur en regardant d’innombrables reconstructions de Discourse de 15 minutes pour n’arriver nulle part. Encore une fois, si quelqu’un sait qu’il est sûr d’activer force_https avec mes configurations, faites-le moi savoir.
Et le deuxième problème, encore une fois, ne s’est pas bien passé via les paramètres ajoutés au fichier app.yml, donc je suis réticent à essayer cela à nouveau non plus. Pouvez-vous confirmer que cela ferait essentiellement la même chose que les paramètres ajoutés au fichier app.yml ? Si oui, j’ignorerai simplement ce deuxième message. Inversement, si c’est pour une raison quelconque sûr à essayer, faites-le moi savoir et je ferai une sauvegarde et j’essaierai.
Désolé pour le long post. J’espère que vous pourrez comprendre ce sur quoi j’essaie d’obtenir des conseils.