virtualbox+vagrant学习

Wesley13
• 阅读 671

HTTP Sharing

Vagrant Share可以创建一个可公开访问的URL端点来访问在Vagrant环境中运行的HTTP服务器。这被称为“HTTP共享”,在使用Vagrant Share时默认启用。

因为这种共享模式创建了一个可公开访问的URL,所以访问方不需要安装Vagrant来查看你的环境。

这有许多有用的用例:你可以通过向internet公开你的Vagrant环境来测试webhook,你可以向客户、团队成员或经理等显示你的工作。

1.Usage使用

为了使用HTTP共享,可以简单地运行vagrant share命令:

userdeMBP:~ user$ vagrant share
Vagrant Share now defaults to using the `ngrok` driver.
The `classic` driver has been deprecated.

For more information about the `ngrok` driver, please
refer to the documentation:

  https://www.vagrantup.com/docs/share/

==> default: Detecting network information for machine...
The Vagrant environment you're attempting to share appears to
not be running. Please verify that it is running and try again.

这是因为virtualBox上的虚拟机挂起了,需要调用vagrant resume命令将其恢复,再运行vagrant share:

userdeMBP:~ user$ vagrant share
Vagrant Share now defaults to using the `ngrok` driver.
The `classic` driver has been deprecated.

For more information about the `ngrok` driver, please
refer to the documentation:

  https://www.vagrantup.com/docs/share/

==> default: Detecting network information for machine...
    default: Local machine address: 127.0.0.1
    default:  
    default: Note: With the local address (127.0.0.1), Vagrant Share can only
    default: share any ports you have forwarded. Assign an IP or address to your
    default: machine to expose all TCP ports. Consult the documentation
    default: for your provider ('virtualbox') for more information.
    default:  
Vagrant was unable to detect an HTTP port for your machine.

Because your machine appears to have no static IP associated with
it, Vagrant scans through your forwarded ports, looking for one
that responds to an HTTP request. Vagrant couldn't find any
functioning HTTP port!

There are a few options to fix this error:

  1. Create a forwarded port pointing to your HTTP server inside
     your Vagrant machine.

  2. Specify an HTTP port manually with `--http` to this command.

  3. Assign a non-local address to your machine. This may or may
     not be possible depending on what provider you're using.

  4. Make sure that the HTTP server is up and running within
     your machine. Vagrant share won't start until it is
     reachable.

这是因为vagrant share探测本地发现没有打开一个http服务端口, 无法实现共享。

因此打开了一个端口为80的服务器,并使用--http参数指明该端口:

userdeMBP:~ user$ vagrant share --http 80
Vagrant Share now defaults to using the `ngrok` driver.
The `classic` driver has been deprecated.

For more information about the `ngrok` driver, please
refer to the documentation:

  https://www.vagrantup.com/docs/share/

==> default: Detecting network information for machine...
    default: Local machine address: 127.0.0.1
    default:  
    default: Note: With the local address (127.0.0.1), Vagrant Share can only
    default: share any ports you have forwarded. Assign an IP or address to your
    default: machine to expose all TCP ports. Consult the documentation
    default: for your provider ('virtualbox') for more information.
    default:  
    default: Local HTTP port: 80
    default: Local HTTPS port: disabled
    default: Port: 2222
