vagrant 安装_vagrant install-程序员宅基地

技术标签: ubuntu  

你好,游客 登录 注册 搜索
Linux公社  
背景: #EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认
阅读新闻

Ubuntu下安装部署Vagrant和VirtualBox详解

[日期:2018-04-08] 来源:cnblogs.com/suhaha 作者:霍比挫人 [字体:大 中 小]

一、前言

1.Vagrant是一个搭建完整的虚拟开发环境的工具~~~更多关于Vagrant理论可查看这篇文章 https://www.linuxidc.com/Linux/2018-04/151772.htm

2.实验环境

在Win10中利用VMWare Workstation创建一台Ubuntu虚拟机,版本为64位Ubuntu Desktop 16.04,4核,4G内存;然后在Ubuntu中安装Vagrant和VirtualBox,所用到的Vagrant和VirtualBox版本都是截至2018/04/08时候的最新版。

之所以使用VMWare Workstation来创建Ubuntu的虚拟机而不是VirtualBox,跟下面即将说到的“ubuntu的CPU必须要支持虚拟化”有关,因为在VirtualBox中我不知道怎么设置才能使得创建的ubuntu的CPU支持虚拟化,而在VMWare Workstation中,可以通过如下方法进行开启。

3.关键点

因为我们所做的操作是“在Ubuntu中利用Vagrant+VirtualBox创建虚拟机”,因此,ubuntu的CPU必须要支持虚拟化才行——注意,是Ubuntu的CPU,不是本机Windows

一般我们要在笔记本电脑上利用VMWare Workstation或者VirtualBox来创建虚拟机时,是需要笔记本的CPU支持虚拟化的,通常笔记本的CPU都支持虚拟化,只需在笔记本电脑开机时进入BIOS进行设置开启即可。而这里因为要在ubuntu中创建虚拟机,因此需要ubuntu的CPU支持虚拟化。

如果你的ubuntu系统不支持CUP虚拟化,那么就没必要按下面步骤进行安装了,因为一定会失败,必须要将ubuntu的CUP设置成支持虚拟化。

在Ubuntu中可以通过下面的方法验证CPU是否支持虚拟化

相关博文:https://www.linuxidc.com/Linux/2012-09/69714.htm

查询实验时的虚拟机:

 

4.提前列一下接下来可能会用到的vagrant命令

$ vagrant init      # 初始化,用法:vagrant init 已有的box名称

$ vagrant up        # 启动虚拟机,对应就是关机

$ vagrant halt      # 关闭虚拟机

$ vagrant reload    # 重启虚拟机

$ vagrant ssh       # SSH 至虚拟机

$ vagrant suspend   # 挂起虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用

$ vagrant resume    # 唤醒虚拟机—— 与前面的暂停相对应

$ vagrant status    # 查看虚拟机运行状态

$ vagrant destroy   # 销毁当前虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留

#box管理命令

$ vagrant box list    # 查看本地box列表

$ vagrant box add    

# 添加box到列表,用法:vagrant box add 按需起的box名称 box所在url或者本地路径

$ vagrant box remove  

# 从box列表移除 ,用法:vagrant box remove 你的box名称

5.安装之前最后一点——在我初次安装时因为ubuntu的CPU不支持虚拟化,我又没注意到这点,因此安装过程中遇到了一些错误,放在文章末尾了,有一定的参考意义。

二、安装步骤

1、安装Virtualbox

1.1安装之前先安装virtualbox的依赖包,否则会有依赖包报错

命令:sudo apt-get install -y libsdl1.2debian

 

1.2安装VirtualBox

我看其他教程有使用apt-get install命令安装virtualbox的,我有试过,不过该命令安装的不是最新版,所以我采取的办法是先上网把virtualbox下载下来,然后上传到ubuntu当中(上传到任意目录),接着切换到virtualbox包所在目录,执行:

sudo dpkg -i virtualbox-5.2_5.2.8-121009-Ubuntu-xenial_amd64.deb

因为我已经安装过virtualbox所需依赖包了,所以安装过程没有报错,假若你安装的时候报错了,则将所需依赖包使用apt-get install命令进行安装,之后再次安装virtualbox即可。

1.3安装完成之后使用virtualbox --help命令进行检查

如下图,输出virtualbox帮助信息,说明virtualbox安装成功

2、vagrant是ruby开发的,先安装ruby相关的东西

命令:sudo apt-get -y install ruby rubygems

注:我不知道这一步是否必须,我看个别教程里面有的安装了,有的没有,反正我是跟着做了。。。

3、在Vagrant官网下载Vagrant的deb软件包

下载命令:sudo wget https://releases.hashicorp.com/vagrant/2.0.3/vagrant_2.0.3_x86_64.deb

安装命令:sudo dpkg -i vagrant_2.0.3_x86_64.deb

安装完成使用vagrant --version进行检查,如上图。

也可以直接使用apt-get安装,命令:sudo apt-get install vagrant。

不过同样的,apt-get命令安装的不是最新版本。

