与Laravel Homestead一起使用Vagrant Share

9

我在使用laravel homestead vagrant框时遇到了问题无法与vagrant share一起使用。我的homestead.yaml文件如下:

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

authorize: /Users/me/.ssh/id_rsa.pub

keys:
    - /Users/me/.ssh/id_rsa

folders:
    - map: /Users/me/Projects/laravel
      to: /home/vagrant/laravel

sites:
    - map: laravel.app
      to: /home/vagrant/laravel/public

variables:
    - key: APP_ENV
      value: local

当我访问 http://laravel.app:8000 时,一切都正常。但是当我启动 vagrant share 后,生成的URL返回错误No input file specified. 我被难住了。在谷歌上搜索了几个小时也没有找到解决方案。我相信这只是一些基本的配置问题,我没有连接好点。任何指针都将不胜感激。谢谢!
4个回答

9

有一个解决方案,无需在您的 homestead VM 上进行任何操作。

您可以安装一个名为 ngrok 的程序,它与 vagrant share 类似,但在处理 Homestead 使用的多个站点时效果更好。您需要注册一个帐户,但基本使用是免费的。

运行:ngrok http -host-header=rewrite your-local-site.app:80

(其中 your-local-site.app 是在您的Homestead.yaml文件中用于映射指令的名称)

然后,ngrok 给出的 URL 将全球可用。


7

@sanaco的回答对我来说缺少了一些步骤。这是在登录后创建共享的完整命令:

vagrant share --http 80 --name silly-sausage

完成后,命令将输出共享链接URL,应该看起来像这样:
http://silly-sausage.vagrantshare.com

一旦共享成功,您需要使用ssh登录到vagrant box。

 vagrant ssh

并运行

serve silly-sausage.vagrantshare.com ~/Code/project/path/public 

如果不加http标识,vagrant会将443分配给http,这会导致nginx抱怨使用HTTPS端口进行HTTP连接。

通过指定名称,您只需要在第一次执行serve命令。


Mike,你能否在这个帖子中看一下我的问题:https://stackoverflow.com/questions/55108320/vagrant-share-and-laravel-homestead - padawanTony
1
@padawanTony 使用 Ngrok 并将 --host-header 设置为您的 Laravel 应用程序名称,例如 myproject.dev。这样更容易设置和保持工作状态。 - Mike Miller
谢谢你的回答,Mike。你能在我的帖子中发布一个完整的答案(逐步说明)吗?我以前从未使用过ngrok。谢谢。 - padawanTony

3
第一步是为Vagrant Cloud创建一个帐户,如果您还没有创建,请先创建。
创建完成后,在您的终端(不要登录到Homestead机器)中运行vagrant login并使用您的详细信息登录。
然后运行vagrant global-status以查找Homestead正在运行的vagrant机器的ID。
运行vagrant share 123a4(其中123a4是机器ID),您的机器将被分享!
请注意,您可能需要设置Nginx配置以侦听为您生成的URL,以便它指向机器上的正确站点。

1
哇,谢谢。我已经试了很长时间才弄清楚这个问题。 - yan
你能解释一下最后一段吗?你如何“监听URL”? - Robo Robok
你需要将URL映射到Vagrant机器上的目录。因此,使用Homestead,您可以运行serve url-to-vagrant-cloud.com ~/path/to/your/code/public来为您完成这项工作。 - Sacha
@Sacha,你能否在这个帖子中看一下我的问题:https://stackoverflow.com/questions/55108320/vagrant-share-laravel-homestead-ubuntu - padawanTony

0
在您的Homestead目录中尝试此命令:vagrant provision 使用此命令获取共享URL: vagrant share 有时在Windows上它不起作用。 使用 vagrant share --http 8000 8000是端口,因为homestead使用端口转发8000 -> 80 注意:要使用vagrant share,您必须安装ngrok

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