Conversion de SMF2 et Rake vers S3, aide

J’ai cherché, mais je ne trouve pas d’aperçu de base sur la façon de déplacer nos uploads de DigitalOcean vers S3. J’ai configuré avec succès S3 pour les nouveaux uploads et nos sauvegardes il y a quelques mois. Je souhaite achever le déplacement de nos uploads (~1,4 Go) vers S3.

Il s’agissait d’une conversion depuis SMF2 dès le départ. Nous avons maintenant deux dossiers d’uploads, l’un à la racine dans smf2 et l’autre dans /var/discourse. Le répertoire SMF2 fait 2,8 Go. Je suppose qu’il pourrait y avoir deux étapes ici ? Dois-je effectuer des étapes séparées pour déplacer depuis le répertoire SMF2 et depuis le répertoire /var/discourse ?

Je suis tombé sur rake to s3, mais je ne trouve pas de guide autre qu’un groupe de personnes parlant des erreurs qu’elles ont rencontrées et de suggestions pour les corriger. Existe-t-il un guide ?

Veuillez lire cet article, il devrait vous guider sur la configuration de la tâche

Vous devez vérifier la section de configuration pour la partie hooks et configurer le bucket en utilisant des variables d’environnement afin d’éviter les problèmes dont vous avez déjà lu.

2 « J'aime »

C’est super ! Merci !

La seule chose là-dessus que je ne connais pas, c’est un CDN. Je vois que nous pouvons utiliser Amazon CloudFront. Je suppose que cela n’a pas été configuré lors des étapes de configuration S3 précédentes. Je vais chercher un guide pour savoir comment le configurer.

Vous pouvez configurer CloudFront en utilisant votre bac de téléchargements comme origine et, une fois configuré, vous pouvez le définir comme lien CDN S3. C’est tout ce qu’il y a à faire.

2 « J'aime »

Merci. J’ai suivi cette vidéo pour configurer CloudFront :

Je lance actuellement rake posts:rebake. Il y a 84 000 articles, donc cela va prendre un certain temps.

Oups… tentative de redémarrage…

root@discourse-app:/var/www/discourse# rake posts:rebake
Régénération du markdown des publications pour ‘default’
10027 / 83358 ( 12.0%)/usr/local/bin/rake: ligne 2: 959 Terminé RAILS_ENV=production sudo -H -E -u discourse bundle exec bin/rake “$@”

Ça vient de se reproduire… Des suggestions ?

root@discourse-app:/var/www/discourse# rake posts:rebake
Re-cuisson du markdown des publications pour ‘default’
12901 / 83359 ( 15.5%)/usr/local/bin/rake: ligne 2: 2569 Terminé RAILS_ENV=production sudo -H -E -u discourse bundle exec bin/rake “$@”

Certaines publications récupèrent désormais du contenu depuis Cloudfront, donc au moins cela fonctionne dans une certaine mesure.

Il semble que cela se produise sans que je n’ai lancé de rebake ? Sidekiq s’acharne à récupérer les images en hotlink.

OK, le site a été reconstruit et les étapes de configuration S3 ont été suivies.

Tout devrait maintenant être chargé depuis S3. Comment puis-je vérifier cela ? Puis-je supprimer l’ancien répertoire uploads sur mon droplet pour libérer de l’espace ?

J’ai clairement fait une erreur. J’utilise maintenant plus d’espace disque qu’auparavant.

Le téléchargement vers S3 doit se produire pendant la reconstruction. Vous devriez pouvoir parcourir les ressources du site dans les buckets S3, et toutes les ressources du site doivent se charger à partir du lien S3 ou CDN fourni. Si cela ne fonctionne pas, il y a certainement un problème dans la façon dont vous l’avez configuré. Recevez-vous des erreurs ?

Je soupçonne qu’un problème s’est alors produit. Ma reconstruction n’a pas duré assez longtemps pour qu’une partie des quelques Go de données aient été téléchargés pendant ce processus.

EDIT :
Tous les téléchargements effectués il y a plusieurs mois étaient déjà envoyés vers S3. Ce sont les données héritées, antérieures à la migration vers S3, que je souhaite déplacer.

Gardez à l’esprit que les serveurs sont plusieurs ordres de grandeur plus rapides que votre connexion haut débit. Le transfert des images depuis votre hébergeur vers S3 ne devrait pas prendre plus de quelques minutes. Cependant, vous devriez examiner attentivement le journal de reconstruction pour confirmer si les transferts ont bien eu lieu.

Alternativement, vous pouvez exécuter ./discourse-doctor pour générer un journal à examiner.

Voici la sortie du script :

La seule chose que je remarque est indiquée en gras dans la section DNS.

