Problem bei der Aktualisierung des Discourse Forums


Hallo zusammen!
Ich habe versucht, das Discourse-Forum über den Link im Admin-Panel zu aktualisieren, und habe diese Fehlermeldung erhalten. Das gesamte Forum ist verschwunden. Was soll ich jetzt tun, um das Update zurückzusetzen? Vielen Dank, wenn mir jemand helfen kann. :sob:

1 „Gefällt mir“

Tatsächlich bedeutet dies, dass Ihr Forum aktualisiert wird – es sei denn, Sie unterbrechen das Update, bevor es abgeschlossen ist.

Versuchen Sie, Ihr Forum unter https://yoursite.com/latest.json zu besuchen. Wenn etwas zurückgegeben wird, warten Sie 10 Minuten und prüfen Sie, ob sich das Problem von selbst löst.

1 „Gefällt mir“

Vielen Dank für Ihre Antwort. Ich habe die von Ihnen angegebene Methode ausprobiert und sie gibt 502 Bad Gateway nginx zurück.

Es sieht so aus, als müssten Sie möglicherweise ./launcher rebuild app ausführen.

Ich habe versucht, ./launcher rebuild app auszuführen, und folgende Fehlermeldungen erhalten:

FAILED

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

Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development' failed with return #<Process::Status: pid 340 exit 5>

Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params {"cd"=>"$home", "hook"=>"bundle_exec", "cmd"=>["su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development'"]}

6e9e60bd6b6113cdcb001127fd2a24fe86f2a1658bf24500e5e2b720fd793510

** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

./discourse-doctor may help diagnose the problem.

und ich bin nach oben gescrollt und habe einige mögliche Fehlerprotokolle gefunden:

1)200:M 25 Jun 2023 16:00:16.252 # Failed listening on port 6379 (TCP), aborting.

2)[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag

3)Bundler::PathError: The path `/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/sprockets-f4d3dae71ef2` does not exist.

4)Bundler::InstallError: sass-embedded-1.63.6-x86_64-linux requires rubygems version >= 3.3.22, which is incompatible with the current version, 3.2.18

Ist es hilfreich, dass jemand anderes kürzlich ein ähnliches Problem hatte?

Vielen Dank für Ihre Antwort, aber ich glaube, es ist nicht dasselbe Problem, mein Server ist in Deutschland. Ich benutze das Discourse-Docker-Image für meinen Server. Was soll ich tun, wenn ./launcher rebuild app nicht funktioniert?

1 „Gefällt mir“

Sieht ähnlich aus wie
Wiederherstellung aufgrund von Inkompatibilität von Ruby-Gems fehlgeschlagen

1 „Gefällt mir“

Vielen Dank für Ihre Hilfe! Ja, es sieht ähnlich aus und ich habe Folgendes versucht:

my server:/var/discourse**$ git pull

fatal: Not a git repository: ../.git/modules/discourse_docker

Sollte ich etwas tun, bevor ich git pull ausführe? Ich habe dies in meinem Server-Verzeichnis /var/discourse ausgeführt.

Es scheint möglich, dass Sie eine ungewöhnliche Konfiguration haben – handelt es sich um eine Standardinstallation?

1 „Gefällt mir“

Ich habe die Dokumente des letzten Programmierers für mich gelesen und darin steht, dass viele Dinge im Web hinter nginx laufen und Discourse ebenfalls hinter nginx gehostet werden muss. Die Standardinstallation funktioniert in meiner Situation nicht.

Und hier ist, wie er im Dokument sagte und wie er es tat:

Discourse läuft in einem Docker-Container. Es erfordert jedoch eine spezielle Konfiguration, nicht über eine docker-compose.yml oder eine .conf-Datei.

Das GitHub-Repository discourse-project/ zum Konfigurieren und Erstellen des Docker-Images finden Sie hier. Ignorieren Sie das nette und saftige “discourse-setup”-Programm, das sie anbieten, das wird hier nicht funktionieren. Wir müssen die App selbst konfigurieren.

  1. Klonen Sie discourse_docker nach /var/discourse: git clone https://github.com/discourse/discourse_docker.git /var/discourse
  2. Gehen Sie in den Ordner und verwenden Sie eine bereitgestellte Beispielkonfiguration: cd /var/discourse &amp;&amp; cp samples/standalone.yml containers/app.yml
  3. Bearbeiten Sie dann die Datei containers/app.yml (z. B. mit sudo nano)
  • Änderungen wurden am Hosting-Abschnitt, den SMTP-Einstellungen für E-Mails und – wichtig – am Expose-Abschnitt vorgenommen, sodass nur ein ungenutzter Port nach außen freigegeben wird.
  • Um Discourse unter einem Pfad wie “/forum” auszuführen, waren weitere Änderungen erforderlich, wie hier beschrieben.
  • Einige Probleme treten auch bei der E-Mail-Authentifizierung auf:
    • Die E-Mail, die E-Mails sendet, ist hier “server’s email”. Discourse erwartet jedoch, dass die E-Mail dieselbe Domain wie sein Host hat, nämlich “server’s email”.
      • Lösung hier beschrieben.
    • Verwenden Sie auch “DISCOURSE_SMTP_AUTHENTICATION: login” als weitere Umgebungsvariable. Warum auch immer . . .
  1. Bauen Sie dann die App aus dem Verzeichnis /var/discourse mit sudo ./launcher bootstrap app auf. Das dauert ziemlich lange.
  2. Dann können Sie den Discourse-Container möglicherweise mit sudo ./launcher start app starten.
