【发布时间】:2015-06-24 22:02:42
【问题描述】:
我想知道如何使用终端从我的流浪机器运行命令:
$ ping localhost:3000
或
$ curl http://localhost:3000
在主机 (OSX) 中,我有一个在 localhost:3000 中运行的 rails 服务器,所以我希望在 rails 日志中显示一些内容。
【问题讨论】:
标签: ruby-on-rails macos vagrant ping
我想知道如何使用终端从我的流浪机器运行命令:
$ ping localhost:3000
或
$ curl http://localhost:3000
在主机 (OSX) 中,我有一个在 localhost:3000 中运行的 rails 服务器,所以我希望在 rails 日志中显示一些内容。
【问题讨论】:
标签: ruby-on-rails macos vagrant ping
当我在虚拟机中运行时:
$ ip route show
在输出中有这样一行:
default via 10.0.2.2 dev enp0s3 proto static metric 1024
这是从访客 ping 的 IP:
curl http://10.0.2.2:3000
【讨论】:
vagrant 机器内部的localhost 指的是guest vagrant 机器,即localhost 不是指主机。从来宾访问主机的一种方法是配置private network。您可以为 vagrant 指定一个静态私有 IP,如下所示:
Vagrant.configure("2") do |config|
config.vm.network "private_network", ip: "192.168.50.4"
end
在可以通过192.168.50.4从主机访问该guest并且可以通过192.168.50.1从guest访问主机之后,即主机IP的结束八进制数将是1在guest机器内。
在vagrant up 之后,您可以在客户机内部执行此操作:
$ ping 192.168.50.1
$ curl http://192.168.50.1:3000
请注意,如果您有一些严格的防火墙设置,那么您必须允许来自 192.168.50.4 的连接。
【讨论】:
config.vm.network "private_network", ip: "192.168.50.1"
curl: (7) Failed connect to 192.168.33.1:3000; No route to host
192.168.50.4 还是192.168.33.4?请提供您正在使用的 Vagrantfile 的确切行。您还应该检查您的防火墙设置。
config.vm.network "private_network", ip: "192.168.33.64" 一定是防火墙设置的东西
您也可以在客户机的配置文件中将网络设置为“public_network”。
在Vageantfile 中取消注释:
config.vm.network "public_network"
重启机器:
vagrant halt
vagrant up
输入ip addr show,你的公网ip就是eth1下列出的IP(而不是通常的eth0)
【讨论】: