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:3000mostrar lo que está usando el puerto 3000.Respuestas:
Debe usar
kill -9 59780con59780reemplazado por el número de PID encontrado (uselsof -wni tcp:3000para ver qué proceso usó el3000puerto y obtener el PID del proceso).O simplemente puede modificar su configuración puma cambiar el puerto TCP
tcp://127.0.0.1:3000a partir3000de9292u otro puerto que no se utiliza.O puede iniciar su aplicación de rieles usando:
fuente
rails sen otra terminal. Entonces es por eso que obtuve ese error. luego usé el puerto diff para iniciar el servidorrails s -p 9090Para 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 67661if enkill 67661realidad 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.rbluego ejecútelo conruby server_killer.rbfuente
Puede encontrar y eliminar los procesos en ejecución:
ps aux | grep pumaluego puede eliminarlo conkill PIDfuente
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