Je reçois constamment des erreurs lors de la mise à jour

Peu importe combien de fois j’essaie de mettre à jour, j’obtiens toujours Désolé, une erreur s'est produite lors de la mise à jour de Discourse. Veuillez vérifier les journaux ci-dessous. lorsque je mets à jour via le navigateur. Je dois toujours passer par le Terminal et ce n’est pas idéal, car je dois alors toujours laisser mon forum hors service pendant environ 30 minutes.

Si quelqu’un peut m’aider ici, ce serait apprécié.

Erreurs :

Résumé
********************************************************
*** Soyez patient, les prochaines étapes peuvent prendre un certain temps ***
********************************************************
Redémarrage de Unicorn, pour libérer de la mémoire
Redémarrage de unicorn pid : 603
Attente du rechargement de Unicorn.
Attente du rechargement de Unicorn..
Attente du rechargement de Unicorn...
Attente du rechargement de Unicorn....
Attente du rechargement de Unicorn.....
Attente du rechargement de Unicorn......
Attente du rechargement de Unicorn.......
Attente du rechargement de Unicorn........
Attente du rechargement de Unicorn.........
Attente du rechargement de Unicorn..........
Attente du rechargement de Unicorn...........
Attente du rechargement de Unicorn............
Attente du rechargement de Unicorn.............
Attente du rechargement de Unicorn..............
Attente du rechargement de Unicorn...............
Attente du rechargement de Unicorn................
Attente du rechargement de Unicorn.................
Attente du rechargement de Unicorn..................
Attente du rechargement de Unicorn...........
Attente du rechargement de Unicorn............
Attente du rechargement de Unicorn.............
Attente du rechargement de Unicorn..............
Attente du rechargement de Unicorn...............
$ cd /var/www/discourse & git reset --hard HEAD@{upstream}
HEAD est maintenant à fe1b1edba FIX : supprime + de l'info-bulle de bascule RTE (#33542)
$ bundle install --retry 3 --jobs 4
Bundle complet ! 143 dépendances Gemfile, 190 gems installés.
Les gems des groupes 'test' et 'development' n'ont pas été installés.
Les gems bundlés sont installés dans ./vendor/bundle
3 gems installés dont vous dépendez directement recherchent un financement.
Exécutez `bundle fund` pour plus de détails
$ if [ -f yarn.lock ]; then yarn install; else CI=1 pnpm install; fi
Portée : tous les 16 projets d'espace de travail
Le fichier de verrouillage est à jour, l'étape de résolution est ignorée
Déjà à jour

Terminé en 9.1s avec pnpm v9.15.6
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
discourse-adplugin est déjà à la dernière version compatible
discourse-categories-suppressed est déjà à la dernière version compatible
discourse-doc-categories est déjà à la dernière version compatible
Liste de versions invalide dans /var/www/discourse/plugins/discourse-landing-pages
discourse-landing-pages est déjà à la dernière version compatible
discourse-solved est déjà à la dernière version compatible
docker_manager est déjà à la dernière version compatible
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Le migrator multisite s'exécute en utilisant 1 thread

Migration de default
Initialisation de default
*** Regroupement des assets. Cela peut prendre un certain temps *** 
$ bundle exec rake themes:update assets:precompile
Mise à jour des thèmes avec une concurrence de : 10
[db:default] 'New Topic Header Button' -  vérification...
[db:default] 'New Topic Header Button' -  à jour
[db:default] 'Category Banners' -  vérification...
[db:default] 'Category Banners' -  à jour
[db:default] 'Clickable Topic' -  vérification...
[db:default] 'Clickable Topic' -  à jour
[db:default] 'Tag Banners' -  vérification...
[db:default] 'Tag Banners' -  à jour
[db:default] 'Breadcrumb Links' -  vérification...
[db:default] 'Breadcrumb Links' -  à jour
[db:default] 'Welcome Link Banner' -  vérification...
[db:default] 'Welcome Link Banner' -  à jour
[db:default] 'Tag Icons' -  vérification...
[db:default] 'Tag Icons' -  à jour
[db:default] 'Social Share' -  vérification...
[db:default] 'Social Share' -  à jour
[db:default] 'Navigation Menu Display Control' -  vérification...
[db:default] 'Navigation Menu Display Control' -  à jour
[db:default] 'DiscoTOC' -  vérification...
La limite de taille du tas Node.js (heap_size_limit) est inférieure à 2048 Mo. Définition de --max-old-space-size=2048 et CHEAP_SOURCE_MAPS=1
La construction existante n'est pas réutilisable.
- Existing: {"ember_env"=\u003e"production", "core_tree_hash"=\u003e"c71c1ad482ff7f24c3ad3a76d5a521861f29e1fb"}
- Current: {"ember_env"=\u003e"production", "core_tree_hash"=\u003e"d026d5621e9421eaf67123aab7361a44f0fa9c31"}
Exécution de la construction principale complète...
Construction
Environnement : production
Le paramètre 'staticAddonTrees' sera défini sur true par défaut dans la prochaine version d'Embroider et ne pourra pas être désactivé. Pour vous y préparer, vous devriez définir 'staticAddonTrees: true' dans votre configuration Embroider.
Le paramètre 'staticAddonTestSupportTrees' sera défini sur true par défaut dans la prochaine version d'Embroider et ne pourra pas être désactivé. Pour vous y préparer, vous devriez définir 'staticAddonTestSupportTrees: true' dans votre configuration Embroider.
construction...
...[ConfigLoader]
...[Babel: @embroider/macros > applyPatches]
...[Babel: pretty-text > applyPatches]
...[Babel: @ember/legacy-built-in-components > applyPatches]
...[Babel: ember-source > applyPatches]
[BABEL] Note : Le générateur de code a déoptimisé le style de /var/www/discourse/app/assets/javascripts/discourse/ember/ember-template-compiler.js car il dépasse la limite de 500 Ko.
[BABEL] Note : Le générateur de code a déoptimisé le style de /var/www/discourse/app/assets/javascripts/discourse/ember/ember.js car il dépasse la limite de 500 Ko.
...[Babel: @glimmer/component > applyPatches]
...[Babel: @ember/render-modifiers > applyPatches]
...[Babel: dialog-holder > applyPatches]
...[Babel: ember-this-fallback > applyPatches]
...[Babel: ember-buffered-proxy > applyPatches]
...[Babel: ember-cache-primitive-polyfill > applyPatches]
...[Babel: float-kit > applyPatches]
...[Babel: select-kit > applyPatches]
...[@embroider/compat/app]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
undefined
 ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL Commande terminée avec SIGKILL (Terminaison forcée) : ember build -prod
