Bonjour !
J’ai installé Discourse sur une nouvelle machine DigitalOcean en suivant ces instructions il y a deux jours, et tout s’est bien passé.
Hier, j’ai tenté d’installer l’application une nouvelle fois, sur une nouvelle machine DigitalOcean (Ubuntu 18.03, 1 Go). Les VPS sont identiques, mais cette fois, cela n’a pas fonctionné.
J’ai exécuté ./discourse-setup, répondu aux questions et attendu. Mon terminal s’est figé à la ligne #<Thread:0x00005621595f3360@/var/www/discourse/lib/tasks/assets.rake:215 run> terminated with exception (report_on_exception is true):. La seule façon de libérer le terminal a été de fermer la connexion SSH et de me reconnecter.
Je n’ai que des connaissances de base sur Linux.
La mise à jour du système avec apt-get n’a fait aucune différence.
J’ai découvert que l’installateur se bloque à la tâche assets:precompile. L’exception est levée depuis /var/www/discourse/lib/tasks/assets.rake:227:in rescue in block (2 levels) in <top (required)>': undefined local variable or method 'name' for main:Object (NameError).
La configuration écrit des données binaires dans la console, c’est pourquoi il y a un gel. En approfondissant, j’ai réalisé qu’une erreur 403 se produit, mais je n’arrive pas à trouver l’URL cible.
J’ai lancé la configuration dans un écran et j’ai enregistré. Ensuite, j’ai ouvert le journal avec xdd. J’ai remplacé deux blocs de données binaires par <BINARY_DATA>
#<Thread:0x000055c07c7e8cf8@/var/www/discourse/lib/tasks/assets.rake:215 run> terminated with exception (report_on_exceptionis true):
/var/www/discourse/lib/tasks/assets.rake:227:in `rescue in block (2 levels) in <top (required)>': undefined local variable or method `name' for main:Object (NameError)
from /var/www/discourse/lib/tasks/assets.rake:216:in `block (2 levels) in <top (required)>' /var/www/discourse/lib/file_helper.rb:55:in `block in download':
403 Error:<BINARY_DATA> (OpenURI::HTTPError) <BINARY_DATA>
from /var/www/discourse/lib/final_destination.rb:400:in `block (3 levels) in safe_get'
from /var/www/discourse/lib/final_destination.rb:399:in `catch'
from /var/www/discourse/lib/final_destination.rb:399:in `block (2 levels) in safe_get'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1518:in `block in transport_request'
from /usr/local/lib/ruby/2.6.0/net/http/response.rb:165:in `reading_body'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1517:in `transport_request'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1479:in `request'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/net_patches.rb:9:in `block in request_with_mini_profiler'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiling_methods.rb:39:in `step'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/net_patches.rb:8:in `request_with_mini_profiler'
from /var/www/discourse/lib/final_destination.rb:371:in `block in safe_get'
from /var/www/discourse/lib/final_destination.rb:415:in `block in safe_session'
from /usr/local/lib/ruby/2.6.0/net/http.rb:920:in `start'
from /usr/local/lib/ruby/2.6.0/net/http.rb:605:in `start'
from /var/www/discourse/lib/final_destination.rb:412:in `safe_session'
from /var/www/discourse/lib/final_destination.rb:363:in `safe_get'
from /var/www/discourse/lib/final_destination.rb:129:in `get'
from /var/www/discourse/lib/file_helper.rb:47:in `download'
from /var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download'
from /var/www/discourse/lib/tasks/assets.rake:218:in `block (3 levels) in <top (required)>'
from /var/www/discourse/lib/tasks/assets.rake:217:in `each'
from /var/www/discourse/lib/tasks/assets.rake:217:in `block (2 levels) in <top (required)>'
L’installateur exécute ensuite certaines tâches sans problème. À la fin du processus, on observe :
FAILED--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake assets:precompile'
failed with return #<Process::Status: pid 384 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'..exec
failed with the params {"cd"=>"$home", "hook"=>"assets_precompile",
"cmd"=>["su discourse -c 'bundle exec rake assets:precompile'"]}
f534324ceedf6b1a8a5cc89f38e1c12c2418fb69c71f93f21c0dd2f5ef51483d
** É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.
La commande ./discourse-doctor ne permet pas de résoudre le problème. Le diagnostic constate que l’application ne fonctionne pas, tente de la reconstruire et se bloque également. Je n’ai installé aucun plugin, car je n’ai jamais exécuté cette application sur cette machine
Votre adresse IP est bloquée pour le téléchargement de la base de données MaxMind.
Modifiez le fichier app.yml et ajoutez, sous la clé env DISCOURSE_REFRESH_MAXMIND_DB_DURING_PRECOMPILE_DAYS: 365, puis essayez une nouvelle reconstruction.
Cela échouera à nouveau dès que vous le supprimerez, car votre serveur ne peut pas télécharger une version plus récente de la base de données.
Le définir à 365 signifie essentiellement que vous recevrez une mise à jour lors de la publication d’une nouvelle image de base, ce qui se produit deux fois par an.