使用Vagrant来搭建开发环境

在大半年前刚刚接触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环境。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Debian社区

改善Debian Linux软件包管理的七款工具

如果你运行Debian或它的衍生版本之一(比如Linux Mint或Ubuntu),迟早会遇到apt-get和dpkg,它们是主要的软件包管理命令。然而,这些只...

1943
来自专栏惨绿少年

企业架构规划及服务器优化参数

第1章 企业架构规划 1.1 架构图 ? 1.1.1 用户访问网站组成 类型 作用 实现方式 顾客-用户 访问网站的人员 ...

3310
来自专栏FreeBuf

漏洞预警 | Windows修复两个严重远程代码执行漏洞(CVE-2017-8543/8464)

6月13日,微软发布补丁修复两个严重远程代码执行漏洞,分别存在于LNK文件和Windows Search功能中。 概述 微软的Patch Tuesday更新发布...

3386

使用dotCloud在云端部署Django应用程序

dotCloud的目标是提供一堆不同的独立服务,您可以使用它作为构建模块来构建您的应用程序。如果你需要一个数据库,从他们所支持的服务中挑选一个。需要一个在前端使...

2387
来自专栏容器云生态

Openstack平台搭建之第一天 基于RDO方式搭建

openstck基于web方式的rdo部署 If you have any question ,please contact me by weichuangxx...

33610
来自专栏影子

Python之Django环境搭建(MAC+pycharm+Django++postgreSQL)

Python之Django环境搭建(MAC+pycharm+Django++postgreSQL)

1922
来自专栏影子

Python之Django环境搭建(MAC+pycharm+Django++postgreSQL)

1973
来自专栏Java架构师历程

ZooKeeper基本原理

ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

1735
来自专栏听雨堂

“automation服务器不能创建对象”错误之解决

实例:在控制面板中打开“用户帐户”,选择其中的“更改用户登录或注销的方式”时出现“automation服务器不能创建对象”的错误提示。(如果在执行其他操作时,出...

3307
来自专栏程序员同行者

centos7安装python的MySQLdb模块

1332

扫码关注云+社区

领取腾讯云代金券