再谈Vagrant

前言

两年前写过一篇关于Vagrant,最近因为环境需要重温了一下,所以又重新做了一次总结。

Vagrant是什么

Vagrant是构建在虚拟化技术之上的虚拟机运行环境管理工具。通过Vagrant可以轻松实现对虚拟机的管理,包括建立和删除虚拟机、配置虚拟机运行参数、管理虚拟机运行状态、自动化配置和安装开发环境各类软件、打包和分发虚拟机运行环境等,提供了一套基于配置文件和命令行的管理工具。

为什么要使用Vagrant

Vagrant可以为团队开发成员提供一份服务器运行环境的虚拟机,大家都使用统一的开发环境,避免“在我机器上运行是好的,怎么在你机器上不能运行”问题的发生。

Vagrant中Boxes是什么

Boxes是一个包含可运行的操作系统及软件的镜像包,你可以把它理解成一个箱子,箱子里面包含了虚拟机配置、虚拟机硬盘镜像,可以直接被添加到Vagrant中使用。使用box,将不再需要下载ISO镜像文件、新建虚拟机、修改虚拟机配置等操作,因为box文件已经包含了这些,可直接拿过来使用。

Vagrant安装、配置及使用

1.下载VirtualBox并安装

在线下载地址https://www.virtualbox.org/wiki/Downloads

2.下载Vagrant并安装

可以到https://www.vagrantup.com/downloads.html,选择需要的版本进行下载。

3.下载box

vagrantbox种类比较多,可以到http://www.vagrantbox.es/,选择需要的类型进行下载,示例使用下载了Ubuntu precise 64 VirtualBox版本,地址:http://files.vagrantup.com/precise64.box

4.使用box

在使用box之前,创建以下目录结构:

|--Applications

|--vagrant

|--boxes

|—works

执行以下命令:

cd ~/Applications/ mkdir vagrant cd vagrant mkdir boxes mkdir works

然后将下载的precise64.box移动到boxes目录下,然后执行以下命令:

vagrant box add ubuntu precise64.box cd .. cd works vagrant init ubuntu #在works目录下生成Vagrantfile文件

5.修改Vagrantfile文件

找到config.vm.network “public_network",去掉前面的#,然后换行,在其后添加需要的端口映射,如mysql端口,

config.vm.network "forwarded_port", guest: 3306, host: 3306

然后保存。

6.启动Vagrant

使用命令:vagrant up

如果执行受限,使用sudo。启动过程中,可能需要选择网络方式,如下图。

这里可以选择1) en0: Wi-Fi (AirPort),然后继续启动,如果没有报错,则启动成功。这里可能每次启动都需要做选择网络方式,可以配置成自动的方式,即修改Vagrantfile文件,在config.vm.network “public_network”后添加bridge: "en0: Wi-Fi (AirPort)”,结果如下。

7.验证是否启动成功

进入works目录下,执行以下命令:

vagrant ssh

成功连接则启动成功,然后就可以在虚拟机系统中安装应用及操作了,例如安装mysql等。

8.安装MySQL

执行以下命令安装MySQL,

sudo apt-get update sudo apt-get install mysql-server #过程中需要设置root用户的密码,一定要记住 sudo mysql_secure_installation #配置MySQL

9.验证MySQL是否安装成功

在第8步骤的命令行继续执行命令,

mysql -u root -p

输入密码后,如果成功进入则安装和启动成功。

10.虚拟机外连接MySQL

MySQL是在虚拟机中安装启动的,在外部要使用客户端进行连接访问,需要做如下操作:

  • 10.1 进入works目录,执行vagrant ssh,然后执行mysql -u root -p,进入mysql,接着执行grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;,接着执行flush privileges;,最后退出。
  • 10.2 接上一步,执行sudo vi /etc/mysql/my.cnf,找到bind_address=127.0.0.1,在其前面添加#,保存。
  • 10.3 关闭Vagrant,然后重新启动Vagrant。
  • 10.4 在外部使用任意MySQL客户端做连接测试。

11.关闭Vagrant

进入works目录下,执行以下命令:

vagrant halt

12.导出本地box

构建好的开发环境可以导出给团队成员使用,这样团队的开发环境就统一了。可以使用如下命令导出box,

vagrant package --base 虚拟机实例的名称 --output 导出后的box名称

例如:

vagrant package --base works-default-1569977899-11232 --output new-box.box

这里需要注意的是虚拟机实例的名称,这个名称是虚拟机里面实例的名称,可以到VirtualBox中查看。

END

如果觉得有收获,记得关注、点赞、转发。

原文发布于微信公众号 - JavaQ(Java-Q)

原文发表时间:2018-01-29

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

剪贴板劫持:复制粘贴中暗藏杀机

现在浏览器大多只允许开发者在一定条件下向用户剪贴板中添加内容。换句话说,剪贴板劫持只能是在浏览器事件中才能够触发。本文将详细的向各位讲述“剪贴板劫持”攻击如何诱...

2426
来自专栏web前端

HTTP协议理解

HTTP(Hyper Text Transfer Protocol)超文本传输协议,是一种请求响应式协议,类似两国会晤中需要遵守的规则。那么,其中有什么内容特点...

2148
来自专栏计算机编程

ubuntu Nginx配置笔记

说明:configure后面必须在同一行进行输入,此放在此处即是为了看清楚配置了哪些东西

3082
来自专栏星汉技术

Kafka简介及安装配置

5005
来自专栏运维

Vmware Workstation8下分享你的虚拟机

access-list outside_in permit tcp any host public ip

1272
来自专栏个人分享

kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)

    Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特...

1585
来自专栏Albert陈凯

使用 Vagrant 打造跨平台开发环境

https://segmentfault.com/a/1190000000264347 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/py...

2955
来自专栏LIN_ZONE

Linux各目录及每个目录的详细介绍(转载)

Linux目录和Windows目录有着很大的不同,Linux目录类似一个树,最顶层是其根目录,如下图:

1242
来自专栏搜云库

CentOs7.3 安装 maven3.5

下载解压 $ cd /opt $ wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/...

1977
来自专栏cmazxiaoma的架构师之路

你应该知道的VirtualBox虚拟机网络配置

3224

扫码关注云+社区

领取腾讯云代金券