Привет!
Я установил Discourse на свежую машину DigitalOcean, следуя этой инструкции, два дня назад, и всё прошло хорошо.
Вчера я попытался установить приложение ещё раз на новую машину DigitalOcean (Ubuntu 18.04, 1 ГБ). VPS-серверы идентичны, но на этот раз установка не удалась.
Я запустил ./discourse-setup, ответил на вопросы и стал ждать. Мой терминал завис на строке #<Thread:0x00005621595f3360@/var/www/discourse/lib/tasks/assets.rake:215 run> terminated with exception (report_on_exception is true):. Единственный способ освободить терминал — закрыть SSH-соединение и подключиться заново.
У меня есть только базовые знания о Linux.
Обновление системы через apt-get ничего не изменило.
Я выяснил, что установщик зависает на задаче assets:precompile. Исключение возникает в /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).
Установка выводит бинарные данные в консоль, из-за чего происходит зависание. При более глубоком анализе я понял, что возникает ошибка 403, но я не могу найти целевой URL.
Я запустил setup в screen и записал процесс. Затем открыл лог с помощью xdd. Я заменил два фрагмента бинарных данных на <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)>'
Установщик выполнил затем несколько задач без проблем. В конце процесса появились сообщения:
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
** 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.
Команда ./discourse-doctor не помогла. Doctor определил, что приложение не работает, попытался пересобрать его, но также завис. Я не устанавливал никаких плагинов, так как никогда ранее не запускал это приложение на этой машине
Ваш IP-адрес заблокирован при загрузке базы данных MaxMind.
Отредактируйте файл app.yml и добавьте под ключом env параметр DISCOURSE_REFRESH_MAXMIND_DB_DURING_PRECOMPILE_DAYS: 365, а затем попробуйте выполнить пересборку.