4、下载官方封装好的基础镜像放到合适的目录里面,是一个格式为box的文件,地址:http://www.vagrantbox.es/,可以在ubuntu中使用wget命令下载,也可以再本地Windows上下载下来,然后上传到ubuntu里面。

官网界面:

我下载的box镜像:

5.创建一个开发目录,并切换到该目录下

命令:

sudo mkdir vagrant_project

cd vagrant_project/

注:创建该目录是用来存放vagrant配置文件的,因此下面第7步的初始化步骤必须在该目录下执行,vagrant才会默认把Vagrantfile配置文件放在该目录下;创建的目录名称是随意的,没有特定要求。

6、添加镜像到 Vagrant

命令:sudo vagrant box add ubuntu1604 /data/ios/CentOS-7.0-x86_64.box

注:这里我添加的镜像是centos-7.0-x86_64.box,但是我给它起的名字却是ubuntu1604,是因为一时手残了,名字其实可以根据喜好随便起,没影响

执行完之后使用sudo vagrant box list查看添加的镜像是否存在,如上图。

7、初始化开发环境

命令:sudo vagrant init ubuntu1604

注:“ubuntu1604是上一步添加镜像时所起的名字;且这一步初始化操作必须在第5步创建的开发目录中执行,否则你创建的目录就没用了;最后,初始化成功后会生成配置文件Vagrantfile

8、启动虚拟机

在第5步创建的工作目录下执行下面命令进行启动虚拟机

命令:sudo vagrant up

(1)由输出来看启动没有问题

(2)注意上图的最后一行:vagrant默认把创建的虚拟机的/vagrant目录映射到ubuntu的/home/suxy/vagrant_project目录上了(/home/suxy/vagrant_project就是第5步创建的开发目录)——这样一来,这两个目录之间是共享的。

(3)Vagrant默认创建的虚拟机账号密码为:vagrant/vagrant

(4)如果这一步执行vagrant up失败了,在修改完错误之后再次启动虚拟机前,需要先执行vagrant halt停止虚拟机、vagrant destroy销毁虚拟机。

9.验证

使用sudo vagrant ssh命令连接vagrant创建的虚拟机

若还有其他个性化的设置,可参考文章头提到的博文。

三、部署时遇到的错误

(1)错误一:这里所列举的错误是在ubuntu的CPU不支持虚拟化的情况下执行第8步启动虚拟机时所报的错误,如下

错误解决可查看:https://www.linuxidc.com/Linux/2018-04/151769.htm

根据博文中的说法,如果是下载的box文件(我操作时确实是下载的box文件),vagrant box add和init之后启动,可能出现长时间无法通过vagrant ssh登陆的问题

说是有两种可能

(1)其一是虚拟机确实启动失败,由于vagrant默认不显示虚机启动界面,所以不太好判断。因此需要在Vagrantfile配置中增加vb.gui = true选项,就可以查看虚机的启动过程(我的理解是加上该选项之后,可以使得在vagrant up启动虚拟机的时候显示virtualbox启动界面,以便查看是否是PC的vt-x支持没有开启)。常见问题是没有开启PC的vt-x支持,进BIOS修改配置即可。

(2)其二是如果使用拷贝过来的Vagrantfile进行up启动

可能会由于ssh认证机制导致失败。vagrant默认采用key登录,但所用的KeyPair可能没有正常配置。

于是先对第一种可能的错误进行验证

在Vagrantfile文件中加入:

  config.vm.provider :virtualbox do |vb|

    vb.gui = true

  end

如下:

因为前面执行vagrant up失败了,所以先执行vagrant halt停止虚拟机、vagrant destroy销毁虚拟机

接着使用sudo vagrant up命令再次启动虚拟机,果然再次出错了,不过因为在Vagrantfile配置中增加vb.gui = true选项,所以这次报错时virtualbox的报错也显示出来了,如下图——果然是因为CUP不支持虚拟化的缘故

为了确认是否Ubuntu的CPU确实不支持虚拟化,通过下图中所说的方法查看

实际查询如下图:

果然。。。

(2)错误二:在ubuntu的CPU支持虚拟化的情况下执行第8步启动虚拟机时出现的问题

正如上图红框中所说的,使用的box镜像可能有问题,因此我换了CentOS的box进行,之后安装成功。

本文永久更新链接地址https://www.linuxidc.com/Linux/2018-04/151771.htm

linux
本文评论    查看全部评论 (0)
表情: 表情姓名: 匿名字数

   同意评论声明   

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
Linux公社简介 - 广告服务 - 网站地图 - 帮助信息 - 联系我们
本站(LinuxIDC)所刊载文章不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。
主编:漏网的鱼 联系邮箱: (如有合作请联系)
本站带宽由[ 808.Ai]友情提供
关注Linux,关注LinuxIDC.com, 请向您的QQ好友宣传LinuxIDC.com,多谢支持!
Copyright 2006-2017  Linux公社 All rights reserved 浙ICP备07014134号-8
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/thone00/article/details/80482529

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签