Tentative d'installation d'un plugin a détruit le site, impossible de lancer la reconstruction

J’essayais d’installer le plugin de formatage, mais j’ai placé le code au mauvais endroit. Lorsque j’ai reconstruit et chargé le site, le plugin ne s’initialisait pas. J’ai donc identifié l’erreur, l’ai supprimée… et un message d’erreur est apparu sur une ligne. J’ai trouvé l’erreur sur cette ligne, l’ai passée dans yamllint, tout correspondait, j’ai supprimé le plugin… mais la reconstruction ne fonctionne plus. Un erreur persistante continue d’apparaître. Bien que je puisse charger la page d’accueil du site, je ne peux pas charger les sujets ni rien d’autre.

Voici les sorties de la reconstruction et du doctor :

Résumé
ÉCHEC
--------------------
NoMethodError: méthode `each` non définie pour nil:NilClass
Emplacement de l'échec : /pups/lib/pups/config.rb:99:in `run_commands'
dfd33a9a3be65ddb9a1fd19c19e5034a44c39f46e330ccdf0533f4f66d7d0005
** É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.
root:/var/discourse# ./discourse-doctor
DISCOURSE DOCTOR jeu 16 juil. 07:53:05 UTC 2020
OS : Linux itsbx 4.15.0-99-generic #100-Ubuntu SMP mer 22 avr. 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux



