【问题标题】:Cannot assign requested address - bind(2) (Errno::EADDRNOTAVAIL)无法分配请求的地址 - 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)

请帮帮我

【问题讨论】:

    标签: ruby-on-rails ruby gem mongrel


    【解决方案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 为我做的。
        猜你喜欢
        • 2019-08-27
        • 1970-01-01
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 2023-03-11
        • 2017-09-13
        • 1970-01-01
        相关资源
        最近更新 更多