ERREUR : Vous utilisez une ancienne version de l'image Discourse

Bonjour, c’est mon premier sujet ! Je m’appelle Nelly Eggsy et je construis un site web en utilisant Ghost et Discourse.

Je me contente généralement de lire les forums et de parcourir les sujets dans l’ombre. Si je suis bloquée, je cherche une réponse dans les forums, ce qui fonctionne habituellement. Cependant, je suis actuellement bloquée et j’ai besoin d’aide.

Après avoir mis à jour Discourse via l’interface d’administration, j’ai rencontré le message suivant :

Vous exécutez une ancienne version de l’image Discourse.
Les mises à jour via l’interface web sont désactivées tant que vous n’avez pas exécuté la dernière image.

Pour ce faire, connectez-vous à votre serveur via SSH et exécutez :

    cd /var/discourse
    git pull
    ./launcher rebuild app

J’ai suivi le guide sur la façon de mettre à jour Discourse et l’image Docker vers la dernière version en utilisant des commandes console. Cependant, je n’ai pas réussi la mise à jour en raison d’une erreur.

Voici le message d’erreur que j’obtiens lorsque j’exécute la commande ./launcher rebuild app.

> ÉCHEC
> --------------------
> Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' a échoué avec le retour #<Process::Status: pid 671 exit 1>
> Emplacement de l'échec : /pups/lib/pups/exec_command.rb:112:in `spawn'
> exécution échouée avec les paramètres {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
> 9c3a1b4a72818216aaafa5de742f7d1a325aa61497ea49f5b4f1660c6e503fd0
> ** ÉCHEC DU BOOTSTRAP ** veuillez faire défiler vers le haut et rechercher les messages d'erreur antérieurs, il peut y en avoir plus d'un.
> ./discourse-doctor peut aider à diagnostiquer le problème.

Mon droplet Digital Ocean dispose de 2 Go de mémoire / 50 Go de disque + 50 Go / SFO2 - Discourse sur Ubuntu 20.04.

Merci d’avoir pris le temps de lire mon message ! J’ai hâte de lire votre réponse.

Bienvenue, @nelly ! Désolé que vous rencontriez des problèmes ! C’est une grande surprise inattendue. EDIT : C’est un peu inattendu.

Avez-vous des plugins ou des thèmes personnalisés ?

Pourriez-vous s’il vous plaît faire défiler vers le haut et coller ici les vrais messages d’erreur ?

Merci, @pfaffman ! Je vous remercie pour votre réponse. Oui, j’ai quelques thèmes et plugins personnalisés.

Voici les plugins que j’ai :

      - git clone https://github.com/discourse/docker_manager.git
      - git clone https://github.com/paviliondev/discourse-custom-wizard.git
      - git clone https://github.com/discourse/discourse-spoiler-alert.git
      - git clone https://github.com/paviliondev/discourse-landing-pages.git
      - git clone https://github.com/discourse/discourse-patreon.git
      - git clone https://github.com/discourse/discourse-reactions.git

Je ne suis pas sûr de savoir comment accéder ou supprimer les thèmes personnalisés.

Rafael,

Voici ce que je vois juste au-dessus de l’erreur « failed » :

rake aborted!
NameError: variable locale ou méthode `name' non définie pour main:Object
/var/www/discourse/lib/tasks/assets.rake:251:in `rescue in block (2 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:240:in `block (2 levels) in <main>'

Caused by:
OpenURI::HTTPError: 401 Error: Invalid license key
/var/www/discourse/lib/file_helper.rb:63:in `block in download'
/var/www/discourse/lib/final_destination.rb:422:in `block (3 levels) in safe_get'
/var/www/discourse/lib/final_destination.rb:421:in `catch'
/var/www/discourse/lib/final_destination.rb:421:in `block (2 levels) in safe_get'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/patches/net_patches.rb:19:in `block in request_with_mini_profiler'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/mini_profiler/profiling_methods.rb:46:in `step'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/patches/net_patches.rb:18:in `request_with_mini_profiler'
/var/www/discourse/lib/final_destination.rb:393:in `block in safe_get'
/var/www/discourse/lib/final_destination.rb:437:in `block in safe_session'
/var/www/discourse/lib/final_destination.rb:434:in `safe_session'
/var/www/discourse/lib/final_destination.rb:385:in `safe_get'
/var/www/discourse/lib/final_destination.rb:134:in `get'
/var/www/discourse/lib/file_helper.rb:55:in `download'
/var/www/discourse/lib/discourse_ip_info.rb:39:in `mmdb_download'
/var/www/discourse/lib/tasks/assets.rake:242:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:241:in `each'
/var/www/discourse/lib/tasks/assets.rake:241:in `block (2 levels) in <main>'
Tasks: TOP => assets:precompile
(Voir la trace complète en exécutant la tâche avec --trace)
I, [2021-05-02T20:17:42.823237 #1]  INFO -- : Téléchargement de MaxMindDB...
Compression du Javascript et génération des cartes de sources

J’espère que cela vous aidera. Merci d’avance !

Je pense que vous devrez remonter un peu plus. Ce message concernant la clé de licence concerne Maxmind, et je ne pense pas que ce soit le problème.

Jay,

Voici la sortie. Je l’ai beaucoup réduite pour que le forum me permette de la publier.

2021-05-03 00:32:20.635 UTC [63] postgres@postgres ERROR:  la base de données "discourse" existe déjà
2021-05-03 00:32:20.635 UTC [63] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: erreur : échec de la création de la base de données : ERROR:  la base de données "discourse" existe déjà
I, [2021-05-03T00:32:20.639714 #1]  INFO -- : 
I, [2021-05-03T00:32:20.640335 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2021-05-03 00:32:20.760 UTC [74] postgres@discourse ERROR:  le rôle "discourse" existe déjà
2021-05-03 00:32:20.760 UTC [74] postgres@discourse STATEMENT:  create user discourse;
ERROR:  le rôle "discourse" existe déjà

I, [2021-05-03T00:32:21.634456 #1]  INFO -- : Fichier > /etc/service/redis/run  chmod: +x  chown: 
I, [2021-05-03T00:32:21.640838 #1]  INFO -- : Fichier > /etc/service/redis/log/run  chmod: +x  chown: 
I, [2021-05-03T00:32:21.646998 #1]  INFO -- : Fichier > /etc/runit/3.d/10-redis  chmod: +x  chown: 
I, [2021-05-03T00:32:21.648588 #1]  INFO -- : Remplacement de daemonize yes par   dans /etc/redis/redis.conf
I, [2021-05-03T00:32:21.650175 #1]  INFO -- : Remplacement de (?-mix:^pidfile.*$) par   dans /etc/redis/redis.conf
I, [2021-05-03T00:32:21.651303 #1]  INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2021-05-03T00:32:21.656597 #1]  INFO -- : 
I, [2021-05-03T00:32:21.657900 #1]  INFO -- : Remplacement de (?-mix:^logfile.*$) par logfile "" dans /etc/redis/redis.conf
I, [2021-05-03T00:32:21.659157 #1]  INFO -- : Remplacement de (?-mix:^bind .*$) par   dans /etc/redis/redis.conf
I, [2021-05-03T00:32:21.660353 #1]  INFO -- : Remplacement de (?-mix:^dir .*$) par dir /shared/redis_data dans /etc/redis/redis.conf
I, [2021-05-03T00:32:21.661652 #1]  INFO -- : Remplacement de (?-mix:^protected-mode yes) par protected-mode no dans /etc/redis/redis.conf
I, [2021-05-03T00:32:21.662825 #1]  INFO -- : Remplacement de # io-threads 4 par io-threads $redis_io_threads dans /etc/redis/redis.conf
I, [2021-05-03T00:32:21.663908 #1]  INFO -- : > echo redis installé
I, [2021-05-03T00:32:21.668192 #1]  INFO -- : redis installé
I, [2021-05-03T00:32:21.669144 #1]  INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2021-05-03T00:32:21.679111 #1]  INFO -- : logfile ""
I, [2021-05-03T00:32:21.680077 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2021-05-03T00:32:21.683045 #1]  INFO -- : > sleep 10
167:C 03 May 2021 00:32:21.698 # oO0OoO0OoO0Oo Redis démarre oO0OoO0OoO0Oo
167:C 03 May 2021 00:32:21.698 # Version Redis=6.2.1, bits=64, commit=00000000, modifié=0, pid=167, vient de démarrer
167:C 03 May 2021 00:32:21.699 # Configuration chargée
167:M 03 May 2021 00:32:21.700 * horloge monotone : POSIX clock_gettime
167:M 03 May 2021 00:32:21.702 * Mode d'exécution=standalone, port=6379.
167:M 03 May 2021 00:32:21.702 # Serveur initialisé
167:M 03 May 2021 00:32:21.703 # AVERTISSEMENT : overcommit_memory est défini à 0 ! La sauvegarde en arrière-plan peut échouer en cas de faible mémoire. Pour résoudre ce problème, ajoutez 'vm.overcommit_memory = 1' dans /etc/sysctl.conf, puis redémarrez ou exécutez la commande 'sysctl vm.overcommit_memory=1' pour que cela prenne effet.
I, [2021-05-03T00:32:41.096190 #1]  INFO -- : > cd /var/www/discourse && bash -c "touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
terser '/var/www/discourse/public/assets/_vendor-892d5a1f7dfb58e3f80950989c67133fd6062344153d17e67db8ba3d126c7a1a.js' -m -c -o '/var/www/discourse/public/assets/vendor-892d5a1f7dfb58e3f80950989c67133fd6062344153d17e67db8ba3d126c7a1a.js' --source-map "base='/var/www/discourse/public/assets',root='/assets',url='/assets/vendor-892d5a1f7dfb58e3f80950989c67133fd6062344153d17e67db8ba3d126c7a1a.js.map'"
****************************************************************************************************
#<Thread:0x000055a7feb17780 /var/www/discourse/lib/tasks/assets.rake:239 run> terminé avec une exception (report_on_exception est true) :
/var/www/discourse/lib/tasks/assets.rake:251:in `rescue in block (2 levels) in <main>' : variable ou méthode locale non définie `name' pour main:Object (NameError)
	from /var/www/discourse/lib/tasks/assets.rake:240:in `block (2 levels) in <main>'
/var/www/discourse/lib/file_helper.rb:63:in `block in download' : 401 Erreur : clé de licence invalide (OpenURI::HTTPError)

J’espère que cela vous aidera !

Votre fichier app.yml contient-il une ligne pour la clé de licence MaxMind ? Essayez de la supprimer et de reconstruire.

Merci ! Cela semble fonctionner, en quelque sorte. Lorsque je visite la page d’accueil du forum, je suis redirigé vers la page « Félicitations, vous avez installé Discourse ! ». Voici mes questions :

Dois-je réinstaller le forum ? Mon contenu existant sera-t-il conservé ou tout a-t-il été supprimé ?

Cela ressemble à une suppression totale, mais il est probable que tout soit toujours là. S’agissait-il de votre première mise à jour depuis un moment ? Votre PostgreSQL a-t-il été mis à jour ? Ma meilleure hypothèse est que quelque chose s’est mal passé lors de la mise à jour de PostgreSQL et que vous devez renommer postgres_old et recommencer. Vous trouverez des détails dans Mise à jour vers PostgreSQL 13.

Jay, je me souviens (à l’instant) que j’avais tenté de déplacer les fichiers d’upload et les sauvegardes vers le stockage par blocs DigitalOcean. Il y a quelques instants, j’ai réessayé et j’ai reçu le message d’erreur « Oops » en visitant la page d’accueil :

Oops
Le logiciel qui alimente ce forum de discussion a rencontré un problème inattendu. Nous nous excusons pour le désagrément.

Des informations détaillées sur l’erreur ont été consignées dans les journaux et une notification automatique a été générée. Nous allons l’examiner.

Aucune autre action n’est nécessaire. Cependant, si le problème persiste, vous pouvez fournir des détails supplémentaires, y compris les étapes pour reproduire l’erreur, en publiant un sujet dans la catégorie « Retour d’information » du site.

Voici les commandes que j’ai exécutées :

mv /var/discourse/shared/standalone/postgres_data /var/postgres_data_discourse
mv /var/discourse/shared /mnt/discourse-sfo2-01

Dans app.yml, j’ai ajouté ceci :

## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
  - volume:
      host: /mnt/discourse-sfo2-01/shared/standalone
      guest: /shared
  - volume:
      host: /mnt/discourse-sfo2-01/shared/standalone/log/var-log
      guest: /var/log
  - volume:
      host: /var/postgres_data_discourse
      guest: /shared/postgres_data

Toutes les commandes ont été exécutées avec ./launcher rebuild app sans incident.

Je suis désolé à tous. J’avais oublié que j’avais fait cela. Je suis certain que c’est probablement la cause des problèmes.

Cela a fonctionné pour moi aussi après un échec de reconstruction — quel est le problème ici ? Merci !