美文网首页实用工具vagrant
Vagrant 虚拟环境利器

Vagrant 虚拟环境利器

作者: 人世间 | 来源:发表于2016-05-02 20:26 被阅读791次

开发环境之痛

软件开发少不了就是开发环境,Web开发对环境的依赖则更大。Web开发中,无论前端还是后端,都少不了与服务器的通信。通常情况,对于前端开发的同学,尤其是Restfull架构大行其道的情况下,前端往往只需要接口文档。不需要在本地再搭建后端服务。现实很残酷,为了接口调试,前端开发往往还需要在本地搭建一个后端服务。当然也有同学喜欢在本地使用代理到远端的开发服务器。不管怎么样,调试的时候还是少不了后端服务。此外,前端又很少知道后端的环境如何搭建。

对于后端,搭建环境虽然不像前端那样迷茫和小心翼翼。可是开发的机器环境和生产部署的环境不一致,往往会出现

代码在我机子上运行没有问题 (But it works on my machine)

为什么push到服务器就跪了。并且每当有新人入职,再配置一遍开发环境也挺闹心的。

为了一劳永逸的解决开发环境,Vagrant应运而生。 当然现在Docker也可以解决类似的问题。

Vagrant 安装

Vagrant可以看成是一个高级的虚拟机桥梁,通过vagrant方便的与虚拟机共享文件。即将宿主机的文件夹映射到虚拟机的文件系统里。还可以映射网络端口,设置通信的私有网络等。vagrant依赖与虚拟机,目前支持的虚拟化方式很多。与Virtualbox、VMware、Docker都能很好的工作。本文使用的环境是 MacOS X 10.11Virtaulebox 5.2.0 Vagrant 1.8.0

在mac下安装vagrant和virtualbox都比较简单,访问官网download安装dmg包安装即可。下载地址为

加载 Vagrant box

下载box镜像

Vagrant可以看成是一个高级的虚拟机镜像管理器。一套完整的环境镜像称之为Box。任何人都可以制作属于自己的box。这个box就是所谓的开发环境,包含系统和相关的软件。由于我们是从零开始,就下载一个官网ubuntu14.04的镜像。除了官网提供了box镜像下载,更多的镜像可以访问这里

添加box镜像

vagrant可以添加不同的box镜像,然后根据这个镜像来创建初始化虚拟环境。使用如下命令添加box

$ vagrant box add ubuntu14 ~/Download/virtualbox.box

ubuntu14是添加之后的box名,可以随意命名。~/Download/virtualbox.box则是之前下载的box镜像。上面的做法是离线添加,vagrant其实也支持在线添加box,只需把box的路径换成官方的box名。类似包管理的方式。

移除box镜像

添加box镜像只需要一次就行,如果不需要了,可以使用如下命令查看box列表和移除box。

$ vagrant box list
ubuntu14 (virtualbox, 0)
$ vagrant box remove ubuntu14

初始化环境

创建虚拟环境

vagrant可以创建不同的box,然后根据box来初始化环境。创建一个ubuntu14的环境。

$ mkdir ~/ubuntu
$ cd ~/ubuntu
$ vagrant init ubuntu14

vagtant init 加上 box 名,就能创建基于该box的环境。init命令执行之后,会在当前目录生成一个Vagrantfile文件。

启动虚拟机

编辑 Vagrantfile 文件,配置共享文件夹和私有网络访问:

# -*- mode: ruby -*-
# vi: set ft=ruby :

configure

Vagrant.configure(2) do |config|
  ...

  # 配置私有网络
  config.vm.network "private_network", ip: "192.168.33.10"

  # 将当前vagrant环境的目录映射到虚拟机里的 /vagrant,并指定nfs共享。
  config.vm.synced_folder ".", "/vagrant", :nfs => true

  ...
end

有一些vagtant的box或者宿主机并不支持nfs共享,需要安装如下包:

宿主linunx:

$ sudo apt-get install nfs-kernel-server nfs-common 

虚拟机:

$ sudo apt-get install nfs-common

