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

时间:2012-12-13 06:04:56

标签: ruby-on-rails ruby gem mongrel

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

  • 我正在使用2个运行在相同的centos版本和精确副本上的虚拟框,VM2只运行远离VM1的mysql
  • 我尝试过mysql连接#nc并且连接了
  • VM1(192.168.7.201)& VM2(运行MYSQL的192.168.7.202)
  • 我在my.cnf的远程机器(VM2)上有bind-address,绑定地址= 192.168.7.202
  • 这是我的database.yml
  

开发:
适配器:mysql
主机:192.168.7.202
端口:   3306
用户名:teambox
密码:pass
database:   teambox

我试图使用#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)

请帮帮我

5 个答案:

答案 0 :(得分:11)

试试这个

rails server -e development -b 0.0.0.0 -p 3000

0.0.0.0表示它侦听本地计算机上的所有IPv4地址

答案 1 :(得分:2)

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服务器

答案 2 :(得分:0)

请尝试以下方法:

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


我认为上述任何一种都可行。

答案 3 :(得分:-1)

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

rails server -e development -p 3001 -b 192.168.7.202

答案 4 :(得分:-2)

错误即将到来,因为3000端口已在使用中。该命令试图在同一个端口运行。所以改变端口并运行。添加这个也是-p 3002