J’ai une installation de 2.5.0.beta4.
Elle devait être mise à niveau mais, en cours de processus, elle s’est cassée et mon site ne se charge plus.
J’ai tous les fichiers et la base de données, etc. C’était via un docker sur Ubuntu 16.
Quelles sont mes options pour réparer cela ?
Je n’y connais rien en shell, donc je devrai demander à quelqu’un de le faire pour moi, mais j’ai besoin de savoir, sans tirer à l’aveugle, ce que je devrais chercher à faire.
Toute aide est appréciée.
Pouvez-vous fournir des détails supplémentaires, le conteneur est-il en cours de chargement (docker ps) ? Y a-t-il des messages d’erreur/journaux qui pourraient indiquer la voie ? Auto-hébergez-vous ou êtes-vous sur un hébergeur tiers ?
Salut Mike, merci de ta réponse, voici ce que j’obtiens.
Lorsque j'exécute ./discourse-docto, j'obtiens cette erreur :
+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=2 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e
RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e
RUBY_GC_HEAP_INIT_SLOTS=400000 -e
RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e
DISCOURSE_DB_SOCKET=/var/run/postgresql -e
DISCOURSE_DB_HOST= -e
DISCOURSE_DB_PORT= -e
LETSENCRYPT_DIR=/shared/letsencrypt -e
DISCOURSE_FORCE_HTTPS=true -e
DISCOURSE_HOSTNAME=discuss.domain -e
DISCOURSE_DEVELOPER_EMAILS=info@domain -e
DISCOURSE_SMTP_ADDRESS=mail3.domain -e
DISCOURSE_SMTP_PORT=587 -e
DISCOURSE_SMTP_USER_NAME=xxx@domain -e
DISCOURSE_SMTP_PASSWORD=xxx -e
LETSENCRYPT_ACCOUNT_EMAIL=info@domain -h
Ubuntu-1804-bionic-64-minimal-app -e
DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:8d:5a:f6:a3:11 local_discourse/app /sbin/boot
Unable to find image 'local_discourse/app:latest' locally
docker: Error response from daemon: pull access denied for local_discourse/app, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
Failed to restart the container.
Même erreur lorsque j’essaie d’exécuter /launcher rebuild app
docker est la dernière version
Je vois aussi cette erreur dans le journal du docteur :
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & find /var/www/discourse ! -user discourse -exec chown discourse {} + failed with return #<Process::Status: pid 1929 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\\\"\\\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}
bootstrap failed with exit code 1
** 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.
f4d0b782e3d1c3deccb5e3d6c186a08ebbaaea22ed37d19a2ff07b7688c83926
Quel type de mise à niveau faisiez-vous ? Je vérifierais le fichier app.yml pour les fautes de frappe, puis je relancerais une reconstruction complète.
Votre version de Docker est trop ancienne, et cela se produit parce que votre Ubuntu est trop ancienne.
Avez-vous une sauvegarde ? Lancez simplement un nouveau VPS sur Ubuntu 22 et restaurez-la.
Je n’ai pas de sauvegarde, seulement un instantané du VPS lorsqu’il fonctionnait pour la dernière fois, mais il ne se charge pas après la restauration.
Version Docker 23.0.3, build 3e7cbfd
app.yml est OK, validé sur https://www.yamllint.com
L’erreur concerne cette ligne dans le lanceur :
cidbootstrap=cids/\"$config\"_bootstrap.cid
local_discourse=local_discourse
image=\"discourse/base:2.0.20230409-0052\"
docker_path=`which docker.io 2\u003e /dev/null || which docker`
git_path=`which git`
local_discourse=local_discourse
Y a-t-il un moyen de récupérer des données ou de faire une sauvegarde dans cette situation ?
Les fichiers de base de données devraient être accessibles. Sur mon serveur de production, ils se trouvent dans /var/discourse/shared/standalone/postgres_data, les vôtres pourraient se trouver dans un endroit similaire.
Je suggère de faire une sauvegarde COMPLÈTE du système sur un autre serveur avant d’aller plus loin, en particulier tous les répertoires qui se trouvent sous un répertoire ‘discourse’.
En l’absence d’une sauvegarde actuelle (suffisante), je créerais un nouveau serveur en utilisant une version plus récente d’Ubuntu (et donc de Docker) puis je copiera tous les répertoires sous les arbres discourse vers celui-ci, y compris tous les fichiers postgres. (Je n’ai pas encore eu à faire cela sur un serveur discourse, mais j’administre des bases de données postgres depuis 20 ans et si les fichiers de base de données sont intacts, cela aide à recréer/reconstruire les choses.)
Cela fait-il longtemps que ce système n’a pas été mis à jour ? Si la réponse à cette question est ‘oui’, il pourrait y avoir des complications à essayer de copier les fichiers existants sous les répertoires discourse vers un nouveau serveur, car ce n’est pas vraiment la bonne façon de faire ; une sauvegarde discourse contient beaucoup plus que les simples fichiers de la base de données postgresql. (C’est pourquoi j’essaie de faire une sauvegarde avant même une petite mise à niveau, bien que je doive admettre que je ne le fais pas toujours.)
Votre dernière sauvegarde discourse se trouve probablement dans un répertoire similaire à celui-ci :
/var/discourse/shared/standalone/backups/default
Salut Mike, merci pour tes réponses, j’apprécie beaucoup.
La mise à niveau a échoué et à un moment donné, le renouvellement automatique du SSL s’est arrêté, donc en essayant de faire tout cela, je me suis retrouvé dans ce scénario.
Je vais essayer ça, j’essaie de reconstruire l’application mais je me heurte à un manque d’espace, j’ai 15 Go utilisés par Discourse pour une raison quelconque.
À part reconstruire, y a-t-il un moyen de démarrer Discourse avec une commande de démarrage ?
Merci encore.
Vous avez probablement plusieurs images de conteneur qui traînent.
L’exécution de ‘docker images’ les listera. Sur mon système de production, par exemple, cela liste 7 images d’environ 3,5 Go chacune, ce qui représente un peu d’espace. Mon système sandbox affiche plus de 20 d’entre elles. Vous pourriez supprimer certaines de ces images pour libérer de l’espace, ou les copier sur un serveur séparé si vous avez de l’espace disponible sur ceux-ci.
Je suppose que ‘docker ps’ n’affiche pas de conteneur en cours d’exécution.
Avez-vous essayé de démarrer un ancien conteneur pour voir s’il fait démarrer le site ? Ensuite, vous pourrez faire une sauvegarde.
Launcher devrait fonctionner pour cela, je pense qu’il sert en grande partie d’interface pour les commandes docker, mais il peut également effectuer d’autres tâches nécessaires pour lancer discourse.
Salut Mike, il n’y a qu’un seul conteneur là-dedans, c’est drôle. J’ai réussi à libérer de l’espace en nettoyant les logs etc. Mais je n’ai pas eu de chance. Il y a un autre problème que je ne trouve pas. Je vais simplement suivre tes autres instructions pour voir si je peux le mettre en place par des méthodes manuelles, par exemple copier les fichiers et la base de données vers une version ultérieure.
Lorsque j’exécute docker run, j’obtiens :
docker run discourse
Unable to find image 'discourse:latest' locally
docker: Error response from daemon: pull access denied for discourse, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
Que se passe-t-il si vous essayez le lanceur ?
./launcher start app
Donne ceci :
.....tronqué
Impossible de trouver l'image 'local_discourse/app:latest' localement
/usr/bin/docker : réponse d'erreur du démon :
accès au téléchargement refusé pour local_discourse/app,
le dépôt n'existe pas ou peut nécessiter une connexion 'docker login' : refusé :
l'accès demandé à la ressource est refusé.
qu’obtenez-vous de ‘docker images’ ?
Juste celui-ci :
discourse/base 2.0.20230409-0052 08afe7103ce8
Je peux reproduire plus ou moins les messages d’erreur que vous recevez en jouant avec une ancienne image, mais jusqu’à présent, je n’ai trouvé aucun moyen de forcer le chargement de cette image.
Je ne suis pas sûr de ce que je peux suggérer d’autre pour le moment.
Salut Mike, ta solution précédente marquée comme solution a quelque peu résolu le problème. J’ai copié tous les fichiers sur un nouveau VPS et cela a fonctionné après quelques modifications.
Merci à tous pour votre aide.
Ravi que vous ayez trouvé une solution, heureux d’avoir pu vous aider. Assurez-vous de faire des sauvegardes régulièrement. ![]()
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.