在Mac OS X Lion上使用Vagrant端口转发

4

我一直在尝试使用Vagrant连接到CentOS 6.4虚拟机,但一直无果。 我使用salt作为配置代理,并成功安装了apache、php和mysql等软件包。 当我通过ssh登录到虚拟机后,apache可以正常运行。我在/var/www中添加了一个index.html文件,在curl localhost:80时可以得到其内容。

Vagrant.configure("2") do |config|
  ## Chose your base box
  config.vm.box = "centos63"
  config.vm.box_url = ""

  ## For masterless, mount your salt file root
  config.vm.synced_folder "salt/roots/", "/srv/"


  ## Use all the defaults:
  config.vm.provision :salt do |salt|
    salt.verbose = true
    salt.run_highstate = true
    salt.minion_config = "salt/minion"
 end
end

Vagrant::Config.run do |config|
 config.vm.forward_port 80, 8080
 config.vm.share_folder "mypath", "/var/www/leo", "."
end

我在本地机器上运行了sudo lsof -i :8080,但没有返回结果。我还使用iptables -F清除了来宾机器中的iptable配置。当我curl访问来宾机器时

 curl -v 'localhost:8080'                            
* About to connect() to localhost port 8080 (#0)
*   Trying ::1...
* Connection refused
*   Trying 127.0.0.1...
* Connection refused
*   Trying fe80::1...
* Connection refused
* couldn't connect to host
* Closing connection #0
curl: (7) couldn't connect to host

我需要安装客户附加组件吗?我查了一下如何安装,但我不确定这是必须安装在主机还是客户机上。不知道还有什么其他的尝试方法。

2个回答

3

如果不以root用户身份运行vagrant,那么您想要在这里做的事情是不可能的。我相信您可以将Vagrant作为root运行,但VirtualBox会反对这样做。您可以继续使用端口号,或者如果您想要或需要使用端口80,则有一种方法。

当我的客户要求我进行WordPress Multisite设置时,我遇到了这个问题。使用WordPress MS时,URL中不能有端口号,因为一些URL映射将无法正常工作。当我发现这一点时,感到非常惊讶,并且不想回到使用类似于MAMP的程序。

不管怎样,有两种方法可以实现这个目标(都很简单)。我是Mac用户,因此这些是Mac特定的答案,如果有Windows版本,我将测试后更新我的回答(请参见下面的内容,有一种方法)。

方法1(Mac IP防火墙实用程序):

在您的vagrant文件中

config.vm.forward_port 80, 8080
config.vm.forward_port 443, 8443

这很正常。

现在打开终端,您可以使用 ipfw 工具。

sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to me 80
sudo ipfw add 101 fwd 127.0.0.1,8443 tcp from any to me 443

现在cmd命令不是永久的,如果您重新启动计算机,则必须重新运行cmd。但您可以使其变为永久性,我在下面包含了一个链接,解释了第一种方法的其余部分。Vagrant中的端口80和443的Web开发 第二种方法(Mac POW和Anvil):
如果您还没有安装Pow,请先下载它!它非常酷。安装Pow和Anvil,您可以在这里找到Anvil并在这里找到Pow。
您可以阅读有关如何设置它们的文档,但不要注意“static”和“rack”站点部分,而是需要部分。
您将使用Pow通过端口代理来接受来自mycoolsite.dev的流量,并将其转发到虚拟机,例如mycoolsite.dev:8080,然后虚拟机将8080转发到80,然后向上回传您的内容。
安装Anvil/Pow并将其设置好后运行此行命令:
echo 8080 > ~/.pow/mycoolsite

然后在任务栏中点击 Anvil(你可能需要刷新或关闭并重新打开它),然后启动该网站,就这样,是的,真的吗?Pow和Anvil非常棒!

所以我发现了两种方法,我相信有一些事情可以通过您的Hosts文件完成,我曾经多次这样做。然而,其他可用的方法确实让我们很容易忘记那个讨厌的hosts文件。

适用于Windows用户(以及不喜欢前两种方法的Mac用户):您可以使用Vagrant Host Manager,您可以在这里的github上了解如何设置。它是一个vagrant插件,基本上会为您编辑hosts文件,您只需进行vagrantfile配置,之后就可以开始了。我刚在Windows 7上测试过,所以它应该还不错,如果您有任何问题,请查看github上的文档或提交问题给Vagrant Host Manager团队审核。


0

我把客户端口改成了5656,然后它就可以工作了。当运行 lsof -i :8080 时,我没有看到任何结果,所以我认为可能没有使用那个端口,但也许我错了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接