首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >再谈Vagrant

再谈Vagrant

作者头像
JavaQ
发布2018-04-08 11:23:52
9030
发布2018-04-08 11:23:52
举报
文章被收录于专栏:JavaQJavaQJavaQ

前言

两年前写过一篇关于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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档