首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:已在使用的地址- bind(2) (Errno::EADDRINUSE)

Rails:已在使用的地址- bind(2) (Errno::EADDRINUSE)
EN

Stack Overflow用户
提问于 2015-06-25 02:00:31
回答 9查看 146.1K关注 0票数 163

我正在尝试部署Rails应用程序与美洲狮网络服务器。当试图使用配置文件bundle exec puma -C config/puma.rb启动Puma服务器时,我会得到一个错误,该地址已经在使用中。

有人知道怎么解决吗?

代码语言:javascript
复制
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>'
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2015-06-25 02:48:28

您需要使用kill -9 59780,并将59780替换为已找到的PID号(使用lsof -wni tcp:3000查看哪个进程使用了3000端口并获得进程PID)。

或者您可以修改puma配置,将tcp端口tcp://127.0.0.1:30003000更改为9292或其他未使用的端口。

或者您可以通过以下方式启动rails应用程序:

代码语言:javascript
复制
bundle exec puma -C config/puma.rb -b tcp://127.0.0.1:3001
票数 341
EN

Stack Overflow用户

发布于 2016-03-21 12:36:36

若要杀死美洲狮进程,请先运行

代码语言:javascript
复制
lsof -wni tcp:3000 

显示使用端口3000的是什么。然后使用结果附带的PID来运行终止进程。

例如,在运行lsof -wni tcp:3000之后,您可能会得到以下内容

代码语言:javascript
复制
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ruby    3366 dummy    8u  IPv4  16901      0t0  TCP 127.0.0.1:3000 (LISTEN)

现在运行下面的命令来终止该进程。(其中3366是PID)

代码语言:javascript
复制
kill -9 3366

应该解决这个问题

票数 168
EN

Stack Overflow用户

发布于 2018-03-06 03:19:27

你也可以试试这个技巧:

代码语言:javascript
复制
ps aux | grep puma

样本输出:

代码语言:javascript
复制
myname           77921   0.0  0.0  2433828   1972 s000  R+   11:17AM   0:00.00 grep puma
myname           67661   0.0  2.3  2680504 191204 s002  S+   11:00AM   0:18.38 puma 3.11.2 (tcp://localhost:3000) [my_proj]

然后:

代码语言:javascript
复制
kill -9 67661
票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31039998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档