Vagrant简单使用

Vagrant简单使用

一、Vagrant介绍


Vagrant是什么

Vagrant 是一款用来构建虚拟开发环境的工具,常适合 php/python/ruby/java 这类语言开发 web 应用。

图片描述

为什么用它

统一环境:我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行。“代码在我机子上运行没有问题”这种说辞将成为历史。

节省时间:重装电脑后直接使用封装好的环境即可,无需重新配置开发环境。而如果让每个开发人员都自己去搭建本地环境,安装虚拟机、下载ISO镜像、选择规格安装创建vm、安装OS、配置环境,会耗费非常多的时间。

创建环境副本:我们有时候需要向操作系统安装软件,但又怕安装失败对开发环境造成污染最终放弃。有了Vagrant你可以将当前开发环境打包成Box,用这个Box新创建一个Vagrant实例,然后在新实例中进行你想做的人和操作。

几个概念

  • Provider:供应商,在这里指Vagrant调用的虚拟化工具。Vagrant本身并没有能力创建虚拟机,它是调用一些虚拟化工具来创建,如VirtualBox、VMWare、Xen、Docker,甚至AWS,这些虚拟化工具只要安装好了,vagrant会自动封装在底层通过统一的命令调用。也就是说使用vagrant时你电脑上还需要安装对应的Provider,默认是免费开源的virtualbox。

  • Box:可被Vagrant直接使用的虚拟机镜像文件,大小根据内容的不同从200M-2G不等。针对不同的Provider,Box文件的格式是不一样的,从 vagrantcloud.com 你可以找到社区维护的box。

  • Vagrantfile:Vagrant根据Vagrantfile中的配置来创建虚拟机,是Vagrant的核心。在Vagrantfile文件中你需要指明使用哪个Box(可以下载好的或自己制作,或指定在线的URL地址),虚拟机使用的内存大小和CPU,需要预安装哪些软件,虚拟机的网络配置,与host的共享目录等。

  • Provisioner:是Vagrant的插件的一种。大部分现成的box并不是你正好想要的,通过使用你熟悉的provisioner,比如Puppet,可以在你使用vagrant up启动虚拟机时自动的安装软件、修改配置等初始化操作。当然你也可以在最先启动虚拟机后,使用vagrant ssh进去然后手动安装软件,但毕竟不是所有人都是系统管理员,写好Vagrantfile后无需人工干预马上就可以使用vm。目前支持并实现的provisioning有Puppet、Salt、Ansible、Chef这些知名的自动化运维工具,当然需要一定的使用经验;也可以使用shell provisioner,故名思议这个插件就是通过执行shell命令完成统一的作用。

  • Guest Additions:这个是常在下载 base box 介绍里有的,一般用来实现host到vm的端口转发、目录共享,在开发环境上都建议装上以便测试。

启动示意

图片描述

二、安装步骤



本博客不介绍具体安装细节,请自行搜索安装详细流程。

1、安装VirtualBox

虚拟机还是得依靠 VirtualBox 来搭建,免费小巧,有Mac OS/Windows/Linux版本。

下载地址:https://www.virtualbox.org/wi...

提示:虽然 Vagrant 也支持 VMware,不过 VMware 是收费的,对应的 Vagrant 版本也是收费的

2、安装Vagrant

Vagrant支持Max OS、Windows、CentOS以及基于Debian的发行版本Ubuntu

下载地址:https://www.vagrantup.com/dow...

3、下载Box

官方box: https://atlas.hashicorp.com/b... 暂时只看到搜索名称,没法下载
第三方box: http://www.vagrantbox.es/ 提供了各发行版/provider的下载链接,貌似官方的url也有

三、启动步骤


1、添加Box镜像

命令:vagrant box add {box-name} {box-url}

举例:

vagrant box add ubuntuBox ~/Downloads/ubuntu.box  //添加本地Box
Box相关命令
  • 查看Box列表:vagrant box list

  • 删除Box:vagrant box remove {box-name}

2、创建一个Vagrant环境

命令:vagrant init {box-name}

举例:

vagrant init ubuntuBox

执行init命令后,会在当前文件夹创建一个Vagrant配置文件Vagrantfile

3、启动Vagrant

命令:vagrant up

举例:

注:执行up命令前需先cd到Vagrant目录

vagrant up

执行up命令后,终端会输出一系列启动信息,第一次启动会花费几分钟时间。

4、连接Vagrant

命令:vagrant ssh

举例:

注:Vagrant实例的用户名密码默认都为“vagrant

vagrant ssh

执行ssh命令就相当于使用vagrant身份登录实例,你可以对操作系统进行操作,比如安装LNMP环境。

5、配置Vagrant

注:修改完后执行vagrant reload重启虚拟机生效配置文件。

配置IP

为了在Host机上通过浏览器访问Vagrant虚拟机,需要给虚拟机配置一个IP地址。使用文本编辑器修改Vagrant的Vagrantfile,如下:

config.vm.network :private_network, ip: "192.168.33.10"

重启虚拟机后就可以在浏览器通过192.168.33.10就可以访问。

设置共享文件夹

因为我们在Host机上开发,那么编写代码时如果将修改同步到虚拟机实时查看效果呢?我们可以配置共享文件夹来实现,修改Vagrantfile

config.vm.synced_folder "/Users/Sam/Code/web/", "/web", create:true,
:owner => "vagrant",
:group => "www-data",
:mount_options => ["dmode=775","fmode=664"]

配置解释:

config.vm.synced_folder host_folder vagrant_folder

第一个参数是Host机的文件夹路径,如果你填写的是相对路径的话,则文件夹是相对于当前虚拟机目录。
第二个参数是虚拟机的文件夹路径,这个路径必须是绝对路径。

可选参数:

  • create:Bool值。当Host机目录不存在是,是否自动创建。

  • group:虚拟机文件夹所属用户组。

  • owner:虚拟机文件夹所属用户。

  • disabled:Bool值。是否禁用。

  • mount_options:挂载参数。

四、常用命令


命令功能
vagrant init初始化虚拟机
vagrant up启动虚拟机
vagrant halt关闭虚拟机
vagrant reload重启虚拟机
vagrant ssh登录虚拟机
vagrant status查看虚拟机运行状态
vagrant destroy销毁虚拟机
vagrant box list查看本地Box列表
vagrant box add添加Box
vagrant box remove删除Box
vagrant package打包虚拟机成Box

五、注意事项


使用 Apache/Nginx 时会出现诸如图片修改后但页面刷新仍然是旧文件的情况,是由于静态文件缓存造成的。需要对虚拟机里的 Apache/Nginx 配置文件进行修改:


#Apache 配置(httpd.conf 或者 apache.conf)添加:
EnableSendfile off

#Nginx 配置(nginx.conf)添加:
sendfile off;

六、参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值