Hilfe bei SMF2-Konvertierung und Rake zu S3

Ich habe gesucht, konnte aber keine grundlegende Übersicht finden, wie man unsere Uploads von DigitalOcean zu S3 verschiebt. Ich habe vor einigen Monaten erfolgreich S3 für neue Uploads und unsere Backups eingerichtet. Ich möchte nun den Rest unserer Uploads (~1,4 GB) zu S3 verschieben.

Dies war von Anfang an eine Umstellung von SMF2. Wir haben jetzt zwei Upload-Ordner: einen im Root-Verzeichnis von SMF2 und einen in /var/discourse. Das SMF2-Verzeichnis ist 2,8 GB groß. Ich vermute, dass es hier zwei Schritte gibt? Muss ich separate Schritte durchführen, um den Ordner von SMF2 und den Ordner von /var/discourse zu verschieben?

Ich bin auf „rake to s3" gestoßen, konnte aber keine Anleitung finden, außer dass viele Leute über Fehler berichten, die sie erlebt haben, und Vorschläge zur Behebung machen. Gibt es eine Anleitung?

Bitte lies diesen Artikel, er sollte dich anleiten, wie du die Aufgabe einrichtest.

Du solltest den Konfigurationsbereich für den Abschnitt hooks überprüfen und den Bucket mithilfe von Umgebungsvariablen einrichten, um die Probleme zu vermeiden, von denen du bereits gelesen hast.

2 „Gefällt mir“

Das ist großartig! Vielen Dank!

Das Einzige, was mir dabei nicht bekannt ist, ist ein CDN. Ich sehe, dass wir Amazon CloudFront verwenden können. Ich vermute, dass dies bei den vorherigen S3-Einrichtungsschritten noch nicht konfiguriert wurde. Ich werde nach einer Anleitung suchen, wie man das einrichtet.

Du kannst Cloudfront einrichten, indem du deinen Upload-Bucket als Ursprung verwendest. Sobald es eingerichtet ist, kannst du es als S3-CDN-Link festlegen. Das ist alles, was zu tun ist.

2 „Gefällt mir“

Danke. Ich habe dieses Video zur Einrichtung von Cloudfront befolgt:

Ich führe jetzt rake posts:rebake aus. Da es 84.000 Beiträge sind, wird das etwas Zeit in Anspruch nehmen.

Oh je… versuche es erneut zu starten…

root@discourse-app:/var/www/discourse# rake posts:rebake
Erstelle Markdown für Beiträge im Standard-Theme neu
10027 / 83358 ( 12.0%)/usr/local/bin/rake: Zeile 2: 959 Getötet RAILS_ENV=production sudo -H -E -u discourse bundle exec bin/rake “$@”

Ist gerade wieder passiert… Hast du einen Vorschlag?

root@discourse-app:/var/www/discourse# rake posts:rebake
Rebaking post markdown for ‘default’
12901 / 83359 ( 15.5%)/usr/local/bin/rake: Zeile 2: 2569 Killed RAILS_ENV=production sudo -H -E -u discourse bundle exec bin/rake “$@”

Einige Beiträge beziehen jetzt Inhalte von Cloudfront, also funktioniert das zumindest irgendwie.

Es sieht so aus, als ob das passiert, ohne dass ich ein Rebuild durchführe? Sidekiq arbeitet hart daran, direkt verlinkte Bilder abzurufen.

OK, die Seite wurde neu aufgebaut und die S3-Einrichtungsschritte wurden befolgt.

Alles sollte jetzt von S3 geladen werden. Wie kann ich das überprüfen? Kann ich jetzt das alte Upload-Verzeichnis auf meinem Droplet löschen, um Speicherplatz freizugeben?

Offensichtlich habe ich etwas falsch gemacht. Ich belege jetzt mehr Speicherplatz als zuvor.

Der Upload nach S3 sollte während des Neuaufbaus erfolgen. Du solltest in der Lage sein, die Website-Assets in den S3-Buckets zu durchsuchen, und alle Website-Assets sollten von dem bereitgestellten S3- oder CDN-Link geladen werden. Wenn es nicht funktioniert, ist definitiv etwas mit deiner Konfiguration falsch. Bekommst du irgendwelche Fehlermeldungen?

Ich vermute, dass dann etwas schiefgelaufen sein könnte. Mein Neuaufbau dauerte nicht lange genug, um währenddessen mehrere GB Daten hochzuladen.

EDIT:
Alle Uploads von vor einigen Monaten wurden bereits an S3 gesendet. Es geht mir um die veralteten Daten vor dem Wechsel zu S3, die ich verschieben möchte.

Denken Sie daran, dass Server in Bezug auf die Geschwindigkeit um Größenordnungen schneller sind als Ihre Breitbandverbindung. Das Hochladen der Bilder von Ihrem Host nach S3 sollte nicht länger als ein paar Minuten dauern. Sie sollten jedoch das Rebuild-Protokoll sorgfältig prüfen, um zu bestätigen, ob die Uploads durchgeführt wurden oder nicht. Alternativ können Sie ./discourse-doctor ausführen, um ein Protokoll zur Überprüfung zu erstellen.

