Я пытаюсь развернуть приложение Rails с веб-сервером Puma. При попытке запустить сервер Puma с файлом конфигурации bundle exec puma -C config/puma.rb
я получаю сообщение об ошибке, что адрес уже используется.
Кто-нибудь знает, как это исправить?
bundle exec puma -C config/puma.rb
[23699] Puma starting in cluster mode...
[23699] * Version 2.11.3 (ruby 2.0.0-p353), codename: Intrepid Squirrel
[23699] * Min threads: 5, max threads: 5
[23699] * Environment: development
[23699] * Process workers: 2
[23699] * Preloading application
Jdbc-MySQL is only for use with JRuby
[23699] * Listening on tcp://0.0.0.0:3000
/.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:210:in `initialize': Address already in use - bind(2) (Errno::EADDRINUSE)
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:210:in `new'
from /Users/lexi87/.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:210:in `add_tcp_listener'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:96:in `block in parse'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:82:in `each'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:82:in `parse'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/runner.rb:119:in `load_and_bind'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/cluster.rb:302:in `run'
from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/cli.rb:216:in `run'
from /rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/bin/puma:10:in `<top (required)>'
from /.rvm/gems/ruby-2.0.0-p353/bin/puma:23:in `load'
from /.rvm/gems/ruby-2.0.0-p353/bin/puma:23:in `<main>'
from /.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `eval'
from /.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `<main>'
ruby-on-rails
puma
Корнелиус Уилсон
источник
источник
kill -59780 PID
. Говорит мнеinvalid signal specification
. Раньше яlsof -wni tcp:3000
показывал, что использует порт 3000.Ответы:
Вам нужно использовать
kill -9 59780
с59780
замененным на найденный номер PID (используйте,lsof -wni tcp:3000
чтобы увидеть, какой процесс использовал3000
порт, и получить PID процесса).Или вы можете просто изменить свою конфигурацию puma, изменив порт tcp
tcp://127.0.0.1:3000
с3000
на9292
или другой порт, который не использовался.Или вы можете запустить приложение rails, используя:
источник
rails s
на другом терминале. Вот почему я получил эту ошибку. затем я использовал порт diff для запуска сервераrails s -p 9090
Чтобы убить процесс puma, сначала запустите
чтобы показать, что использует порт 3000. Затем используйте PID, который приходит с результатом, для запуска процесса уничтожения.
Например, после запуска lsof -wni tcp: 3000 вы можете получить что-то вроде
Теперь запустите следующее, чтобы убить процесс. (где 3366 - PID)
Должен решить проблему
источник
вы также можете попробовать этот трюк:
образец вывода:
затем:
источник
kill -9 67661
if наkill 67661
самом деле не убивает процесс за вас (как в примере выше). Это сработало для меня! Ура!Нашел скрипт ниже в этом выпуске github . У меня отлично работает.
Вы можете запустить его в irb или внутри файла ruby.
Для последнего создайте, а
server_killer.rb
затем запустите его с помощьюruby server_killer.rb
источник
Вы можете найти и убить запущенные процессы:
ps aux | grep puma
затем вы можете убить его с помощьюkill PID
источник
Если вышеуказанные решения не работают в ubuntu / linux, вы можете попробовать это
Запустите его несколько раз, чтобы убить процессы на выбранном вами порту. например порт может быть 3000. Вы бы убили все процессы, если бы не увидели никаких результатов после выполнения команды
источник