Ruby lässt sich nicht aktualisieren, daher schlägt ./launcher rebuild app immer wieder fehl

Hallo,

Ich habe kürzlich ein Server-Image migriert, auf dem Docker Discourse installiert ist.

Ich kann alles zum Laufen bringen, muss aber das SSL-Zertifikat neu ausstellen.

Da der alte Server SSL konfiguriert hatte, folge ich dem Vorschlag in diesem Leitfaden und führe

./launcher rebuild app

aus.

Dies veranlasst Docker, eine Reihe von Dingen herunterzuladen und zu aktualisieren. Das aktuelle Image ist Discourse 2.6.0.beta3 - https://github.com/discourse/discourse version 29f7e0689f61c5d85960a88f741ac3abced12d3e.

Beim ersten Ausführen erhielt ich die Meldung zur Postgres-Aktualisierung, also habe ich wie angewiesen erneut ./launcher rebuild app ausgeführt.

Jetzt schlägt es jedes Mal fehl, vermutlich aufgrund dieses Fehlers mit einer unzureichenden Ruby-Version:

FEHLER: Fehler beim Installieren von bundler:
bundler-2.5.3 erfordert Ruby-Version >= 3.0.0. Die aktuelle Ruby-Version ist 2.7.2.137.

Hier ist die vollständige Ausgabe:

FEHLGESCHLAGEN

--------------------

Pups::ExecError: cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) failed with return #<Process::Status: pid 304 exit 1>

Ort des Fehlers: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec fehlgeschlagen mit den Parametern {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\\\"\\\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}

2ad07f29ace1b5396d9944fc4fc5a1ec712727280e8bb3df760367d08bfe6a25

** FEHLER BEIM BOOTSTRAPPING ** Bitte scrollen Sie nach oben und suchen Sie nach früheren Fehlermeldungen, es kann mehr als eine geben.

Ich hätte erwartet, dass Docker die Ruby-Version nach Bedarf aktualisiert?

Ich habe versucht, mich manuell im Container anzumelden und RVM zu installieren und Ruby v3+ zu aktivieren, aber ich erhalte immer noch dieselbe Fehlermeldung.

Ich bin an diesem Punkt etwas ratlos und frage mich, ob die installierte Version einfach zu alt ist, um mit ./launcher aktualisiert zu werden?

Jeder Rat wäre sehr willkommen!

Nur eine Anmerkung, das ist nicht der Fehler, die eigentlichen Fehler werden weiter oben sein.

2 „Gefällt mir“

Ich empfehle, mit einem neuen Image zu beginnen und eine Standardinstallation durchzuführen.

1 „Gefällt mir“

Danke Jay, ich befürchtete, das wäre der einzige Weg nach vorn

Ich schätze, ich muss nur einen Weg finden und hoffe, dass ich die Datenbank kopieren kann, damit nichts verloren geht

Versuchen Sie, alle Ihre Pakete mit apt upgrade zu aktualisieren

Es ist nicht schwer. Sie können einfach ein Backup erstellen oder Eine Discourse-Site mit rsync auf einen anderen VPS verschieben. Sie haben nichts zu verlieren, da Ihre bestehende Site intakt bleibt. Es ist der sicherste Weg nach vorne.

1 „Gefällt mir“

Ich habe alles, was ich konnte, aktualisiert, einschließlich der Ubuntu-Version des Servers, und bestätigt, dass Ruby v3.1 läuft.

Das Problem ist, dass ich vermute, dass es die Ruby-Version ist, die im Container benötigt wird, der von Docker gesteuert wird, und ich kann sie nicht aktualisieren.

Ich konnte eine saubere Version installieren und zum Laufen bringen 3.3.0.beta3-dev

Als ich jedoch das Backup von der alten Website wiederhergestellt habe, sieht es nicht so aus, als wäre es korrekt wiederhergestellt worden, und die Anmeldeseite funktioniert jetzt nicht mehr. Wenn ich mir die JS-Konsole ansehe, gibt es einen Discourse is not defined-Fehler, jedes Mal, wenn ich auf die Anmelde-/Registrierungsschaltflächen klicke. Ich vermute, dass es aufgrund des großen Versionsunterschieds keine einfache Wiederherstellung eines 2.6.0-Backups auf einer sauberen 3.3.0-Installation ist.

Das Verschieben von allem auf einen neuen Server funktioniert für mich einfach nicht, da ich ./launcher rebuild app nicht ausführen kann, ohne dass dieser Ruby-Fehler mich jedes Mal blockiert.

Wenn Sie ein Upgrade über eine so große Versionsdifferenz durchführen, ist es sehr wahrscheinlich, dass Ihre Themes beschädigt sind. Versuchen Sie den abgesicherten Modus.

3 „Gefällt mir“

Technisch gesehen gibt es noch kein 3.3.0, wir befinden uns noch in den Betas.

1 „Gefällt mir“

Danke für die Information, aber leider werde ich, wenn ich versuche, auf /safe-mode zuzugreifen, wieder zur /login URL weitergeleitet.\n\nIch glaube, ich werde eine Neuinstallation versuchen und von vorne anfangen.

Ich habe das offizielle Discourse-Image verwendet, aber ich schätze, das installiert einfach die neueste Version, egal ob es sich um eine Beta handelt. Oder gibt es eine Möglichkeit, eine stabile oder spezifische Version anzugeben?

Ja, das können Sie. Bearbeiten Sie app.yml bei einer frischen Installation, bevor Sie Discourse erstellen (da Sie nicht downgraden können). Wählen Sie den Tag von GitHub. Ich musste dies vor einiger Zeit tun, als ich auf eine alte Version wiederherstellen musste, bevor ich auf die neueste aktualisierte.

Jetzt erstelle ich ein Image der funktionierenden Version, bevor ich ein Upgrade durchführe, falls etwas schiefgeht.

Vielen Dank, ich weiß die Hilfe zu schätzen!

Die gute Nachricht ist, dass ich herausgefunden habe, wie ich eine ältere Version von discourse_docker und die gleiche Version von Discourse installieren kann, indem ich die Datei app.yml ändere.

Die schlechte Nachricht ist, dass ich kurz vor dem Ende der Installation auf einen weiteren Fehler gestoßen bin.

--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' fehlgeschlagen mit Rückgabe #<Process::Status: pid 14351 exit 1>
Ort des Fehlers: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec fehlgeschlagen mit den Parametern {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

Ich muss das noch etwas genauer untersuchen, es scheint eher Ruby/Rails-bezogen im Container selbst zu sein.

Versuchen Sie https://forum.example.com/login?safe_mode=no_themes%2Cno_plugins

2 „Gefällt mir“