【问题标题】:Vagrant Port Forwarding on Mac OS X LionMac OS X Lion 上的 Vagrant 端口转发
【发布时间】:2013-06-17 04:56:21
【问题描述】:

我一直在努力尝试使用 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 -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

我需要安装访客添加功能吗?我四处寻找如何安装它,但我不确定它是否必须安装在主机或来宾上。不知道还能尝试什么。

【问题讨论】:

    标签: port vagrant salt portforwarding


    【解决方案1】:

    你在这里尝试做的事情是不可能只使用 vagrant 而不以root 运行 vagrant。我相信你可以以root 的身份运行 Vagrant,但 VirtualBox 不会同意这一点。您可以继续使用端口号,或者如果您想要或需要使用端口 80,有一种方法。

    当我的一个客户要求我进行 Wordpress 多站点设置时,我遇到了这个问题。使用 Wordpress MS,您不能在 URL b/c 中包含端口号,某些 URL 映射将无法正常工作。当我发现这一点并且不想重新使用 MAMP 之类的程序时,我感到很惊讶。

    无论如何,这里有两种方法可以实现这一目标(都不是很难)。我是 Mac 用户,所以这些是 Mac 特定的答案,我会看看是否有 Windows 版本,并在我可以测试时更新我的​​答案以确保(见下文,有办法)。

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

    在你的流浪文件中

    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。不过,您可以将其永久化,我在下面提供了一个链接,该链接将解释方式 #1 的其余部分。

    Web Development on Port 80 and 443 in Vagrant

    方式 #2(Mac POW 和 Anvil):

    如果你还没有 Pow,那就买吧!这是一个非常酷的应用程序。 安装 Pow 和 Anvil,你可以在那里找到Anvil,你可以在那里找到Pow

    您可以阅读有关如何设置它们的文档,但不要注意“静态”和“机架”站点部分,您需要 this 部分。

    您将通过 Pow 使用端口代理从 mycoolsite.dev 获取传入流量并将其转发到虚拟机(如 mycoolsite.dev:8080),然后虚拟机会将 8080 转发到 80 并备份您的内容会来的。

    在您安装 Anvil/Pow 并设置它们后,运行以下代码:

    echo 8080 > ~/.pow/mycoolsite
    

    然后单击任务栏中的 Anvil(您可能需要刷新它或关闭并重新打开)并打开站点,就这样,什么?真的吗? Pow 和 Anvil 摇滚!!

    所以我找到了两种方法,我确信您可以使用 Hosts 文件做一些事情,而我曾经做过很多事情。但是,这些其他可用的方法确实很容易忘记那个讨厌的主机文件。

    Windows 用户(以及不喜欢前两种方式的 Mac 用户)注意事项:您可以使用 Vagrant Host Manager,您可以了解如何设置它here on github。它是一个 vagrant 插件,基本上会为你编辑你的 hosts 文件,你所做的就是你的 vagrantfile 配置,然后你就可以继续下去了。我刚刚在 Windows 7 上对其进行了测试,它在那里工作,所以它应该很好,如果您有任何问题,只需查看 github 上的文档或提交问题供 Vagrant Host Manager 团队审查。

    【讨论】:

      【解决方案2】:

      我将访客端口更改为 5656,它工作正常。运行 lsof -i :8080 时,我没有看到任何结果,所以我认为没有使用该端口,也许我错了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-12
        • 2012-03-22
        • 2012-04-05
        • 2012-02-08
        • 2011-10-19
        • 1970-01-01
        相关资源
        最近更新 更多