Problème de mise à jour de discourse après un certain temps - ÉCHEC DE LA MISE À NIVEAU DE POSTGRES

Je n’ai pas mis à jour Discourse depuis un certain temps et j’ai essayé de le faire aujourd’hui. Dans mon navigateur à admin/update, j’obtiens le message que tout est à jour, mais il affiche la version v2.4.0.beta2 +17 et je comprends que la dernière version est 3.6.0.beta2.

J’ai donc essayé de mettre à jour via le terminal en utilisant ./launcher rebuild app et la mise à jour a échoué, avec le message UPGRADE OF POSTGRES FAILED. J’ai lu la page de support et suivi toutes les instructions qui s’y trouvent et dans des publications similaires concernant les problèmes de mise à jour de POSTGRES, mais je n’ai pas réussi à résoudre le problème.

J’ai consulté les journaux dans /var/discourse/shared/standalone/log/var-log/postgres et j’ai trouvé des messages d’erreur répétés, tels que celui-ci :

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.

Une chose que je ne comprends pas, c’est qu’il n’y a pas de répertoire /shared/postgres_data - mais plutôt /shared/standalone/postgres_data.

Le message d’erreur du terminal est inclus ci-dessous. J’apprécierais tout conseil pour que la mise à jour fonctionne.

Merci,

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.

Vous devez reconstruire à l’invite de commande, deux fois. Voir Mise à jour PostgreSQL 15

Hmm. Il est possible que vous ayez une liaison non standard dans votre app.yml. Votre système d’exploitation est très probablement obsolète également. Je vous recommande de passer à une nouvelle VM et d’y restaurer la base de données. Voir Déplacer un site Discourse vers un autre VPS avec rsync.

Ne copiez pas la base de données. Il est plus facile de restaurer une sauvegarde.

Merci pour votre réponse Jay. OK, j’ai créé une nouvelle VM et suivi les étapes de l’article sous Préparer un nouveau VPS. Maintenant, je ne suis pas sûr de ce qu’il faut faire - dois-je continuer avec les étapes sous Copier les fichiers sur le nouveau VPS ? Je me demande si je fais une nouvelle installation de Discourse puis que je restaure la base de données de l’ancienne installation, ou si je copie les fichiers Discourse de l’ancienne installation ? Je pense que si je copie simplement les fichiers Discourse de l’ancienne VM, les problèmes pourraient être reproduits sur la nouvelle VM, mais je comprends probablement mal quelque chose.

Puisqu’il est si ancien, je vous recommanderais de faire une installation propre et de ne copier que la sauvegarde sur le nouveau serveur.

  • sauvegarder l’ancien site
  • rsync -rav oldsite:/var/discourse/shared/backups /var/discourse/shared/
  • basculer le DNS vers le nouveau serveur
  • ./discourse-setup (obtenez vos valeurs SMTP à partir de l’ancien app.yml) sur le nouveau serveur
  • ./launcher enter app
  • discourse backup (cela créera le répertoire de sauvegarde par défaut avec les bonnes permissions)
  • discourse enable_restore
  • discourse restore (cela affichera les sauvegardes disponibles)
  • copier-coller la commande de restauration
    Une version plus compliquée consisterait à synchroniser tout sauf la base de données comme ceci :
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

Merci encore Jay. J’ai réussi à faire une nouvelle installation de Discourse et à restaurer la sauvegarde de l’ancienne VM en suivant vos instructions et tout semble bien fonctionner. Il faut que je me souvienne de faire des mises à jour plus souvent !

2 « J'aime »

Génial ! C’est super. Je suis content que cela ait fonctionné !

Si ma publication a été la solution, veuillez cliquer sur la :check_mark: afin que le sujet soit clôturé.