Récemment, j’ai essayé de déployer Discourse, mais j’ai rencontré un problème qui empêche son démarrage.
Voici l’erreur :
ÉCHEC
--------------------
Erreur d'exécution Pups : cd /var/www/discourse && su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs $(($(nproc) - 1)) --without test development' a échoué avec le code de retour #<Process::Status: pid 1193 exit 15>
Emplacement de l'échec : /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/exec_command.rb:138:in 'Pups::ExecCommand#spawn'
L'exécution a échoué avec les paramètres {"cd" => "$home", "cmd" => ["echo \"gem 'mysql2'\" >> Gemfile", "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmariadb-dev", "su discourse -c 'bundle config unset deployment'", "su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs $(($(nproc) - 1)) --without test development'"]}
Le démarrage a échoué avec le code de sortie 15
** ÉCHEC DU DÉMARRAGE ** 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.
7a849a20b51e8b8ff94c6ac3727c393aeb899e9b48b7d2313931232ceb9e6411
Voici le fichier de configuration :
## Ceci est le modèle de conteneur Docker Discourse tout-en-un et autonome
##
## Après avoir apporté des modifications à ce fichier, vous DEVEZ reconstruire
## /var/discourse/launcher rebuild app
##
## SOYEZ *TRÈS* PRUDENT EN ÉDITANT !
## LES FICHIERS YAML SONT EXTRÊMEMENT SENSIBLES AUX ERREURS D'ESPACEMENT OU D'ALIGNEMENT !
## visitez http://www.yamllint.com/ pour valider ce fichier si nécessaire
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/import/mysql-dep.template.yml"
#- "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## Quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## consultez https://meta.discourse.org/t/17247 pour plus de détails
expose:
- "8000:80" # http
#- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.chinese"
## Définissez db_shared_buffers à un maximum de 25 % de la mémoire totale.
## sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez le remplacer
#db_shared_buffers: "256MB"
## peut améliorer les performances de tri, mais augmente l'utilisation de la mémoire par connexion
#db_work_mem: "40MB"
## Quelle révision Git ce conteneur doit-il utiliser ? (par défaut : latest)
#version: latest
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Combien de requêtes web simultanées sont prises en charge ? Dépend de la mémoire et des cœurs CPU.
## sera défini automatiquement par bootstrap en fonction des CPU détectés, ou vous pouvez le remplacer
#UNICORN_WORKERS: 3
## TODO : Le nom de domaine auquel cette instance Discourse répondra
## Requis. Discourse ne fonctionnera pas avec une adresse IP brute.
DISCOURSE_HOSTNAME: "forum.akarinliu.com"
## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
## nom d'hôte (option -h) que spécifié ci-dessus (par défaut "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO : Liste d'e-mails séparés par des virgules qui seront administrateurs et développeurs
## lors de l'inscription initiale, par exemple 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: "forum.akarinliu.com"
## TODO : Configurez le serveur de messagerie
## (utilisé pour la validation des nouveaux comptes, les notifications, les résumés, etc.)
## requis : nom d'hôte du serveur SMTP utilisé pour envoyer des e-mails
DISCOURSE_SMTP_ADDRESS: smtp.exmail.qq.com
## décommentez pour définir le port sur autre chose que le défaut (25)
DISCOURSE_SMTP_PORT: 587
## NOM_UTILISATEUR / MOT_DE_PASSE requis si le fournisseur SMTP nécessite une authentification
## ATTENTION : un '#' dans le mot de passe SMTP peut être mal interprété ; assurez-vous qu'il est à l'intérieur des guillemets de chaîne, par exemple :
## DISCOURSE_SMTP_PASSWORD: "#pass#ord"
DISCOURSE_SMTP_USER_NAME: noreply@akarinliu.com
DISCOURSE_SMTP_PASSWORD: "***"
## décommentez pour activer le TLS implicite au moment de la connexion, probablement nécessaire pour utiliser le port 465
#DISCOURSE_SMTP_FORCE_TLS: true
## décommentez pour définir le domaine HELO/EHLO, à définir uniquement si requis par le fournisseur
#DISCOURSE_SMTP_DOMAIN: discourse.example.com
## l'adresse à partir de laquelle les notifications sont envoyées
#DISCOURSE_NOTIFICATION_EMAIL: noreply@discourse.example.com
## décommentez pour modifier la vérification du certificat du serveur
#DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: peer # peer|none
## décommentez pour remplacer la méthode d'authentification
#DISCOURSE_SMTP_AUTHENTICATION: plain # plain|login|cram_md5
# Drapeau facultatif pour sauter la configuration de l'e-mail
#DISCOURSE_SKIP_EMAIL_SETUP: "1" # (facultatif), décommentez pour sauter la validation de la configuration de l'e-mail
## L'adresse CDN http ou https pour cette instance Discourse (configurée pour récupérer)
## consultez https://meta.discourse.org/t/14857 pour plus de détails
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## L'ID de compte IP et la clé de licence Maxmind pour les recherches d'adresses IP
## consultez https://meta.discourse.org/t/-/173941 pour plus de détails
DISCOURSE_MAXMIND_ACCOUNT_ID: 1083541
DISCOURSE_MAXMIND_LICENSE_KEY: '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'
## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
- volume:
host: ./shared
guest: /shared
- volume:
host: ./log/var-log
guest: /var/log
## Les plugins vont ici
## consultez https://meta.discourse.org/t/19157 pour plus de détails
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Toutes les commandes personnalisées à exécuter après la construction
run:
- exec: echo "Début des commandes personnalisées"
## Si vous souhaitez définir l'adresse e-mail « De » pour votre première inscription, décommentez et modifiez :
## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit être exécutée qu'une seule fois.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Fin des commandes personnalisées"
(message supprimée par l’auteur)
Faites cela et partagez ![]()
Oui — veuillez coller au moins 100 lignes.
Si votre serveur se trouve en Chine, il s’agit très probablement d’un problème de réseau. D’après vos journaux, le processus semble bloqué lors du téléchargement des paquets gem. Soyez rassuré, je rencontre le même problème ; ces derniers jours, je n’ai pas pu effectuer de refactorisation en raison de divers problèmes de réseau.
Cela pourrait être dû au fait que les examens d’entrée à l’université (Gaokao) ont lieu en Chine en ce moment, ce qui entraîne un blocage réseau très strict. Je vous recommande d’attendre la fin de cette période pour réessayer, ou d’utiliser un proxy.