使用Vagrant来搭建开发环境

2017/05/16 技术笔记

在大半年前刚刚接触PHP的时候,因为那时候只想先熟悉PHP的语法,并且对配置服务器、Mysql等一干事情不想花费太多时间,于是在网上找到了XAMPP这个解决方案。当时那是惊为天人,感觉虚拟主机很是方便。但是随着后来自己的慢慢深入,并且也在云服务器上陆续的部署自己的小项目,这才感觉到一个很恶心的事情,就是本地和线上的开发环境不同意,导致自己在频繁的修改配置文件,并且主力开发机器是用mac,家里还有win10的台式机,线上是Liunx系统,各种不一样的环境让我想寻求一个解决方案,统一线上和线下的开发环境。

在这种想法的指引下,很快有一个解决方案进入我的视线。通过搭建Liunx虚拟机,解决线上线下开发环境不统一的情况。这个解决方案,就是VirtualBox + Vagrant。目前他能完成我的所有需求,并且提供了很快捷的打包,来实现开发环境的迁移及统一部署,非常好用。本文就来记录如何使用Vagrant这个工具,好让我在日后部署环境的时候,能够把这些命令翻出来再看看。

安装

实际上Vagrant只是一个让你可以方便设置你想要的虚拟机的便携式工具,它底层支持VirtualBox、VMware甚至AWS作为虚拟机系统,本书中我们将使用VirtualBox来进行说明,所以第一步需要先安裝Vagrant和VirtualBox。

安装环境:mac 注:windows环境下,基本一致

安装VirtualBox

直接来到官网 https://www.virtualbox.org/wiki/Downloads 点击下载最新的virtualbox,双击安装,一路傻瓜化完成。

安装Vagrant

在进行完上一个步骤后,我们就要考虑我们的虚拟机需要使用什么操作系统了。因为我线上使用了Ubuntu16.04的操作系统,所以我线下也选择了16.04的Ubuntu操作系统。在以前使用vm的过程中,我们需要自己去下载镜像,然后进行相关的安装,设置系统等等操作。而vagrant的开源社区,提供了很多已经打包好的操作系统,在vagrant的世界里被称为box。在 http://www.vagrantbox.es/ 这里你可以找到你想要的操作系统box,当然你也可以自己制作一个。后续教程会讲到,这里就不多说。

我的开发机是Mac,所以我建立了如下的开发环境目录:

$ /Users/vagrant
$ cd /Users/vagrant

这里注意,vagrant提供的在线安装,有可能因为天朝的网络原因,很慢或者下载失败,所以我会找到box的下载链接,用迅雷等工具下载好这个盒子。之后执行安装设置

$ vagrant box add {title} {url}
$ vagrant init {title}
$ vagrant up

vagrant box add 是添加box的命令 其中{title}可以自行设置,我这里使用的是 Ubuntu ,{url}是下载到本地box路径。我的路径是:/Users/vagrant/ubuntu.box

box中的镜像文件被放到了:/Users/.vagrant.d/boxes/,如果在window系统中应该是放到了: C:\Users\当前用户名.vagrant.d\boxes\目录下。


# 如果是才add 的box,就必须执行本步骤,初始化一次后,以后启动系统,就不需要执行本步骤。
$ vagrant init Ubuntu

输出如下 :

A `Vagrantfile` has been placed in this directory.
You are now ready to `vagrant up` your first virtual environment!
Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.

这样就会在当前目录生成一个 Vagrantfile的文件,里面有很多配置信息,后面我在慢慢说,默认不做任何配置改动,也是可以启动系统的。

# 启动系统
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'base'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
...

ssh链接到虚拟机

经过以上操作后,完成了虚拟机的安装,现在需要登录上虚拟机,进行操作。链接很简单,可以使用第三方(xshell等)shell工具或系统自带的,进行登录 在系统中,如mac,可直接使用 vagrant ssh 来完成链接。或者使用第三方如xshell,ip地址是:localhost,端口,需要观察,映射的22端口是多少。一般是2200 或者2222 用户名与密码均是: vagrant

vagrant的命令详解

命令 作用
vagrant box add 添加box的操作
vagrant init 初始化box的操作,会生成vagrant的配置文件Vagrantfile
vagrant up 启动本地环境
vagrant ssh 通过 ssh 登录本地环境所在虚拟机
vagrant halt 关闭本地环境
vagrant suspend 暂停本地环境
vagrant resume 恢复本地环境
vagrant reload 修改了 Vagrantfile 后,使之生效(相当于先 halt,再 up)
vagrant destroy 彻底移除本地环境
vagrant box list 显示当前已经添加的box列表
vagrant box remove 删除相应的box
vagrant package 打包命令,可以把当前的运行的虚拟机环境进行打包
vagrant plugin 用于安装卸载插件
vagrant status 获取当前虚拟机的状态
vagrant global-status 显示当前用户Vagrant的所有环境状态

后记

配置好Vagrant只是开始,而之后在Linux配置环境,可以参考我之前的一篇文章,在《云服务器上部署Laravel》这篇文章,来配置自己的LNMP环境。

Search

    Table of Contents