> root@discourse:/var/discourse# ./discourse-doctor
> DISCOURSE DOCTOR jeu. 14 mai 11:35:17 UTC 2020
> OS: Linux discourse 4.15.0-99-generic #100-Ubuntu SMP mer. 22 avr. 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
> 
> 
> Fichier containers/app.yml trouvé
> 
> ==================== PARAMÈTRES YML ====================
> DISCOURSE_HOSTNAME=
> SMTP_ADDRESS=
> DEVELOPER_EMAILS=
> SMTP_PASSWORD=
> SMTP_PORT=
> SMTP_USER_NAME=
> LETSENCRYPT_ACCOUNT_EMAIL=
> 
> ==================== INFORMATIONS DOCKER ====================
> VERSION DOCKER : Docker version 18.09.6, build 481bc77
> 
> PROCESSUS DOCKER (docker ps -a)
> 
> CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                      NAMES
> db900fc77ebe        local_discourse/app   "/sbin/boot"        15 hours ago        Up 15 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
> 
> db900fc77ebe        local_discourse/app   "/sbin/boot"        15 hours ago        Up 15 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
> 
> Le conteneur Discourse app est en cours d'exécution
> 
> 
> ==================== PLUGINS ====================
>             exec: {cd: $home/plugins, cmd: ['git clone https://github.com/discourse/docker_manager.git', 'git clone https://github.com/procourse/procourse-static-pages.git', 'git clone https://github.com/discourse/discourse-bbcode.git', 'git clone https://github.com/discourse/discourse-adplugin.git']}
> 
> Aucun plugin non officiel détecté.
> 
> Voir https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb pour la liste officielle.
> 
> ========================================
> Version de Discourse à : NON TROUVÉE
> Version de Discourse à localhost : Discourse 2.5.0.beta4
**> ==================== PROBLÈME DNS ====================**
**> Ce serveur indique Discourse 2.5.0.beta4, mais  indique NON TROUVÉE.**
**> Cela suggère que vous avez un problème DNS ou qu'un proxy intermédiaire est en cause.**
**> Si vous utilisez Cloudflare ou un CDN, il est possible qu'il soit mal configuré.**
> 
> 
> ==================== INFORMATIONS SUR LA MÉMOIRE ====================
> RAM (Mo): 1008
> 
>               total        utilisé       libre      partagé  cache/buff   disponible
> Mémoire:       985         636          69         121         279          88
> Swap:         2047         775        1272
> 
> ==================== VÉRIFICATION DE L'ESPACE DISQUE ====================
> ---------- Espace disque du système d'exploitation ----------
> Système de fichiers      Taille  Utilisé  Disponible  %Utilisé  Monté sur
> /dev/vda1        25G   20G  4.8G  81% /
> 
> ---------- Espace disque du conteneur ----------
> Système de fichiers      Taille  Utilisé  Disponible  %Utilisé  Monté sur
> overlay          25G   20G  4.8G  81% /
> /dev/vda1        25G   20G  4.8G  81% /shared
> /dev/vda1        25G   20G  4.8G  81% /var/log
> 
> ==================== INFORMATIONS SUR LE DISQUE ====================
> Disque /dev/vda: 25 GiB, 26843545600 octets, 52428800 secteurs
> Unités: secteurs de 1 * 512 = 512 octets
> Taille du secteur (logique/physique): 512 octets / 512 octets
> Taille E/S (minimum/optimal): 512 octets / 512 octets
> Type d'étiquette de disque: gpt
> Identifiant du disque: 02CBFCD2-7495-4A08-A11B-28E7D3872FAA
> 
> Périphérique      Début      Fin  Secteurs  Taille Type
> /dev/vda1  227328 52428766 52201439 24.9G Système de fichiers Linux
> /dev/vda14   2048    10239     8192    4M Boot BIOS
> /dev/vda15  10240   227327   217088  106M Données de base Microsoft
> 
> Les entrées de la table de partitions ne sont pas dans l'ordre du disque.
> 
> ==================== FIN DES INFORMATIONS SUR LE DISQUE ====================
> 
> ==================== TEST DE COURRIER ====================
> Pour un test robuste, obtenez une adresse sur http://www.mail-tester.com/
> Ou envoyez simplement un message de test à vous-même.
> Adresse e-mail pour le test de courrier ? ('n' pour ignorer) []: n
> Test de courrier ignoré.
> Remplacement: SMTP_PASSWORD
> Remplacement: LETSENCRYPT_ACCOUNT_EMAIL
> Remplacement: DEVELOPER_EMAILS
> Remplacement: DISCOURSE_DB_PASSWORD
> Remplacement: Envoi de courrier à
> 
> ==================== TERMINÉ ! ====================
> Souhaitez-vous servir une version publiquement accessible de ce fichier ? (O/n)n
> root@discourse:/var/discourse#

Voici la section de app.yml :

> 
>     DISCOURSE_USE_S3: true
>     DISCOURSE_S3_REGION: us-east-1
>     DISCOURSE_S3_ACCESS_KEY_ID: <MA CLE>
>     DISCOURSE_S3_SECRET_ACCESS_KEY: <MA CLE SECRÈTE>
>     DISCOURSE_S3_CDN_URL: 'https://d2hneyr8lp58j4.cloudfront.net'
>     DISCOURSE_S3_BUCKET: brcuploads
>     DISCOURSE_S3_BACKUP_BUCKET: bcruploads-backups
>     DISCOURSE_BACKUP_LOCATION: s3

Cela signifie-t-il que j’ai mal configuré le DNS sur DigitalOcean ? J’ai ajouté le CNAME depuis Cloudfront.

Wow, cela n’a pas été très utile. Vous avez choisi n pour

Pouvez-vous générer une version publiquement accessible ? Vous pouvez partager le lien en message privé, je pourrai peut-être vérifier si la migration vers S3 a fonctionné ou échoué pour une raison quelconque ?

Je t’envoie l’URL par message privé.

1 « J'aime »