我正在尝试为我的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进行,这是令人困惑的
答案 0 :(得分:1)
你已经在端口80(apache或nginx)上监听了什么,所以你不能在这个端口上绑定。您可以执行以下操作之一
在您的流浪者开始rdebug-ide --host 0.0.0.0 --port 3000 --dispatcher-port 3000 -- bin/rails s
如果您在vagrantfile中使用专用网络IP,则无需转发端口,因为您将使用自己的IP访问VM服务器
在您的虚拟机中运行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)