Estou tentando implantar o aplicativo Rails com o servidor da web Puma. Ao tentar iniciar o servidor Puma com um arquivo de configuração bundle exec puma -C config/puma.rb
, recebo um erro informando que o endereço já está em uso.
Alguém sabe como consertar isso?
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
Cornelius Wilson
fonte
fonte
kill -59780 PID
. Me dizinvalid signal specification
. I utilizadolsof -wni tcp:3000
para mostrar o que está usando a porta 3000.Respostas:
Você precisa usar
kill -9 59780
com59780
substituído com encontrada PID número (usolsof -wni tcp:3000
para ver qual processo utilizado3000
porto e começar o processo PID).Ou você pode simplesmente modificar sua configuração do puma alterar a porta TCP
tcp://127.0.0.1:3000
de3000
9292
ou para outra porta que não foi usada.Ou você pode iniciar seu aplicativo rails usando:
fonte
rails s
em outro terminal. Foi por isso que recebi esse erro. então usei a porta diff para iniciar o servidorrails s -p 9090
Para matar o processo do puma, execute primeiro
para mostrar o que está usando a porta 3000. Em seguida, use o PID que acompanha o resultado para executar o processo de interrupção.
Por exemplo, após executar lsof -wni tcp: 3000, você poderá obter algo como
Agora execute o seguinte para interromper o processo. (onde 3366 é o PID)
Deve resolver o problema
fonte
você também pode tentar este truque:
saída de amostra:
então:
fonte
kill -9 67661
sekill 67661
realmente não interromper o processo para você (como no exemplo acima). Isso funcionou para mim! Felicidades!Encontre o script abaixo nesta edição do github . Funciona muito bem para mim.
Você pode executá-lo no irb ou dentro de um arquivo ruby.
Para o último, crie
server_killer.rb
e execute-o comruby server_killer.rb
fonte
Você pode encontrar e matar os processos em execução:
ps aux | grep puma
Em seguida, você pode matá-lo comkill PID
fonte
Se as soluções acima não funcionarem no ubuntu / linux, você pode tentar isso
Execute-o várias vezes para eliminar os processos na sua porta de escolha. porta poderia ser 3000, por exemplo. Você mataria todos os processos se não vir nenhuma saída após executar o comando
fonte