Приложение ошибки приложения Heroku не работает - PullRequest
0 голосов
/ 18 мая 2018

хорошо, я пытаюсь развернуть свое приложение с помощью Heroku, и я получаю некоторые ошибки, которые мне не хватало для поиска в интернете.Развертывание проходит нормально, показывая, что оно прошло успешно:

remote: Verifying deploy... done.
   To https://git.heroku.com/MYAPPHERE.git
      7715c7c..c85251d  master -> master

, но когда я захожу в домен, отображается следующее сообщение:

"Ошибка приложения. Произошла ошибка в приложении и на вашей странице.не может быть обслужен. Если вы являетесь владельцем приложения, проверьте подробности в своих журналах. "

мои журналы показывают это:

018-05-18T19:14:24.000000+00:00 app[api]: Build succeeded
2018-05-18T19:14:28.864974+00:00 heroku[web.1]: Starting process with command `bundle exec puma -C config/puma.rb`
2018-05-18T19:14:31.064709+00:00 app[web.1]: [4] Puma starting in cluster mode...
2018-05-18T19:14:31.064729+00:00 app[web.1]: [4] * Version 3.11.4 (ruby 2.3.1-p112), codename: Love Song
2018-05-18T19:14:31.064730+00:00 app[web.1]: [4] * Min threads: 5, max threads: 5
2018-05-18T19:14:31.064732+00:00 app[web.1]: [4] * Environment: production
2018-05-18T19:14:31.064752+00:00 app[web.1]: [4] * Process workers: 2
2018-05-18T19:14:31.064776+00:00 app[web.1]: [4] * Preloading application
2018-05-18T19:14:33.736893+00:00 app[web.1]: [4] * Listening on tcp://0.0.0.0:36902
2018-05-18T19:14:33.737145+00:00 app[web.1]: [4] * Listening on tcp://0.0.0.0:36902
2018-05-18T19:14:33.737416+00:00 app[web.1]: bundler: failed to load command: puma (/app/vendor/bundle/ruby/2.3.0/bin/puma)
2018-05-18T19:14:33.737462+00:00 app[web.1]: Errno::EADDRINUSE: Address already in use - bind(2) for "0.0.0.0" port 36902
2018-05-18T19:14:33.737465+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/lib/puma/binder.rb:270:in `initialize'
2018-05-18T19:14:33.737466+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/lib/puma/binder.rb:270:in `new'
2018-05-18T19:14:33.737468+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/lib/puma/binder.rb:270:in `add_tcp_listener'
2018-05-18T19:14:33.737469+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/lib/puma/binder.rb:105:in `block in parse'
2018-05-18T19:14:33.737471+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/lib/puma/binder.rb:88:in `each'
2018-05-18T19:14:33.737472+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/lib/puma/binder.rb:88:in `parse'
2018-05-18T19:14:33.737474+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/lib/puma/runner.rb:144:in `load_and_bind'
2018-05-18T19:14:33.737475+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/lib/puma/cluster.rb:397:in `run'
2018-05-18T19:14:33.737477+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/lib/puma/launcher.rb:184:in `run'
2018-05-18T19:14:33.737478+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/lib/puma/cli.rb:78:in `run'
2018-05-18T19:14:33.737480+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/puma-3.11.4/bin/puma:10:in `<top (required)>'
2018-05-18T19:14:33.737482+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/bin/puma:23:in `load'
2018-05-18T19:14:33.737483+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/bin/puma:23:in `<top (required)>'
2018-05-18T19:14:33.833127+00:00 heroku[web.1]: State changed from starting to up
2018-05-18T19:14:33.953708+00:00 heroku[web.1]: State changed from up to crashed
2018-05-18T19:14:33.931364+00:00 heroku[web.1]: Process exited with status 1
2018-05-18T19:14:35.621801+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=MYAPPNAME request_id=74c67c85-dce7-4da8-9770-f41513d8cf31 fwd="179.178.13.25" dyno= connect= service= status=503 bytes= protocol=https

В моем gemfile:

# Use Puma as the app server
gem 'puma', '~> 3.7'

в config / puma:

plugin :tmp_restart

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/
  # deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end

Я вижу, что с адресом произошла ошибка, но я вообще не использую этот адрес.Я попытался запустить lsof -wni tcp:36902, и он ничего не показывает.

Надеюсь, я предоставил достаточно информации.

1 Ответ

0 голосов
/ 19 мая 2018

Похоже, что puma пытается связать слушателей дважды:

2018-05-18T19:14:33.736893+00:00 app[web.1]: [4] * Listening on tcp://0.0.0.0:36902
2018-05-18T19:14:33.737145+00:00 app[web.1]: [4] * Listening on tcp://0.0.0.0:36902

Возможно, вы захотите переместить preload_app! ниже конфигурации порта и среды.(вызывая порт, он может вызывать две функции связывания , аналогичные здесь )

В настоящее время я использую Heroku w / puma 3.11.4, и мой config/puma.rb выглядит следующим образом:

 threads_count = ENV.fetch('RAILS_MAX_THREADS', 5)
 threads threads_count, threads_count

 environment ENV.fetch('RAILS_ENV', 'development')
 port        ENV.fetch('PORT', 3000)

 workers ENV.fetch('WEB_CONCURRENCY', 2)

 preload_app!

 before_fork do
   ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord)
 end

 on_worker_boot do
   ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
 end

 # Allow puma to be restarted by `rails restart` command.
 plugin :tmp_restart

Также может быть полезно увидеть ваш Procfile.Просто хочу подтвердить, что это выглядит примерно так:

Простой Procfile может быть:

web: bundle exec puma -C config/puma.rb
...