Probleme beim Aktualisieren von Discourse nach einiger Zeit – UPGRADE VON POSTGRES FEHLGESCHLAGEN

Ich habe Discourse schon seit einiger Zeit nicht mehr aktualisiert und habe heute versucht, dies zu tun. In meinem Browser unter admin/update erhalte ich die Meldung, dass alles auf dem neuesten Stand ist, aber es wird Version v2.4.0.beta2 +17 angezeigt, und ich gehe davon aus, dass die neueste Version 3.6.0.beta2 ist.

Also habe ich versucht, über das Terminal mit ./launcher rebuild app zu aktualisieren, aber das Update schlug mit der Meldung UPGRADE OF POSTGRES FAILED fehl. Ich habe die Support-Seite und alle Anweisungen dort und in ähnlichen Beiträgen zu POSTGRES-Update-Problemen gelesen, konnte das Problem aber nicht beheben.

Ich habe mir die Protokolle unter /var/discourse/shared/standalone/log/var-log/postgres angesehen und wiederholte Fehlermeldungen gefunden, wie diese:

2025-11-19 21:42:13.815 GMT [242] LOG: skipping missing configuration file “/shared/postgres_data/postgresql.auto.conf”
2025-11-19 21:42:13.816 UTC [242] FATAL: data directory “/shared/postgres_data” has wrong ownership
2025-11-19 21:42:13.816 UTC [242] HINT: The server must be started by the user that owns the data directory.

Was ich nicht verstehe, ist, dass es kein Verzeichnis /shared/postgres_data gibt – sondern /shared/standalone/postgres_data.

Die Fehlermeldung aus dem Terminal ist unten beigefügt. Ich wäre dankbar für jeden Hinweis, um das Update zum Laufen zu bringen.

Danke,

Nick


Success. You can now start the database server using:



    /usr/lib/postgresql/13/bin/pg_ctl -D /shared/postgres_data_new -l logfile start



Ign:1 
 buster-pgdg InRelease

Ign:2 
 buster/updates InRelease

Err:3 
 buster-pgdg Release

  404  Not Found [IP: 151.101.67.52 80]

Err:4 
 buster/updates Release

  404  Not Found [IP: 151.101.2.132 80]

Ign:5 
 buster InRelease

Ign:6 
 buster-updates InRelease

Err:7 
 buster Release

  404  Not Found [IP: 151.101.2.132 80]

Err:8 
 buster-updates Release

  404  Not Found [IP: 151.101.2.132 80]

Get:9 https://deb.nodesource.com/node_15.x buster InRelease [4,584 B]

Reading package lists...

Reading package lists...

Building dependency tree...

Reading state information...

The following additional packages will be installed:

  postgresql-client-10

Suggested packages:

  postgresql-doc-10

The following NEW packages will be installed:

  postgresql-10 postgresql-client-10

0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.

Need to get 6,441 kB of archives.

After this operation, 30.6 MB of additional disk space will be used.

Err:1 
 buster-pgdg/main amd64 postgresql-client-10 amd64 10.17-1.pgdg100+1

  404  Not Found [IP: 151.101.195.52 80]

Err:2 
 buster-pgdg/main amd64 postgresql-10 amd64 10.17-1.pgdg100+1

  404  Not Found [IP: 151.101.195.52 80]

Stopping PostgreSQL 13 database server: main.



check for "/usr/lib/postgresql/10/bin" failed: No such file or directory



Failure, exiting

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

UPGRADE OF POSTGRES FAILED

Please visit 
 for support.



You can run ./launcher start app to restart your app in the meanwhile



FAILED

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

Pups::ExecError: /root/upgrade_postgres failed with return #<Process::Status: pid 50 exit 1>

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

exec failed with the params "/root/upgrade_postgres"

9f400ba2cca88f79359496e95027cf26c2d5a3672837c5594793cf723585407b

** 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.

Sie müssen zweimal an der Kommandozeile neu erstellen. Siehe PostgreSQL 15 Update

Hmm. Es ist möglich, dass Sie eine nicht standardmäßige Bindung in Ihrer app.yml haben. Ihr Betriebssystem ist höchstwahrscheinlich auch veraltet. Ich empfehle, auf eine neue VM umzuziehen und die Datenbank dort wiederherzustellen. Siehe Eine Discourse-Seite mit rsync auf einen anderen VPS verschieben.

Kopieren Sie die Datenbank nicht. Es ist einfacher, ein Backup wiederherzustellen.

Danke für deine Antwort, Jay. Okay, ich habe eine neue VM erstellt und die Schritte im Artikel unter Neuen VPS vorbereiten befolgt. Jetzt bin ich mir nicht sicher, was ich tun soll – soll ich mit den Schritten unter Dateien auf den neuen VPS kopieren fortfahren? Ich frage mich, ob ich eine Neuinstallation von Discourse durchführe und dann die Datenbank von der alten Installation wiederherstelle, oder ob ich die Discourse-Dateien von der alten Installation kopiere. Ich denke, wenn ich einfach die Discourse-Dateien von der alten VM kopiere, könnten die Probleme auf der neuen VM repliziert werden, aber wahrscheinlich verstehe ich etwas falsch.

Da es so alt ist, würde ich empfehlen, einfach eine Neuinstallation durchzuführen und nur das Backup auf den neuen Server zu kopieren.

  • Backup der alten Seite
  • rsync -rav oldsite:/var/discourse/shared/backups /var/discourse/shared/
  • DNS auf neuen Server umstellen
  • ./discourse-setup (SMTP-Werte aus der alten app.yml übernehmen) auf dem neuen Server
  • ./launcher enter app
  • discourse backup (dies erstellt das Standard-Backup-Verzeichnis mit den richtigen Berechtigungen)
  • discourse enable_restore
  • discourse restore (dies listet die verfügbaren Backups auf)
  • Den Wiederherstellungsbefehl kopieren und einfügen
    Eine kompliziertere Version wäre, alles außer der Datenbank per rsync zu übertragen, wie folgt:
rsync -rav --numeric-ids ALT-IP:/var/discourse/shared/ /var/discourse/shared/ --exclude log --exclude postgres_* --exclude redis_data --exclude letsencrypt --exclude ssl --exclude log --exclude tmp --exclude state

Vielen Dank noch einmal, Jay. Ich habe es geschafft, eine Neuinstallation von Discourse durchzuführen und das Backup von der alten VM mit deinen Anweisungen wiederherzustellen, und alles scheint gut zu funktionieren. Muss daran denken, öfter zu aktualisieren!

2 „Gefällt mir“

Großartig! Das ist fantastisch. Schön, dass es funktioniert hat!

Wenn mein Beitrag die Lösung war, klicken Sie bitte auf das :check_mark:, damit das Thema geschlossen wird.