==================== PROBLÈME GRAVE !!!!! ====================
l'application n'est pas en cours d'exécution !
Tentative de reconstruction
==================== JOURNAL DE RECONSTRUCTION ====================
Vérification que le lanceur est à jour
Récupération de l'origine
Le lanceur est à jour
Arrêt de l'ancien conteneur
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Déjà à jour.
I, [2020-07-16T07:53:23.985444 #1]  INFO -- : Chargement de --stdin


ÉCHEC
--------------------
NoMethodError: méthode `each` non définie pour nil:NilClass
Emplacement de l'échec : /pups/lib/pups/config.rb:99:in `run_commands'
2386f66f76d9c9ffbbcd02bfad9e0530683714d433bff8d70976cae6c4b8fc86
** É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.
==================== FIN DU JOURNAL DE RECONSTRUCTION ====================
Échec de la reconstruction de l'application.

Vérification de votre nom de domaine . . .

Connexion à yoursite réussie.
Vous devriez probablement supprimer tous les plugins non officiels et reconstruire.
Tentative de redémarrage du conteneur existant . . .

Démarrage du conteneur existant
+ /usr/bin/docker start app
Réponse d'erreur du démon : échec de la programmation de la connectivité externe sur le point de terminaison app (39c7d5a80e10058bc952825fccd073af0f2ff12857895aa1046a6615d879a5a0) : Erreur lors du démarrage du proxy userland : listen tcp 0.0.0.0:443: bind: l'adresse est déjà utilisée
Erreur : échec du démarrage des conteneurs : app
Échec du redémarrage du conteneur.


==================== PLUGINS ====================
          - git clone github.com/discourse/docker_manager.git

Aucun plugin non officiel détecté.

Consultez thub.com/discourse/discourse/blob/master/lib/plugin/metadata.rb pour la liste officielle.

========================================
**Version de Discourse sur myhost : NON TROUVÉE**
**Version de Discourse sur localhost : NON TROUVÉE**


==================== INFORMATIONS SUR LA MÉMOIRE ====================
RAM (Mo) : 2041

              total        utilisé        libre      partagé  cache/buff   disponible
Mémoire :        1993         144        1237           0         611        1677
Échange :        2047          76        1971

==================== VÉRIFICATION DE L'ESPACE DISQUE ====================
---------- Espace disque du système d'exploitation ----------
Système de fichiers      Taille  Utilisé Disponible %Utilisé Monté sur
/dev/vda1        49G   11G   38G  22% /

==================== INFORMATIONS SUR LE DISQUE ====================
Disque /dev/vda : 50 Go, 53687091200 octets, 104857600 secteurs
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille E/S (minimale/optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant du disque : 3980448C-AF15-4833-A022-C759F0D2D80A

Périphérique      Début       Fin   Secteurs  Taille Type
/dev/vda1  227328 104857566 104630239 49.9G Système de fichiers Linux
/dev/vda14   2048     10239      8192    4M Boot BIOS
/dev/vda15  10240    227327    217088  106M Données de base Microsoft

Les entrées de la table de partition ne sont pas dans l'ordre du disque.

==================== FIN DES INFORMATIONS SUR LE DISQUE ====================

Je n’ai absolument aucune idée de ce qu’il faut faire, mais le site est complètement détruit pour le moment. J’ai supprimé les liens car je ne peux en utiliser que trois par publication, mais ils étaient bien présents. Les reconstructions fonctionnaient parfaitement jusqu’à ce que je supprime le plugin que j’avais placé au mauvais endroit, puis tout s’est arrêté. Cela avait corrompu quelques lignes, mais j’ai confirmé que c’était corrigé. Je suis complètement perdu. Je viens d’essayer de relancer la configuration et de vérifier tous les paramètres ; cela s’est bien passé, mais la reconstruction a à nouveau échoué…

Bon, après avoir essayé de relancer et de modifier des choses pendant des heures, j’ai finalement essayé :

./launcher start app

et tout s’est bien passé, le plugin est installé (bien que j’aie cru l’avoir supprimé). Peu importe. Cependant, j’ai maintenant peur de tenter une reconstruction ou d’installer quoi que ce soit de plus, car je ne sais pas exactement ce qui a causé cela, ni même ce qui a été corrigé. Toute explication serait donc toujours la bienvenue.

Il est impossible de dire, d’après votre description, quel pourrait être le problème, mais si la dernière reconstruction a réussi, la suivante le sera très probablement aussi.

Il vient juste de démarrer une ancienne image avec ./launcher start app, je suppose.

@Kartoon, tu peux probablement essayer de reconstruire. Si cela échoue, tu pourras toujours reprendre l’image bonne connue précédemment via la même commande.

Désolé, j’ai eu une petite urgence et n’ai pas pu vérifier ce sujet.

La reconstruction n’a PAS fonctionné, et j’ai réessayé aujourd’hui sans succès. Le site fonctionne correctement après l’exécution de “./launcher start app”, mais chaque tentative de reconstruction échoue, tout comme les erreurs signalées par discourse doctor. Je peux publier le journal qu’il me fournit si cela peut aider, mais il est clair que quelque chose cloche toujours, et je crains que cela ne entraîne un problème plus tard.

Il semble que vous ayez une erreur de formatage dans votre fichier yml.

Il peut être difficile de trouver et de reconnaître de telles erreurs. Il existe des outils qui les vérifient.

Ce que je fais habituellement lors de l’ajout d’un plugin, c’est copier/coller une ligne de plugin existante et modifier l’URL GitHub. De cette façon, vous réduisez les risques de casser quelque chose.

C’est ce que j’avais supposé, et au début, c’était incorrect, mais je me suis référé à http://www.yamllint.com/ pour corriger les erreurs résultant du fait que j’avais initialement placé le texte du plugin aux mauvais endroits. Le site indique maintenant que tout est parfaitement correct. Je l’ai vérifié à de nombreuses reprises tout au long du processus (à la fois pour des éléments spécifiques et pour l’ensemble), et il a toujours confirmé que c’était juste. Sauf si ce site est inexact pour une raison quelconque, ce qui est possible pour autant que je sache, car je ne suis pas très expert en la matière.

Voici ce que j’obtiens lorsque j’essaie de reconstruire, suivi de ce que donne l’exécution de discourse-doctor (tous deux il y a cinq minutes). J’ai supprimé les informations personnelles, mais dans le journal réel, tout y est et est correct.

rebuild app

Vérification que le lanceur est à jour
Récupération de l’origine
Le lanceur est à jour
Arrêt de l’ancien conteneur

  • /usr/bin/docker stop -t 60 app
    app
    cd /pups && git pull && /pups/bin/pups --stdin
    Déjà à jour.
    I, [2020-07-23T22:58:14.812604 #1] INFO – : Chargement de --stdin

ÉCHEC

NoMethodError: méthode each non définie pour nil:NilClass
Emplacement de l’échec : /pups/lib/pups/config.rb:99:in `run_commands’
1a575aa2a169fcb4a9bbb0874c55d3fd01ee1e7368ff58e2099c9602f6c32109
** ÉCHEC DU BOOTSTRAP ** Veuillez faire défiler vers le haut et rechercher les messages d’erreur précédents ; il peut y en avoir plus d’un.
./discourse-doctor peut aider à diagnostiquer le problème.

discourse-doctor

DISCOURSE DOCTOR Jeu 23 juil. 22:59:22 UTC 2020
OS : Linux itsbx 4.15.0-111-generic #112-Ubuntu SMP Jeu 9 juil. 20:32:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Fichier containers/app.yml trouvé

==================== PARAMÈTRES YML ====================
DISCOURSE_HOSTNAME=bon
SMTP_ADDRESS=bon
DEVELOPER_EMAILS=bon
SMTP_PASSWORD=bon
SMTP_PORT=587
SMTP_USER_NAME=bon
LETSENCRYPT_ACCOUNT_EMAIL=bon

==================== INFOS DOCKER ====================
VERSION DOCKER : Docker version 19.03.8, build afacb8b7f0

PROCESSUS DOCKER (docker ps -a)

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
343a1aa3c05c local_discourse/app “/sbin/boot” 7 days ago Exited (5) About a minute ago app

==================== PROBLÈME GRAVE !!! ====================
app n’est pas en cours d’exécution !
Tentative de reconstruction
==================== JOURNAL DE RECONSTRUCTION ====================
Vérification que le lanceur est à jour
Récupération de l’origine
Le lanceur est à jour
Arrêt de l’ancien conteneur

  • /usr/bin/docker stop -t 60 app
    app
    cd /pups && git pull && /pups/bin/pups --stdin
    Déjà à jour.
    I, [2020-07-23T22:59:41.894064 #1] INFO – : Chargement de --stdin

ÉCHEC

NoMethodError: méthode each non définie pour nil:NilClass
Emplacement de l’échec : /pups/lib/pups/config.rb:99:in `run_commands’
439734a2cd69755d8351bbdadd9756cb573577d7f1b306aedaafa1c7d4bc29cf
** ÉCHEC DU BOOTSTRAP ** Veuillez faire défiler vers le haut et rechercher les messages d’erreur précédents ; il peut y en avoir plus d’un.
./discourse-doctor peut aider à diagnostiquer le problème.
==================== FIN DU JOURNAL DE RECONSTRUCTION ====================
Échec de la reconstruction de l’application.

Vérification de votre nom de domaine . . .

Connexion au site web réussie.
Vous devriez probablement supprimer tous les plugins non standard et reconstruire.
Tentative de redémarrage du conteneur existant . . .

Démarrage du conteneur existant

  • /usr/bin/docker start app
    Réponse d’erreur du démon : échec de la programmation de la connectivité externe sur le point de terminaison app (100c15324a128a2b007d8b89e29fe0f455585fd8c7d99855ef87bb4f17892b4b) : Erreur de démarrage du proxy utilisateur : listen tcp 0.0.0.0:443: bind: l’adresse est déjà utilisée
    Erreur : échec du démarrage des conteneurs : app
    Échec du redémarrage du conteneur.

==================== PLUGINS ====================
- git clone GitHub - discourse/docker_manager: Plugin for use with discourse docker image · GitHub

Aucun plugin non officiel détecté.

Voir discourse/lib/plugin/metadata.rb at main · discourse/discourse · GitHub pour la liste officielle.

========================================
Version de Discourse sur le site web : NON TROUVÉE
Version de Discourse sur localhost : NON TROUVÉE

==================== INFORMATIONS SUR LA MÉMOIRE ====================
RAM (Mo) : 2041

          total        used        free      shared  buff/cache   available

Mem: 1993 140 1310 0 542 1695
Swap: 2047 72 1975

==================== VÉRIFICATION DE L’ESPACE DISQUE ====================
---------- Espace disque du système d’exploitation ----------
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 49G 13G 37G 26% /

==================== INFORMATIONS SUR LE DISQUE ====================
Disque /dev/vda : 50 GiB, 53687091200 octets, 104857600 secteurs
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille d’E/S (minimale/optimale) : 512 octets / 512 octets
Type d’étiquette de disque : gpt
Identifiant du disque : 3980448C-AF15-4833-A022-C759F0D2D80A

Device Start End Sectors Size Type
/dev/vda1 227328 104857566 104630239 49.9G Linux filesystem
/dev/vda14 2048 10239 8192 4M BIOS boot
/dev/vda15 10240 227327 217088 106M Microsoft basic data

Les entrées de la table de partitions ne sont pas dans l’ordre du disque.

==================== FIN DES INFORMATIONS SUR LE DISQUE ====================

La première chose que je remarque, c’est qu’il est indiqué « problème grave, app n’est pas en cours d’exécution ». Et « version de Discourse sur le site web et sur localhost non trouvée ». Mon hypothèse (peu informée) est que, quoi que cela signifie, c’est le problème.

Cela a également fait planter mon site juste maintenant lorsque j’ai lancé la reconstruction, et j’ai dû exécuter « start app » pour le réparer à nouveau.

Hmm. Bon, cela ne ressemble pas à un problème de mise en forme, mais je ne peux pas dire ce que cela pourrait être.

Si le fichier app.yml vous inquiète, je pense qu’il vaut mieux repartir avec un fichier app.yml vierge

rm /var/discourse/containers/app.yml
cd /var/discourse
cp samples/standalone.yml containers/app.yml
nano containers/app.yml

Ensuite, vous pouvez reconstruire une fois que tout a été vérifié.

Cela a parfaitement fonctionné. Clairement, lorsqu’il signalait que le fichier yml était correct… il ne l’était pas.

J’ai ensuite eu un problème temporaire avec l’envoi d’e-mails, mais lorsque j’ai revérifié le nouveau fichier yml, j’ai réalisé que j’avais fait une erreur avec l’e-mail (j’oublie toujours que je l’ai défini sur @mg. sur Mailgun…), donc cela a été résolu en cinq minutes.

Ah, merci beaucoup ! Je n’ai plus la peur d’une destruction imminente à tout moment.