【Homestead Master】系列是Laravel底层核心技术实战揭秘这一课程里的第一章,因为考虑到该章内容学员们可能要经常来回查阅,同时也为了提高课程更新速度,所以这一章以文字的形式发布在此。
之前我们提到了使用vagrant share
来分享你的本地站点,前提是你的homestead里只有一个站点,或者说其他站点都注释掉。如果嫌这样麻烦,想着说随时分享你的特定开发站点,比如说我们执行一个share taskmanager.app
就能分享我们的taskmanager站点,于此同时不影响其他站点。这个也是可以的,homestead已经提前为我们想到了这一点,实际上我们vagrant ssh
进入虚拟机,然后执行share taskmanager.app
就可以实现这样的效果。
但是,这个也是有前提的,就是你的homestead版本得是5.4的,与之对应的homestead vagrant box的版本得是2.0以上的,相应的离线包呢可以点这个链接密码: 8brx
更新homestead及相应box的注意事项(为避免入坑,建议通读下面的步骤,理解了以后再实际操作):
- 如果你的网络够好,可以直接执行
vagrant box update
来更新box- 如果你要使用上面的离线安装包,记得添加box之前先导出你之前虚拟机里的数据,因为添加了新的box之后,你需要
vagrant destroy
以后再up
才能用到这个新的box- 只是更新box还不行,还需要更新homestead,说白了就是更新你的homestead文件夹,离线文件里有一个打包好的,你也可以直接
git clone //github.com/laravel/homestead.git Homestead
- 在更新homestead文件夹之前,记得将以前的这个文件夹重命名一下以实现备份,因为你很可能需要之前的yaml文件,或者after.sh文件,或者之前那个虚拟机的ID文件
有了最新版的homestead及box了以后,就可以vagrant ssh
进入虚拟机,然后执行share taskmanager.app
:
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Update update available (version 2.2.4, Ctrl-U to update)
Version 2.2.3
Region United States (us)
Web Interface //127.0.0.1:4040
Forwarding //0ac54ff9.ngrok.io -> localhost:80
Forwarding //0ac54ff9.ngrok.io -> localhost:80
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
然后就可以看到这样的一个ngrok界面,ngrok是一个内网转发的开源程序,官网在此,更具体的大家可以自行去探索。
在上面的界面里我们可以看到,它为我们分配了两个URL,一个http的,一个https协议的,具体路径都是0ac54ff9.ngrok.io
, Region(服务器地区)默认是us, 同时下方的Connections
列表是用来显示当前访问这个地址的访问记录,如果此时有人访问了你的共享站点,那么就会多一条类似记录:
Connections ttl opn rt1 rt5 p50 p90
0 1 0.00 0.00 0.00 0.00
HTTP Requests
-------------
GET /favicon.ico 200 OK
GET /login 200 OK
GET / 302 Found
此时我们就知道有人访问了我们的根目录/
,然后被重定向(302)到了login
页面。
当然我们也可以做一些自定义,比如说share taskmanager.app --region=ap
,这样就选择了ngrok的服务器地区为亚太地区(Asia Pacific,实际服务器位置是新加坡),这样访问速度会快一些,也就不需要非得设置代理才能访问了。
可能很多同学觉得大部分时候我都不会需要分享自己的本地测试站点,因此这个share命令是没啥用的,可能对有些人是这样的。那么这里分享一个典型的使用案例,就是比如在我们本地开发支付相关的功能时,比如支付宝支付,都会要求分别有同步和异步的返回地址,而且必须是公网能访问的,用于返回或通知相关的支付信息与结果。那么显然这个时候,你的本地站点,就得起码有两个url能被外网访问到,否则你就没法测试支付功能了。那么这时你就可以比如share site.test --region=ap
,它会给你个地址,假设0ac54ff9.ap.ngrok.io
,你就可以进一步设置0ac54ff9.ap.ngrok.io/pay/return
为return_url,然后0ac54ff9.ap.ngrok.io/pay/notify
这个路由为notify_url。这样这个可能头疼的问题就解决了。
还有一个参数是-subdomain
,用来自定义你的子域名,比如自定义成pilishen.ngrok.io
,但这个是付费服务。
好了,是vagrant share
,还是vagrant ssh
后share
, It's Your Call!