1 „Gefällt mir“

Das sind gute Notizen.

git pull;./launcher rebuild app sollte funktionieren.

Von welcher Version aktualisierst du?

Ist das Betriebssystem veraltet? (cat /etc/issue)

Ist die Festplatte voll? (df - h)

1 „Gefällt mir“

Vielen Dank für Ihre Antwort! Die Version, von der ich aktualisiere, ist 2.8.0.beta6 und das letzte Update war am 28.09.2021.

Nachdem ich cat /etc/issue ausgeführt habe, erhielt ich:
Debian GNU/Linux 9 \\n \\l

Und hier sind die Informationen gemäß ./discourse-doctor

==================== SPEICHERINFORMATIONEN ====================
RAM (MB): 4050

              gesamt      benutzt      frei      shared  buff/cache   verfügbar
Arbeitsspeicher:           3955         427        1152          63        2375        3182
Swap:             0           0           0

==================== FESTPLATTENSATZPRÜFUNG ====================
---------- OS Festplattenspeicher ----------
Dateisystem      Größe  Benutzt Verfügbar Ben% Eingehängt auf
/dev/sda1         63G   27G   34G  45% /

==================== FESTPLATTENINFORMATIONEN ====================
Festplatte /dev/sda: 64 GiB, 68719476736 Bytes, 134217728 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnung: dos
Festplattenbezeichner: 0xc0b6220c

Gerät     Boot Start       Ende   Sektoren Größe Id Typ
/dev/sda1        2048 134217727 134215680  64G 83 Linux

Sie könnten Swap hinzufügen.

Sehen Sie sich auch das PostgreSQL 13 Update an.

Haben Sie mehrmals neu kompiliert?

Siehe auch Debian | endoflife.date

Sie müssen wirklich alles auf eine neue VM mit einem unterstützten Betriebssystem verschieben. Sie müssen also auch alles andere, was Sie laufen haben, aufrüsten.

1 „Gefällt mir“

Hallo Jammy, nach mehrmaligen fehlgeschlagenen Installationen habe ich festgestellt, dass dies durch das Speicherlimit des Servers und das Netzwerk verursacht wurde. Ich schlage vor, dass Sie einen Server mit 4 GB Speicher verwenden und normalen Zugriff auf GitHub und Ruby haben.

Dieser Fehler stört mich – sehen Sie ihn immer noch? Der Docker-Container sollte jetzt 3.2.0 ausführen.

Aber wenn Ihr /var/discourse kein Git-Verzeichnis ist, wurde etwas getan, das von den Anweisungen abweicht. Es verhindert ein Update und verursacht die Diskrepanz bei der Ruby-Version. Bei mir:

/var/discourse# git status
On branch main
Your branch is up to date with 'origin/main'.

Wir sehen auch ein .git-Verzeichnis:

# ls -a /var/discourse/
.     .github     README.md  cids              discourse-setup  launcher     scripts    tests
..    .gitignore  bin        containers        image            rebuild.log  shared
.git  LICENSE     c          discourse-doctor  index.html       samples      templates

Bearbeiten: Aber es stimmt, wenn Sie ein zu altes Betriebssystem haben, müssen Sie etwas tun, um Discourse auf einem neuen Betriebssystem zu installieren und Ihr Backup wiederherzustellen, und auch alle zusätzlichen Dinge tun, die für Ihre spezielle Situation erforderlich sein könnten.

Wenn Ihr Server mehr tut, als nur Discourse auszuführen, ist das eine zusätzliche Komplikation. Möglicherweise benötigen Sie lokale Expertise.

3 „Gefällt mir“

Ich habe ein vergleichbares Problem mit Ruby Gems usw.
Es war eine frische Installation auf einem neuen Server.

Vielen Dank für Ihre Hilfe, ich werde Ihre Vorschläge nacheinander ausprobieren, um das Problem zu beheben. Wenn es Feedback gibt (gut oder schlecht), werde ich es im Forum posten. Nochmals vielen Dank!

1 „Gefällt mir“

Ich habe die neue Version von Discourse erfolgreich installiert. Ich habe einfach die Anweisungen im obigen Dokument befolgt und es hat für mich funktioniert. Aber jetzt habe ich Probleme, aus dem Backup wiederherzustellen.
Ich habe Restore a backup from the command line ausprobiert, aber Folgendes erhalten:

root@my_server:/var/www/discourse# discourse restore my_server-2023-06-20-033008-v20210922064213.tar.gz
Starting restore: my_server-2023-06-20-033008-v20210922064213.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /var/www/discourse/tmp/restores/default/2023-06-29-113408 exists...
Copying archive to tmp directory...
Unzipping archive, this may take a while...
EXCEPTION: /var/www/discourse/lib/discourse.rb:137:in `exec': Failed to decompress archive.

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
/var/www/discourse/lib/discourse.rb:171:in `execute_command'
/var/www/discourse/lib/discourse.rb:137:in `exec'
/var/www/discourse/lib/discourse.rb:33:in `execute_command'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:78:in `decompress_archive'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:23:in `decompress'
/var/www/discourse/lib/backup_restore/restorer.rb:42:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/base.rb:485:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Trying to rollback...
There was no need to rollback
Cleaning stuff up...
Removing tmp '/var/www/discourse/tmp/restores/default/2023-06-29-113408' directory...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

Was soll ich jetzt tun?

Mit Ihrer Sicherungsdatei stimmt etwas nicht. Sie ist möglicherweise nur abgeschnitten.

1 „Gefällt mir“