Homestead无法远程访问第二个站点

时间:2017-06-09 15:10:10

标签: laravel vagrant homestead vagrantfile

我有一个网站设置正常,但第二个无法远程访问:

我的YAML:

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Projects
  to: /home/vagrant/Projects

sites:
    - map: app.app
      to: /home/vagrant/sites/app1/public
    - map: app2.app
      to: /home/vagrant/sites/app2/public
      port: 8100

ports:
    - host: 81
    - guest: 8100

我可以轻松使用我的IP访问第一个网站 - http://192.168.0.5/但第二个网站无法共享同一个端口,因此我添加了81 -> 8100

当我试图重新配置我的宅基流浪盒时,它说:     本机的配置存在错误。请修理 出现以下错误并再试一次:

vm:
* Forwarded port definitions require a "host" and "guest" value
* Ports to forward must be 1 to 65535
* Ports to forward must be 1 to 65535

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

服务xip.io可以简化这项工作。方法如下:

举个例子,我有以下Homesite应用程序设置'rentmanager.test'。这是我在Homestead上配置的第一个应用程序,因此它是默认路由。要从我的本地网络访问它,我所要做的就是去:

http://rentmanager.test.192.168.5.124.xip.io:8000

'rentmanager.test'。是我在Homestead上的Laravel应用程序的名称,'192.166.5.124。是我在本地网络上的IP地址,'xip.io:8000'是重定向服务域,是在Homestead设置的默认路由之外访问应用程序(8000)所需的端口。

现在,这与您提供的第一个网站开箱即用,但如果我们有多个网站会发生什么?这需要更多的腿部工作。假设我们有一个名为'sitescanner.test'的第二个应用程序,我们想要访问它们。如果我尝试使用新的应用网址访问上面的相同网址,您会看到我仍然是第一个应用程序!让我们解决这个问题。

首先,您需要在hosts文件中添加其他规则。所以,假设我们的新应用程序名为'sitescanner.test':

# Vagrant Sites External Access

192.168.10.10 sitescanner.test.192.168.5.124.xip.io

一旦到位,我们就必须更新Homestead中的配置脚本以创建正确的虚拟主机条目,以便Homestead知道如何路由请求。为此,我们将编辑您的Homestead.yaml。在'sites:'指令下:

- map: sitescanner.test
  to: /home/vagrant/Code/sitescanner/public   
- map: sitescanner.test.192.168.5.124.xip.io
  to: /home/vagrant/Code/sitescanner/public 

一旦完成,只需“流浪汉停止”(如果它已经运行),然后“流浪汉 - 提供”并且您应该可以从

访问您的网站
http://sitescanner.test.192.168.5.124.xip.io:8000

您网络上的任何地方!希望这可以帮助。

虽然我正在考虑这个问题,但最终还是要考虑这个配置:

  • 如果可能,您可能需要在主机上设置静态IP地址。如果您通过DHCP分配了动态IP地址,则可能(并且可能)此配置最终会在您分配新IP时中断。

答案 1 :(得分:3)

根据https://laravel.com/docs/5.4/homestead

上的文件

添加多个网站时无需指定端口

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
    - map: another.app
      to: /home/vagrant/Code/another/public

然后将以下内容添加到您的主机文件

192.168.10.10  homestead.app
192.168.10.10  another.app

确保运行vagrant reload --provision

答案 2 :(得分:0)

我不知道您正在使用哪个版本的Laravel或Homestead,但这是可能的。有了为Laravel 5.6或5.7记录的Homestead版本,您已经完成了95%的工作。

  1. 您应该在port: 8100中使用sites来代替port: 81的配置。
  2. 使用guesthost代替sendto

除了这两个区别之外,我使用了与您完全相同的设置,并且对我有用。

ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Projects
      to: /home/vagrant/Projects

sites:
    - map: app.app
      to: /home/vagrant/sites/app1/public
    - map: app2.app
      to: /home/vagrant/sites/app2/public
      port: 81

ports:
    - send: 8100
      to: 81

如果您的主机文件中有http://app2.app:8100的条目,则可以通过app2.app访问应用程序;如果您不使用主机文件,则可以通过http://192.168.0.5:8100访问应用程序。

>
相关问题