经过一些编码后,在运行 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]
我试过:
- 创建一个新项目 - 相同
- 已检查 Rails 4.2 - 问题已解决
- 重新安装 rails 5 和 ruby - 同样的问题
lsof -wni tcp:3000
什么都不返回- ps 辅助 | grep "rails"- 什么都没有
- ps 辅助 | grep "puma"- 什么都没有
- ps 辅助 | grep“ ruby ”-什么都没有
- 使用
puma
而不是rails s
- 问题已解决 - 使用
rails s -p 3001
- 同样的问题,也适用于其他端口
更新
- 使用
RAILS_ENV=production bundle exec rails s
- 问题已解决
有什么建议吗?
最佳答案
某处正在运行相同的进程
查看哪个进程使用了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
现在再次启动服务器
关于ruby-on-rails - Rails 5 地址已在使用中 - bind(2) for "127.0.0.1"port 3000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38460373/