当然,后者命令的执行,必须先启动虚拟机,才能执行安装嘛。启动虚拟机很简单,运行:

$ vagrant up

虚拟机将会启动,一堆配置输出,中途需要授权设置虚拟机的密码。如果在设置mount 共享文件夹出现如下错误:

Failed to mount folders in Linux guest. This is usually beacuse
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group apache | cut -d: -f3`,dmode=777,fmode=777 /vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g apache`,dmode=777,fmode=777 /vagrant /vagrant

可能就是需要给虚拟机安装nfs-common

登录虚拟机

vagrant和宿主机会在虚拟机启动的时候生成 ssh相关的配置。可以直接使用ssh登录虚拟机:

$ vagrant ssh

登录虚拟机之后,可以执行刚才的安装 nfs-common。然后重启虚拟环境即可。

$ vagrant reload

任何修改了Vagrantfile文件的配置,都需要reload虚拟环境才能生效。

加下来,查看虚拟环境的/vagrant将会看见该文件夹下也有一个Vagrantfile文件。并且在该文件夹创建的文件,都将在宿主机和虚拟环境一模一样,两个文件夹实现了nfs共享。

关闭和销毁虚拟环境

当不需要使用虚拟环境的时候,可以使用如下命令关闭虚拟机

$ vagrant halt

关闭之后可以使用vagrant up再一次启动虚拟机。当不需要该环境的时候,可以使用vagrant destroy 销毁虚拟机。

登录虚拟机,安装nginx,然后访问192.168.10.33,即可看见宿主主机访问虚拟环境啦

在虚拟机中安装nginx

$ sudo apt-get install nginx

在宿主机访问192.168.10.33即可看见nginx处理的请求。

打包

创建了虚拟环境之后,这个环境就可以模拟生产环境进行部署web应用程序。然后打包这个环境成为新的box。

$ vagrant package --output new_ubuntu14.box --vagrantfile Vagrantfile

再分发给不同的人,当他们也安装了vagrant和virutalbox,就能依次创建一个box,并初始化和生产环境一致的开发环境啦。

相关文章

  • Vagrant 虚拟环境利器

    开发环境之痛 软件开发少不了就是开发环境,Web开发对环境的依赖则更大。Web开发中,无论前端还是后端,都少不了与...

  • 什么是Vagrant

    什么是Vagrant ? Vagrant 是一个对虚拟环境管理的工具,必须借助virtualbox/vm 才能使用...

  • 用 Vagrant 一键部署开发环境 kafka 集群

    vagrant介绍 vagrant是一个很适合开发者的虚拟环境部署工具,本身集成了主流的虚拟器管理工具,支持vmv...

  • nginx学习环境准备

    环境 我使用的是vagrant+VirtuaBox搭建的虚拟环境,以下是vagrantfile信息: 环境调试确认...

  • Vagrant 创建虚拟环境

    下载和安装基本组件 下载一般很简单,安装也很简单,可以采用 dpkg 和 apt-get 的安装方式。 下载安装 ...

  • 开发环境利器vagrant

    引言团队合作的编码过程中,有时会因为个人开发环境的不同,而出现“代码在我的机器上运行没问题,在别人的机器上有问题”...

  • 新手在mac下关于Python虚拟环境 venv 的使用

    参考 廖雪峰 virtualenvPython 项目管理的利器:虚拟环境 venv 的使用 一、环境 mac环境 ...

  • vargrant - 创建自己的box

    思路:1.使用虚拟机创建虚拟环境: centos7 + lnmp2.使用vagrant打包成box 一,下载 vi...

  • vagrant创建centos虚拟环境

    下载vagrant并安装 创建centos/7环境,创建VagrantFile: vagrant init cen...

  • 简明 Nginx Location Url 配置笔记

    基本配置 为了探究nginx的url配置规则,当然需要安装nginx。我使用了vagrant创建了一个虚拟环境的u...

网友评论

    本文标题:Vagrant 虚拟环境利器

    本文链接:https://www.haomeiwen.com/subject/gtulrttx.html