无法分配请求的地址 - bind(2) (Errno::EADDRNOTAVAIL)

Posted

技术标签:

【中文标题】无法分配请求的地址 - bind(2) (Errno::EADDRNOTAVAIL)【英文标题】:Cannot assign requested address - bind(2) (Errno::EADDRNOTAVAIL) 【发布时间】:2012-11-30 23:51:21 【问题描述】:

我在 centos 6.3 服务器上使用 rail for teambox,实际上这只是在实际应用之前的反复试验。

我正在使用 2 个虚拟机,它们在相同的 centos 版本和精确副本上运行,VM2 只运行 mysql,它将远离 VM1 我试过mysql连接#nc,它已经连接了 VM1 (192.168.7.201) & VM2 (192.168.7.202 运行 MYSQL) 我在 my.cnf 中的远程计算机 (VM2) 上有绑定地址,绑定地址=192.168.7.202 这是我的 database.yml

开发:适配器:mysql主机:192.168.7.202端口: 3306 用户名:teambox 密码:pass 数据库: 团队框

我正在尝试使用#rails server -e development -b 192.168.7.202 并给出这个错误

Exiting
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/tcphack.rb:12:in `initialize_without_backlog': Cannot assign requested address - bind(2) (Errno::EADDRNOTAVAIL)

请帮帮我

【问题讨论】:

【参考方案1】:

这意味着服务器已经在该端口上运行

试试

rails server -e development -p 3001 -b 192.168.7.202

【讨论】:

我将默认端口保留为 3000,忘记联系电话,我正在用 ruby​​ 和 gems 安装这两台机器,这是否也会造成问题? 与其他一些 cmets 一样,错误是 EADDRNOTAVAILABLE。如果该端口上正在运行某些东西,则错误将是 EADDRINUSE。【参考方案2】:

尝试如下:

development:
 adapter: mysql
 host: 127.0.0.1
 port: 3306
 username: teambox
 password: pass
 database: teambox

(或)

development:
 adapter: mysql
 host: localhost
 port: 3306
 username: teambox
 password: pass
 database: teambox

我认为以上任何一种方法都可以。

【讨论】:

它只能在 localhost 上运行,但我希望 mysql 在单独的机器上运行,即 VM2 (192.168.7.202) rails s -E development -b 192.168.7.202【参考方案3】:

出现错误是因为 3000 端口已在使用中。并且该命令正在尝试在同一端口中运行。所以改变端口并运行。添加这个也 -p 3002

【讨论】:

【参考方案4】:

Rails 5.0.0.1 服务器在没有 IPv6 的情况下无法工作。

您需要从/etc/sysctl.conf文件启用IPv6(默认启用IPv6)。

如果有的话,删除或评论这些行。

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

net.ipv6.conf.lo.disable_ipv6 = 1

重启服务器以启用 IPv6。试试:

rails server

【讨论】:

【参考方案5】:

试试这个

rails server -e development -b 0.0.0.0 -p 3000

0.0.0.0 表示它监听本地机器上的所有 IPv4 地址

【讨论】:

只是 rails s -b 0.0.0.0 为我做的。

以上是关于无法分配请求的地址 - bind(2) (Errno::EADDRNOTAVAIL)的主要内容,如果未能解决你的问题,请参考以下文章

nginx 错误:(99:无法分配请求的地址)

Akka,发送Udp失败,“无法分配请求的地址”

针对 localhost 相对 url 的请求“无法分配请求的地址”

System.Net.Http.HttpRequestException:无法分配请求的地址 - 本地主机中的 2 个 .net 核心 Web 应用程序之间通信时出错

Docker 无法分配请求的地址

Uwsgi:“无法分配请求的地址”