如何在Vagrant和ruby-debug-ide上配置端口

时间:2017-03-23 03:51:34

标签: ruby vagrant ruby-debug-ide

我正在尝试为我的Web应用程序配置调试器,但是在为它指定正确的端口时遇到了麻烦。 Vagrantfile:

config.vm.network :private_network, ip: "192.168.68.8"
config.vm.network :forwarded_port, guest: 80, host: 8080

/ etc / hosts(在我的主机上)

192.168.68.8    mysite.com

我安装了这两个宝石用于调试

gem 'ruby-debug-ide', group: [:development,:test]
gem 'debase', group: [:development,:test]

我读到为了在vagrant上使用ruby-debug-ide,我应该运行 rdebug-ide --host 0.0.0.0 --port 80 --dispatcher-port 8080 -- bin/rails s 其中--port应该是Vagrantfile的访客端口和`--dispatcher-port``的主机端口

但它说

Permission denied - bind(2) for "0.0.0.0" port 80

另一方面,如果我尝试在Vagrantfile中更改这些端口,我将失去从127.0.0.1:specified_port到达我的应用程序的机会,但仍然可以从mysite.com进行,这是令人困惑的

1 个答案:

答案 0 :(得分:1)

你已经在端口80(apache或nginx)上监听了什么,所以你不能在这个端口上绑定。您可以执行以下操作之一

  1. 在另一个端口上启动rails,如3000
  2. 在您的流浪者开始rdebug-ide --host 0.0.0.0 --port 3000 --dispatcher-port 3000 -- bin/rails s

    如果您在vagrantfile中使用专用网络IP,则无需转发端口,因为您将使用自己的IP访问VM服务器

    1. 检查端口80上正在侦听的内容
    2. 在您的虚拟机中运行sudo netstat -nltp,检查绑定端口80并将其终止的进程

      例如

      vagrant@precise32:/etc/init.d$ sudo netstat -nltp
      Active Internet connections (only servers)
      Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
      tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      512/rpcbind
      tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1827/apache2
      tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      652/sshd
      tcp        0      0 0.0.0.0:58397           0.0.0.0:*               LISTEN      539/rpc.statd
      tcp6       0      0 :::111                  :::*                    LISTEN      512/rpcbind
      tcp6       0      0 :::22                   :::*                    LISTEN      652/sshd
      ...
      

      所以你将杀死apache2进程(PID 1827)