Problemi nell'aggiornare discourse dopo un po' di tempo - AGGIORNAMENTO DI POSTGRES FALLITO

Non aggiorno Discourse da parecchio tempo e ho provato a farlo oggi. Nel mio browser, in admin/update, ricevo il messaggio che tutto è aggiornato, ma mostra la versione v2.4.0.beta2 +17 e capisco che la versione più recente è la 3.6.0.beta2.

Quindi ho provato ad aggiornare tramite terminale usando ./launcher rebuild app e l’aggiornamento è fallito, con il messaggio UPGRADE OF POSTGRES FAILED. Ho letto la pagina di supporto e seguito tutte le istruzioni lì e in post simili sui problemi di aggiornamento di POSTGRES, ma non sono riuscito a risolvere il problema.

Ho controllato i log in /var/discourse/shared/standalone/log/var-log/postgres e ho trovato messaggi di errore ripetuti, come questo:

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.

Una cosa che non capisco è che non esiste la directory /shared/postgres_data - ma piuttosto /shared/standalone/postgres_data.

Il messaggio di errore dal terminale è incluso di seguito. Sarei grato per qualsiasi indicazione per far funzionare l’aggiornamento.

Grazie,

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.

Devi ricostruire dalla riga di comando, due volte. Vedi Aggiornamento a PostgreSQL 15

Hmm. È possibile che tu abbia un bind non standard nel tuo app.yml. È quasi certo che anche il tuo sistema operativo sia obsoleto. Ti consiglio di passare a una nuova VM e ripristinare il database lì. Vedi Spostare un sito Discourse su un altro VPS con rsync.

Non copiare il database. È più facile ripristinare un backup.

Grazie per la tua risposta, Jay. OK, ho creato una nuova VM e ho seguito i passaggi nell’articolo sotto Prepara nuova VPS. Ora non sono sicuro di cosa fare: devo continuare con i passaggi sotto Copia file sulla nuova VPS? Mi chiedo se sto facendo un’installazione pulita di Discourse e poi ripristinando il database dalla vecchia installazione, o copiando i file di Discourse dalla vecchia installazione? Sto pensando che se copio semplicemente i file di Discourse dalla vecchia VM, i problemi potrebbero essere replicati sulla nuova VM, ma probabilmente sto fraintendendo qualcosa.

Dato che è così vecchio, ti consiglierei di fare semplicemente un’installazione pulita e copiare solo il backup sul nuovo server.

  • eseguire il backup del vecchio sito
  • rsync -rav oldsite:/var/discourse/shared/backups /var/discourse/shared/
  • reindirizzare il DNS al nuovo server
  • ./discourse-setup (recupera i valori SMTP dal vecchio app.yml) sul nuovo server
  • ./launcher enter app
  • discourse backup (questo creerà la directory di backup predefinita con le autorizzazioni corrette)
  • discourse enable_restore
  • discourse restore (questo stamperà i backup disponibili)
  • copia-incolla il comando di ripristino

Una versione più complicata sarebbe quella di usare rsync per tutto tranne che per il database in questo modo:

rsync -rav --numeric-ids OLD-IP:/var/discourse/shared/ /var/discourse/shared/ --exclude log --exclude postgres_* --exclude redis_data --exclude letsencrypt --exclude ssl --exclude log --exclude tmp --exclude state

Grazie ancora Jay. Sono riuscito a fare una nuova installazione di Discourse e a ripristinare il backup dalla vecchia VM usando le tue istruzioni e sembra che tutto funzioni bene. Devo ricordarmi di aggiornare più spesso!

2 Mi Piace

Fantastico! È fantastico. Sono contento che abbia funzionato!

Se il mio post è stata la soluzione, per favore clicca su :check_mark: in modo che l’argomento venga chiuso.