Hier ist die Ausgabe des Skripts:

Das Einzige, was mir auffällt, ist im DNS-Bereich fett markiert.

> root@discourse:/var/discourse# ./discourse-doctor
> DISCOURSE DOCTOR Thu May 14 11:35:17 UTC 2020
> OS: Linux discourse 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
> 
> 
> Found containers/app.yml
> 
> ==================== YML SETTINGS ====================
> DISCOURSE_HOSTNAME=
> SMTP_ADDRESS=
> DEVELOPER_EMAILS=
> SMTP_PASSWORD=
> SMTP_PORT=
> SMTP_USER_NAME=
> LETSENCRYPT_ACCOUNT_EMAIL=
> 
> ==================== DOCKER INFO ====================
> DOCKER VERSION: Docker version 18.09.6, build 481bc77
> 
> DOCKER PROCESSES (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
> 
> Discourse container app is running
> 
> 
> ==================== 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']}
> 
> No non-official plugins detected.
> 
> See https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb for the official list.
> 
> ========================================
> Discourse version at : NOT FOUND
> Discourse version at localhost: Discourse 2.5.0.beta4
**> ==================== DNS PROBLEM ====================**
**> This server reports Discourse 2.5.0.beta4 , but  reports NOT FOUND.**
**> This suggests that you have a DNS problem or that an intermediate proxy is to blame.**
**> If you are using Cloudflare, or a CDN, it may be improperly configured.**
> 
> 
> ==================== MEMORY INFORMATION ====================
> RAM (MB): 1008
> 
>               total        used        free      shared  buff/cache   available
> Mem:            985         636          69         121         279          88
> Swap:          2047         775        1272
> 
> ==================== DISK SPACE CHECK ====================
> ---------- OS Disk Space ----------
> Filesystem      Size  Used Avail Use% Mounted on
> /dev/vda1        25G   20G  4.8G  81% /
> 
> ---------- Container Disk Space ----------
> Filesystem      Size  Used Avail Use% Mounted on
> overlay          25G   20G  4.8G  81% /
> /dev/vda1        25G   20G  4.8G  81% /shared
> /dev/vda1        25G   20G  4.8G  81% /var/log
> 
> ==================== DISK INFORMATION ====================
> Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> Disklabel type: gpt
> Disk identifier: 02CBFCD2-7495-4A08-A11B-28E7D3872FAA
> 
> Device      Start      End  Sectors  Size Type
> /dev/vda1  227328 52428766 52201439 24.9G Linux filesystem
> /dev/vda14   2048    10239     8192    4M BIOS boot
> /dev/vda15  10240   227327   217088  106M Microsoft basic data
> 
> Partition table entries are not in disk order.
> 
> ==================== END DISK INFORMATION ====================
> 
> ==================== MAIL TEST ====================
> For a robust test, get an address from http://www.mail-tester.com/
> Or just send a test message to yourself.
> Email address for mail test? ('n' to skip) []: n
> Mail test skipped.
> Replacing: SMTP_PASSWORD
> Replacing: LETSENCRYPT_ACCOUNT_EMAIL
> Replacing: DEVELOPER_EMAILS
> Replacing: DISCOURSE_DB_PASSWORD
> Replacing: Sending mail to
> 
> ==================== DONE! ====================
> Would you like to serve a publicly available version of this file? (Y/n)n
> root@discourse:/var/discourse#

Hier ist der Abschnitt aus app.yml:

> 
>     DISCOURSE_USE_S3: true
>     DISCOURSE_S3_REGION: us-east-1
>     DISCOURSE_S3_ACCESS_KEY_ID: <MY KEY>
>     DISCOURSE_S3_SECRET_ACCESS_KEY: <MY SECRET KEY>
>     DISCOURSE_S3_CDN_URL: 'https://d2hneyr8lp58j4.cloudfront.net'
>     DISCOURSE_S3_BUCKET: brcuploads
>     DISCOURSE_S3_BACKUP_BUCKET: bcruploads-backups
>     DISCOURSE_BACKUP_LOCATION: s3

Sagt mir das, dass ich die DNS-Einstellungen bei DigitalOcean falsch konfiguriert habe? Ich habe den CNAME-Eintrag von Cloudfront hinzugefügt.

Wow, das war nicht hilfreich. Du hast n gewählt für

Kannst du eine öffentlich zugängliche Version erstellen? Du kannst den Link in einer Direktnachricht teilen. Vielleicht kann ich dann überprüfen, ob die Migration zu S3 aus irgendeinem Grund erfolgreich war oder gescheitert ist.

Ich schicke dir die URL per Direktnachricht.

1 „Gefällt mir“