经过一些编码后,在运行rails s
:
Address already in use - bind(2) for "127.0.0.1" port 3000 (Errno::EADDRINUSE)
我的环境是:
$ rails -v
Rails 5.0.0
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
我试过了:
lsof -wni tcp:3000
不给我任何回报puma
代替rails s
- 问题已解决 rails s -p 3001
- 同样的问题,也适用于其他端口已更新
RAILS_ENV=production bundle exec rails s
- 问题已解决 有什么建议吗?
答案 0 :(得分:0)
您的错误是说端口3000上已经存在某些内容。如果不了解您的环境或已安装的内容,则无法知道要停止的内容。
很有可能另一个rails服务器已经在某个地方运行。尝试访问localhost:3000,看看那里有什么。
可能是因为某些未知原因,另一个程序正在这个端口上捎带,如果是这样,你就无法阻止它,使用不同的端口
rails s -p 3001
或您选择的任何其他端口
答案 1 :(得分:0)
问题出现是因为Puma的代码中存在错误。降级到最老版本帮助了我。
答案 2 :(得分:0)
同一个进程正在某处运行
要查看哪个进程使用了3000端口并在命令
下获取进程pid类型lsof -wni tcp:3000
这将给出正在使用此端口的进程
示例结果
process1 12345 0.0 0.0 12343566 1972 s000 R+ 11:17AM 0:00.00 grep puma
您可以通过输入以下命令
来终止此过程12345 这是进程ID
kill -9 12345
现在再次启动服务器