==> default: Creating Vagrant Share session...
/opt/vagrant/embedded/gems/2.2.2/gems/vagrant-2.2.2/lib/vagrant/util/subprocess.rb:158:in `rescue in execute': No such file or directory - ngrok (Vagrant::Util::Subprocess::LaunchError)
    from /opt/vagrant/embedded/gems/2.2.2/gems/vagrant-2.2.2/lib/vagrant/util/subprocess.rb:151:in `execute'
    from /Users/user/.vagrant.d/gems/2.4.4/gems/vagrant-share-1.1.9/lib/vagrant-share/activate.rb:2451:in `block in start_ngrok_proxy'

这个问题是因为你没有安装成功ngrox或者是没有将其放在正确的位置,导致vagrant没有能够成功找到它

安装本博客ngrok反向代理学习-1-简介所写将其安装下来,然后要记得将下载下来的ngrox可执行文件放在你本地的vagrant可执行文件所在的位置:

先查看vagrant所在的位置并打开:

userdeMBP:~ user$ which vagrant
/usr/local/bin/vagrantuserdeMBP:~ user$ open /usr/local/bin

然后将下载下来的ngrox可执行文件放到该bin目录下:

virtualbox+vagrant学习

然后再运行就成功了:

userdeMBP:~ user$ vagrant share --http 80
Vagrant Share now defaults to using the `ngrok` driver.
The `classic` driver has been deprecated.

For more information about the `ngrok` driver, please
refer to the documentation:

  https://www.vagrantup.com/docs/share/

==> default: Detecting network information for machine...
    default: Local machine address: 127.0.0.1
    default:  
    default: Note: With the local address (127.0.0.1), Vagrant Share can only
    default: share any ports you have forwarded. Assign an IP or address to your
    default: machine to expose all TCP ports. Consult the documentation
    default: for your provider ('virtualbox') for more information.
    default:  
    default: Local HTTP port: 80
    default: Local HTTPS port: disabled
    default: Port: 2222
==> default: Creating Vagrant Share session...
==> default: HTTP URL: http://51399c1d.ngrok.io
==> default:

然后打开http://localhost:4040网页:

virtualbox+vagrant学习

然后用手机登录http://51399c1d.ngrok.io网址,可见成功访问到了该80端口的网址:

virtualbox+vagrant学习

然后http://localhost:4040页面出现详细的连接信息:

virtualbox+vagrant学习

vagrant检测HTTP服务器在vagrant环境中运行的位置,并输出可用于访问此共享的端点。只要把这个URL(即上面的http://51399c1d.ngrok.io网址)给任何你想要分享它的人,他们就能访问你的vagrant环境!

如果vagrant在检测你的环境中的服务器端口时遇到困难,请使--http和/或--https标志来明确开启的端口。

该共享在vagrant share运行期间是可访问的。按Ctrl-C退出共享会话,即:

==> default: Creating Vagrant Share session...
==> default: HTTP URL: http://51399c1d.ngrok.io
==> default: 
^C==> default: Halting Vagrant share!

⚠️任何人都可以访问这个URL,所以如果你正在共享敏感信息,请小心。

2.Disabling禁用

如果你想禁用公共可访问端点的创建,请使用--disable-http标志运行vagrant share。这将使用其他可用方法之一(如ssh等)共享你的环境,并且不会创建URL端点。

即不会去检测是否有http的服务端口正在打开:

userdeMBP:~ user$ vagrant share --disable-http
Vagrant Share now defaults to using the `ngrok` driver.
The `classic` driver has been deprecated.

For more information about the `ngrok` driver, please
refer to the documentation:

  https://www.vagrantup.com/docs/share/

==> default: Detecting network information for machine...
    default: Local machine address: 127.0.0.1
    default:  
    default: Note: With the local address (127.0.0.1), Vagrant Share can only
    default: share any ports you have forwarded. Assign an IP or address to your
    default: machine to expose all TCP ports. Consult the documentation
    default: for your provider ('virtualbox') for more information.
    default:  
    default: Local HTTP port: disabled  //可见没有检测当前正打开的80端口
    default: Local HTTPS port: disabled //ssh在默认情况下就是禁用的
    default: Port: 2222
==> default: Creating Vagrant Share session...

当看完ssh后在运行一遍这个命令看结果

3.Missing Assets

共享的web应用程序必须使用相对路径来加载任何本地资产,如图像、样式表、javascript。

开发中的web应用程序将被远程访问。这意味着如果你有任何硬编码的资产(图像、样式表等)的URLs如 virtualbox+vagrant学习,它们将不会为那些访问你的共享的人加载这些资产

大多数web框架或工具包都有设置或帮助程序来生成相对路径。例如,如果你是WordPress开发人员,Root Relative URLs插件将自动为你完成这项工作。

相对于资产的url通常是一种最佳实践,所以无论如何你都应该这样做!

4.HTTPS (SSL)

vagrant share还可以公开可以通过SSL访问的SSL端口。创建HTTPS共享需要一个非免费的ngrok帐户。

在开发环境中,vagrant share默认情况下在端口443上查找任何SSL通信。如果找不到,则默认禁用SSL。

可以使用--disable-https标志显式禁用HTTPS共享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这