Homestead 无法远程访问第二个站点
Homestead cant access second site remotely
我有一个站点设置正常,但无法远程访问第二个站点:
我的 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
.
当我尝试重新配置我的 homestead vagrant box 时,它说:
这台机器的配置有错误。请修复
以下错误并重试:
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
有什么想法吗?
根据 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
服务 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' 的应用程序。如果我尝试使用新应用程序 URL 访问上面相同的 URL,您会看到我仍然收到第一个应用程序!让我们也解决这个问题。
首先,您需要在主机文件中添加一条额外的规则。因此,假设我们的新应用名为 '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
完成后,只需 'vagrant halt'(如果它已经 运行),然后 'vagrant up --provision',您应该可以从
访问您的站点
http://sitescanner.test.192.168.5.124.xip.io:8000
网络上的任何地方!希望这可以帮助。
思来想去,最后考虑一下这个配置:
- 如果可能,您可能希望在主机上设置一个静态 IP 地址。如果您通过 DHCP 分配了一个动态 IP 地址,那么如果您曾经分配过一个新 IP,则此配置可能(并且很可能)最终会中断。
我不知道您使用的 Laravel 或 Homestead 是哪个版本,但这是可能的。使用 Laravel 5.6 或 5.7 记录的 Homestead 版本,您已经完成了 95% 的工作。
- 您应该使用
port: 81
. ,而不是在 sites
配置中使用 port: 8100
- 代替
guest
和host
,使用send
和to
。
除了这两个差异外,我使用的设置与您完全相同,它适用于我。
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
如果您的主机文件有 app2.app
的条目,您将能够通过 http://app2.app:8100
访问您的应用程序,如果您不使用主机文件,则可以通过 http://192.168.0.5:8100
访问您的应用程序。
我有一个站点设置正常,但无法远程访问第二个站点:
我的 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
.
当我尝试重新配置我的 homestead vagrant box 时,它说: 这台机器的配置有错误。请修复 以下错误并重试:
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
有什么想法吗?
根据 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
服务 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' 的应用程序。如果我尝试使用新应用程序 URL 访问上面相同的 URL,您会看到我仍然收到第一个应用程序!让我们也解决这个问题。
首先,您需要在主机文件中添加一条额外的规则。因此,假设我们的新应用名为 '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
完成后,只需 'vagrant halt'(如果它已经 运行),然后 'vagrant up --provision',您应该可以从
访问您的站点http://sitescanner.test.192.168.5.124.xip.io:8000
网络上的任何地方!希望这可以帮助。
思来想去,最后考虑一下这个配置:
- 如果可能,您可能希望在主机上设置一个静态 IP 地址。如果您通过 DHCP 分配了一个动态 IP 地址,那么如果您曾经分配过一个新 IP,则此配置可能(并且很可能)最终会中断。
我不知道您使用的 Laravel 或 Homestead 是哪个版本,但这是可能的。使用 Laravel 5.6 或 5.7 记录的 Homestead 版本,您已经完成了 95% 的工作。
- 您应该使用
port: 81
. ,而不是在 - 代替
guest
和host
,使用send
和to
。
sites
配置中使用 port: 8100
除了这两个差异外,我使用的设置与您完全相同,它适用于我。
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
如果您的主机文件有 app2.app
的条目,您将能够通过 http://app2.app:8100
访问您的应用程序,如果您不使用主机文件,则可以通过 http://192.168.0.5:8100
访问您的应用程序。