Estoy tratando de implementar la aplicación Rails con el servidor web Puma. Cuando intento iniciar el servidor Puma con un archivo de configuración bundle exec puma -C config/puma.rb
, recibo un error de que la dirección ya está en uso.
¿Alguien sabe cómo solucionar esto?
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
fuente
fuente
kill -59780 PID
. Me diceinvalid signal specification
. Solíalsof -wni tcp:3000
mostrar lo que está usando el puerto 3000.Respuestas:
Debe usar
kill -9 59780
con59780
reemplazado por el número de PID encontrado (uselsof -wni tcp:3000
para ver qué proceso usó el3000
puerto y obtener el PID del proceso).O simplemente puede modificar su configuración puma cambiar el puerto TCP
tcp://127.0.0.1:3000
a partir3000
de9292
u otro puerto que no se utiliza.O puede iniciar su aplicación de rieles usando:
fuente
rails s
en otra terminal. Entonces es por eso que obtuve ese error. luego usé el puerto diff para iniciar el servidorrails s -p 9090
Para matar el proceso de puma primero ejecuta
para mostrar qué está usando el puerto 3000. Luego, use el PID que viene con el resultado para ejecutar el proceso de eliminación.
Por ejemplo, después de ejecutar lsof -wni tcp: 3000, puede obtener algo como
Ahora ejecute lo siguiente para eliminar el proceso. (donde 3366 es el PID)
Debería resolver el problema
fuente
También puedes probar este truco:
salida de muestra:
luego:
fuente
kill -9 67661
if enkill 67661
realidad no mata el proceso por usted (como en el ejemplo anterior). Eso funcionó para mí! ¡Salud!Encontré el script a continuación en este número de github . Funciona muy bien para mi.
Puede ejecutarlo en irb o dentro de un archivo ruby.
Para este último, cree y
server_killer.rb
luego ejecútelo conruby server_killer.rb
fuente
Puede encontrar y eliminar los procesos en ejecución:
ps aux | grep puma
luego puede eliminarlo conkill PID
fuente
Si las soluciones anteriores no funcionan en ubuntu / linux, puede probar esto
Ejecútelo varias veces para eliminar procesos en el puerto que elija. el puerto podría ser 3000 por ejemplo. Hubiera matado todos los procesos si no ve salida después de ejecutar el comando
fuente