Build-Fehler: MaxMind-Geolokalisierungsdatenbank kann nicht heruntergeladen werden

Hallo!
Ich habe vor 2 Tagen Discourse auf einer frischen DigitalOcean-Maschine gemäß dieser Anleitung installiert, und alles lief problemlos.
Gestern habe ich versucht, die App erneut auf einer neuen DigitalOcean-Maschine (Ubuntu 18.03, 1 GB) zu installieren. Die VPS-Instanzen sind identisch, aber diesmal hat es nicht funktioniert.

Ich habe ./discourse-setup ausgeführt, die Fragen beantwortet und gewartet. Mein Terminal frierte an der Zeile #<Thread:0x00005621595f3360@/var/www/discourse/lib/tasks/assets.rake:215 run> terminated with exception (report_on_exception is true): ein. Der einzige Weg, das Terminal wieder freizugeben, bestand darin, die SSH-Verbindung zu schließen und erneut herzustellen.

Ich habe nur grundlegende Kenntnisse über Linux.
Das Aktualisieren des Systems mit apt-get hat nichts geändert.
Ich habe herausgefunden, dass der Installer bei der Aufgabe assets:precompile hängen bleibt. Die Ausnahme wird in /var/www/discourse/lib/tasks/assets.rake:227:in rescue in block (2 levels) in <top (required)> ausgelöst: undefined local variable or method 'name' for main:Object (NameError).
Das Setup schreibt binäre Daten in die Konsole, weshalb es einfriert. Bei genauerer Untersuchung habe ich festgestellt, dass ein Fehler 403 auftritt, aber ich kann die Ziel-URL nicht finden.

Hat jemand einen Tipp?

Welchen Plan hast du in Bezug auf RAM und CPU genutzt?

  • 1 GB RAM
  • 1 gemeinsamer vCPU mit 2,3 GHz
  • 25 GB SSD-ROM

Könntest du den vollständigen Backtrace hier einfügen? Hast du außerdem benutzerdefinierte Plugins?

Ich habe das Setup im Screen ausgeführt und aufgezeichnet. Anschließend habe ich das Protokoll mit xdd geöffnet und zwei Abschnitte mit Binärdaten durch <BINARY_DATA> ersetzt.

#<Thread:0x000055c07c7e8cf8@/var/www/discourse/lib/tasks/assets.rake:215 run> terminated with exception (report_on_exceptionis true):
/var/www/discourse/lib/tasks/assets.rake:227:in `rescue in block (2 levels) in <top (required)>':undefined local variable or method`name' for main:Object (NameError)
from /var/www/discourse/lib/tasks/assets.rake:216:in `block (2 levels) in <top (required)>' /var/www/discourse/lib/file_helper.rb:55:in `block in download':
403 Error:<BINARY_DATA> (OpenURI::HTTPError) <BINARY_DATA>
from /var/www/discourse/lib/final_destination.rb:400:in `block (3 levels) in safe_get'
from /var/www/discourse/lib/final_destination.rb:399:in `catch'
from /var/www/discourse/lib/final_destination.rb:399:in `block (2 levels) in safe_get'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1518:in `block in transport_request'
from /usr/local/lib/ruby/2.6.0/net/http/response.rb:165:in `reading_body'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1517:in `transport_request'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1479:in `request'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/net_patches.rb:9:in `block in request_with_mini_profiler'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiling_methods.rb:39:in `step'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/net_patches.rb:8:in `request_with_mini_profiler'
from /var/www/discourse/lib/final_destination.rb:371:in `block in safe_get'
from /var/www/discourse/lib/final_destination.rb:415:in `block in safe_session'
from /usr/local/lib/ruby/2.6.0/net/http.rb:920:in `start'
from /usr/local/lib/ruby/2.6.0/net/http.rb:605:in `start'
from /var/www/discourse/lib/final_destination.rb:412:in `safe_session'
from /var/www/discourse/lib/final_destination.rb:363:in `safe_get'
from /var/www/discourse/lib/final_destination.rb:129:in `get'
from /var/www/discourse/lib/file_helper.rb:47:in `download'
from /var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download'
from /var/www/discourse/lib/tasks/assets.rake:218:in `block (3 levels) in <top (required)>'
from /var/www/discourse/lib/tasks/assets.rake:217:in `each'
from /var/www/discourse/lib/tasks/assets.rake:217:in `block (2 levels) in <top (required)>'

Der Installer führte anschließend einige Aufgaben ohne Probleme aus. Am Ende des Vorgangs erscheint Folgendes:

FAILED--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake assets:precompile'
failed with return #<Process::Status: pid 384 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'..exec
failed with the params {"cd"=>"$home", "hook"=>"assets_precompile",
"cmd"=>["su discourse -c 'bundle exec rake assets:precompile'"]}
f534324ceedf6b1a8a5cc89f38e1c12c2418fb69c71f93f21c0dd2f5ef51483d
** FAILED TO BOOTSTRAP ** bitte scrollen Sie nach oben und suchen Sie nach früheren Fehlermeldungen; es kann mehr als eine geben
./discourse-doctor kann bei der Diagnose des Problems helfen.

Der Befehl ./discourse-doctor hilft nicht. Der Doctor erkennt, dass die App nicht läuft, versucht, sie neu aufzubauen, und hängt ebenfalls fest.
Ich habe keine Plugins installiert, da ich diese App auf diesem Rechner noch nie ausgeführt habe :frowning:

Ihre IP-Adresse ist vom Herunterladen der MaxMind DB ausgeschlossen.

Bearbeiten Sie die Datei app.yml und fügen Sie unter dem Schlüssel env die Zeile DISCOURSE_REFRESH_MAXMIND_DB_DURING_PRECOMPILE_DAYS: 365 hinzu. Versuchen Sie danach erneut einen Neuaufbau.

Das funktioniert! :boom::fire::tada:
Vielen, vielen Dank! Muss ich diese Zeile in app.yml lassen oder nach dem ersten erfolgreichen Aufruf löschen?

Es wird erneut fehlschlagen, sobald Sie es entfernen, da Ihr Server keine neuere Datenbank herunterladen kann.

Die Einstellung auf 365 bedeutet effektiv, dass Sie ein Update erhalten, wenn wir ein neues Basis-Image veröffentlichen, was zweimal pro Jahr geschieht.

Wir sollten hier definitiv eine bessere Fehlermeldung haben, dieser Fehler ist völlig unverständlich.