/var/www/discourse/script/assemble_ember_build.rb:103:in `system': Command failed with exit 1: pnpm (RuntimeError)
	from /var/www/discourse/script/assemble_ember_build.rb:103:in `<main>'
Docker Manager : ÉCHEC DE LA MISE À NIVEAU
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:211:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:112:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/commands/runner/runner_command.rb:44:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/commands/runner/runner_command.rb:44:in `block in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/execution_wrapper.rb:91:in `wrap'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/commands/runner/runner_command.rb:70:in `conditional_executor'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/command/base.rb:178:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/command/base.rb:73:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/command.rb:71:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/command.rb:149:in `with_argv'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/command.rb:69:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/commands.rb:18:in `<main>'
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
Démarrage de 1 worker Unicorn qui avaient été arrêtés initialement

Vous devez créer un fichier d’échange plus volumineux.
J’avais le même problème. Ceci l’a résolu

1 « J'aime »

Pouvez-vous m’expliquer comment faire ? Je ne connais pas ça. Je me souviens que quelqu’un en a parlé, mais je ne pense pas avoir fait de changements (enfin, apparemment je ne l’ai probablement pas fait et c’est ce qui cause cela).
Merci

Je recommande de mettre à niveau depuis la ligne de commande

cd /var/discourse
./launcher rebuild app

Vous pourriez encore avoir des problèmes de mémoire. Si cela échoue, incluez l’erreur et la sortie de

free -h
2 « J'aime »

Utilisez Google ou YouTube :
“Fichier swap Linux”

1 « J'aime »

Voici le guide de Digital Ocean :

Vous devez généralement ajouter autant d’espace d’échange que vous avez de RAM.

1 « J'aime »

https://meta.discourse.org/search?context=topic&context_id=373634&q=Node.js%20heap_size_limit%20is%20less%20than%202048MB&skip_context=true

1 « J'aime »

Mises à jour
Après quelques conversations avec Claude, voici ce qui se passe :

J’avais initialement ceci

sudo swapon --show
NAME      TYPE SIZE USED PRIO
/swapfile file   2G   1G   -2

Cela causait toujours l’erreur.

J’ai donc pu l’augmenter à 4 Go, je crois :

sudo swapon --show
NAME      TYPE SIZE   USED PRIO
/swapfile file   4G 714.4M   -2

Maintenant, voici ce qui est étrange : pendant que je faisais cela, je suis retourné sur la page de mise à jour et, à ma grande surprise, tout avait été mis à jour…
Comment est-ce possible, si cela m’affichait cette erreur ? :confused:

Quoi qu’il en soit, je comprends maintenant au moins qu’un fichier swap est lié à l’espace disque, pas à la RAM. J’utilise un droplet DigitalOcean avec 1 Go de RAM et 25 Go de disque.

Donc, je suppose qu’avoir le fichier swap de 4 Go est acceptable pour l’instant ?
Mais toujours, pourquoi a-t-il été mis à jour, même après m’avoir montré cette erreur ?

Un fichier d’échange est une façon d’utiliser une partie de votre espace disque comme une RAM très, très lente, il est donc lié à la fois à l’espace disque et à la RAM.

25 Go est juste assez d’espace. Vous devrez exécuter un ./launcher cleanup avant pratiquement chaque mise à niveau en ligne de commande.

1 « J'aime »

Ce que je voulais dire, c’est que lorsque j’ai vu des discussions à ce sujet, quand les gens disaient « créez un fichier d’échange de 2 Go », je pensais que c’était lié à la quantité de RAM, donc dans mon cas, je ne pourrais pas le faire, car je n’ai que 1 Go de RAM. Maintenant, je comprends que le fichier d’échange est en fait de l’espace disque, presque comme créer une petite partition. Donc, oui, ils sont liés, car ils « communiquent » entre eux lorsque nécessaire, mais j’étais plus littéral dans mon commentaire.

C’est tout ce que je peux me permettre pour le moment et comme je n’ai toujours pas de vraie communauté, c’est suffisant. Je mettrai à niveau à mesure que la communauté grandira.

Donc, vous dites qu’avant chaque mise à jour, même lorsque j’utilise le panneau d’administration pour mettre à jour, je devrais exécuter ./launcher cleanup via le Terminal ?

Non. L’utilisation du panneau d’administration ne permet pas à Docker de créer plus d’images qu’il n’en utilise, mais vous pourriez ne pas avoir assez de mémoire (RAM plus swap) pour effectuer la mise à niveau depuis le panneau d’administration.

Tout cela est un peu confus pour moi…
Certaines personnes ont dit qu’elles avaient le même problème que moi, et que la création du fichier d’échange de 2 Go les avait aidées. J’ai maintenant créé le fichier d’échange de 4 Go, mais c’était après ma mise à jour, je devrai donc attendre une autre mise à jour pour le tester.

Donc, par exemple, si je passe à 2 Go de RAM, serait-ce suffisant, même si l’espace disque est toujours de 25 Go ?

Je suis très nouveau dans tout cela, je m’excuse donc si cela est trop évident pour la plupart des gens. J’essaie juste de comprendre les choses au fur et à mesure que je travaille dessus.

Une machine de 1 Go avec 4 Go de swap devrait suffire.

Je recommanderais personnellement au moins 2 Go avec 2 Go de swap pour commencer, mais vous remplissez les exigences minimales publiées d’une installation standard.

Je passerais à autre chose et l’utiliserais, et je ne mettrais à niveau que si vous trouvez que les choses sont trop lentes.

Vous ne devriez avoir aucun problème de mémoire maintenant.

2 « J'aime »

Sauf que, comme vous l’avez dit, le disque dur sera plein assez rapidement, et cleanup est indispensable, quelle que soit la quantité de RAM disponible.

Merci. Pour l’instant, je veux juste commencer à ajouter du contenu et des utilisateurs jusqu’à ce qu’il soit logique de mettre à niveau.

Hors sujet, mais toujours lié à l’espace disque : quand j’ai examiné tout cela, j’ai remarqué que j’utilisais environ 18 Go et lorsque j’ai demandé à ChatGPT, il a dit qu’il était normal que Discourse prenne autant de place ?

Si c’est le cas, mon serveur de 25 Go utiliserait 18 Go pour l’installation + 4 Go pour le fichier d’échange, me laissant peu d’espace. Pouvez-vous confirmer cela ?

Je ne vais pas débattre avec votre robot.

Vous avez raison, les 4 Go seront déduits de votre espace disque disponible (bien sûr).

2 « J'aime »

J’ai juste vérifié tous les dossiers et j’ai remarqué que 12 Go sont utilisés par ce dossier :

/var/lib/docker/overlay2/

Qu’est-ce que c’est et est-il possible de le réduire en supprimant peut-être des fichiers qui ne sont pas nécessaires ?

Peut-être voir le fil précédent
La mise à niveau de Discourse échoue en raison d’un espace disque insuffisant sur un droplet de 25 Go

Peut-être aussi ce fil

1 « J'aime »

Peut-être que quelqu’un pourrait dire quelque chose comme :

Sans aucun contexte supplémentaire, ce commentaire initial ne m’a pas été très utile. Je ne m’attendais pas à ce que Discourse utilise 18 Go d’espace disque alors que d’autres plateformes comme phpBB sont beaucoup plus légères (sans être un expert, je n’ai aucune idée de pourquoi une plateforme est plus légère que l’autre, mais elles sont différentes, apparemment). Donc, quand vous avez dit que 25 Go est à peine suffisant sans ajouter plus de contexte, alors qu’il n’y a rien sur la page d’installation officielle qui dise que Discourse utilisera peut-être N Go d’espace, j’ai supposé que le 1 Go de RAM par défaut de Digital Ocean avec 25 Go était plus que suffisant et que peut-être les communautés plus grandes auraient du mal avec seulement 25 Go. Comme la mienne n’en est qu’à ses débuts, je n’ai pas considéré l’espace disque comme un problème.

J’espère que cela a du sens.

1 « J'aime »