使用Vagrant和VirtualBox一步步地创建一个Base Box
box集合 http://www.vagrantbox.es/
Vagrant和VirtualBox软件的安装步骤省略,去官网下载最新的版本然后下一步下一步地安装就行了,和正常的安装软件没有什么区别。下面看看利用vagrant和virtualbox如果一步步打造出自己的可复用性强的开发环境。
开始前确保您的计算机支持虚拟化技术,在BIOS中可以开启。
一、在virtualbox中新建一个虚拟机
我这里使用的是CentOS-6.5-x86_64-minimal.iso这个镜像文件来安装的,1G内存,8G虚拟硬盘的配置(后面可以修改)。虚拟机名为centos。
安装好后该虚拟机已经自带了ssh服务,如果没有,需要自己先进行安装。

开启虚拟机,并登陆root用户。
二、配置虚拟机
创建admin用户组
[root@localhost ~]# groupadd admin
创建vagrant用户并添加到admin用户组
[root@localhost ~]# useradd -g admin vagrant
为vagrant用户设置密码,密码为vagrant(会提示密码太弱,可以不用管它)
[root@localhost ~]# passwd vagrant
修改sudoers文件
[root@localhost ~]# vi /etc/sudoers
在该文件添加下面两行代码,并注释掉requiretty行
Defaults env_keep="SSH_AUTH_SOCK"
%admin ALL=NOPASSWD: ALL
配置网卡:将ONBOOT=no 改为 ONBOOT=yes
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:25:4A:9A
TYPE=Ethernet
UUID=751ae3bb-eb75-4f60-b5c3-7f1afa1dfce1
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
配置好网卡后需要重启网络服务:
[root@localhost ~]# service network restart
三、设置端口转发
配置virtualbox端口转发(NAT模式)

主机ip127.0.0.1
主机端口22(或者其他未被占用端口,最好还是设置成22)
子系统ip可以在虚拟通过ifconfg命令查看到,即eth0网卡的ip地址
子系统端口为22
设置好端口转发规则之后,就能在本地的命令行工具(Xshell,putty..)里通过命令 ssh root@127.0.0.1 连接到该虚拟机。
四、添加vagrant公钥,使vagrant用户可以免密码ssh连接该虚拟机
在虚拟机里切换到vagrant用户
[root@localhost ~]# su vagrant
[vagrant@localhost root]$ cd ~
[vagrant@localhost ~]$
然后执行:
[vagrant@localhost ~]$ mkdir ~/.ssh/
[vagrant@localhost ~]$ cd ~/.ssh
[vagrant@localhost .ssh]$ sudo yum -y install wget
[vagrant@localhost .ssh]$ wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant
[vagrant@localhost .ssh]$ wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant
[vagrant@localhost .ssh]$ mv vagrant.pub authorized_keys
清理缓存
[vagrant@localhost .ssh]$ sudo yum clean all
然后关闭此虚拟机,通过virtualbox将其电源关闭
五、打包生成box文件
在本地命令行进入该虚拟机目录
cd Users\Admin\VirtualBox VMs\centos\
进行打包
vagrant package --output mycentos.box --base centos

完成之后你将会在C:\Users\Admin\VirtualBox VMs\centos目录下看到一个mycentos.box文件,我的这个文件有544M。
VirtualBox VMs这个目录可以在virtualbox全局设定-常规里进行修改
到此一个Base Box就制作完成了。
这个box是很干净的,然后可以在这个box的基础上去搭建自己的开发环境,比如lnmp等等。再次进行打包,最后一个带开发环境的box就做好了,可以自己用也可以分发给其他小伙伴使用,不用以后每次都要去搭建一遍环境。
六、附上vagrant常用操作命令
vagrant box list 查看在vagrant里已经安装了哪些box
vagrant box add name boxname.box 添加一个本地的box镜像到vagrant 这个box镜像可以自己制作也可以使用网上的(vagrant box add ubuntu ubuntu/trusty64)
vagrant init name 初始化一个虚拟机,这个name是通过vagrant box list查看
vagrant up 启动虚拟机 在virtualbox中可以看到启动后的虚拟机,第一次启动时时间会长一点
vagrant ssh 连接虚拟机
vagrant reload 重启虚拟机
vagrant status 查看虚拟机当前状态
七、常见问题处理
问题1:
default: in which case you may ignore this message.
==> default: Mounting shared folders...
default: /vagrant => E:/vagrantbox/centos67
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:
mount -t vboxsf -o uid=500,gid=500 vagrant /vagrant
The error output from the command was:
mount: unknown filesystem type 'vboxsf'
上面这样的问题可以执行下命令 vagrant plugin install vagrant-vbguest ,然后重启vagrant reload来解决。
问题2:
vagrant up的时候出现 “rsync” could not be found on your PATH. Make sure that rsync is properly installed on your system and available on the PATH. 出现这样的错误
找到C:\Users\admin.vagrant.d\boxes\centos7\0\virtualbox类似这样的目录下面的Vagrantfile文件
修改type配置项: config.vm.synced_folder “.”, “/vagrant”, type: “virtualbox”
使用Vagrant和VirtualBox一步步地创建一个Base Box的更多相关文章
- WIN10 vagrant和virtualbox虚拟机和一键搭建lnmp环境配置thinkphp虚拟主机
版本:win10系统 virtualbox:5.1.26 vagrant :1.9.7 centos 7.0 xshell/git 首先下载好对应版本的软件 配置vagrant和virtualbox ...
- L06-Ubuntu系统中部署Vagrant和VirtualBox
一.前言 1.Vagrant是一个搭建完整的虚拟开发环境的工具~~~更多关于Vagrant理论可查看这篇博文https://www.cnblogs.com/davenkin/p/vagrant-vir ...
- 使用 Vagrant 在 VirtualBox 安装 Linux 虚拟机
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 导入 2.工具介绍 3.通过Vagrant为VirtualBox安装CentOS 7 4.总结 文章推荐: 关 ...
- Vagrant Tip: Virtualbox Guest Additions
Vagrant Tip: Virtualbox Guest Additions 12 February 2016 Tired of seeing this message when you run v ...
- 利用Vagrant and VirtualBox搭建core os环境
利用Vagrant and VirtualBox搭建core os环境 系统环境 ubuntu 14.04 x64 vagrant 1.7.4 virtualbox 4.3.10 git 1.9.1 ...
- 如何创建一个简单的Visual Studio Code扩展
注:本文提到的代码示例下载地址>How to create a simple extension for VS Code VS Code 是微软推出的一款轻量级的代码编辑器,免费,开源,支持多种 ...
- Python框架学习之用Flask创建一个简单项目
在前面一篇讲了如何创建一个虚拟环境,今天这一篇就来说说如何创建一个简单的Flask项目.关于Flask的具体介绍就不详细叙述了,我们只要知道它非常简洁.灵活和扩展性强就够了.它不像Django那样集成 ...
- K8S学习笔记之二进制的方式创建一个Kubernetes集群
0x00 单节点搭建和简述 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环境. 官方地址: ...
- BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块
NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...
随机推荐
- Leetcode 759. Employee Free Time
思路:区域覆盖问题.一个自然的想法是将每个员工的工作时间段看做一个木棒,每个木棒的长度就是这个时间段的时长.然后按照木棒的起始位置升序排列,接着由低位置向高位置一个木棒一个木棒的看过去.如果当前木棒的 ...
- redis学习(一) redis的介绍与安装
redis简单介绍 redis全称remote-dictionary-server 直译为远程字典服务器, 是一个高性能的key-value存储系统,也被称为数据结构服务器,因为其所存储的数据值(va ...
- 如何替代即将淘汰的Flash方案?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由MarsBoy发表于云+社区专栏 | 导语 Web技术飞速发展的如今,我们在感受新技术带来的便捷和喜悦的同时,也时常在考虑着一个问题: ...
- MAMP 安装phpredis 扩展
phpredis扩展包地址: https://github.com/nicolasff/phpredis 1.下载php源码 (http://php.net/releases/ 选择php5.5.1 ...
- async/await 与 generator、co 的对比
之前写过一个分批预加载资源的插件,其实质便是串行执行异步,使用的方法是generator + promise -- 前几天写了一个爬虫,抓取页面的n个页面的音频资源,其也是串行执行异步,但是在使用的a ...
- .1-浅析webpack源码之webpack.cmd
此系列随时可能断更,毕竟我是解释型源码分析…… tips:本系列源码版本为3.10.0 尝试看过Spring的源码,有点烧脑,所以还是重回JS吧! 在配置完环境变量后,可以通过webpack指令进行打 ...
- params关键字、工具辅助类与、加密与解密
一.params关键字 在C#中如果给方法的参数加上关键字params则会形成可变参数,在传递时可以是0-n个对象. 示例: using System; using System.Collection ...
- SQl语句查询性能优化
[摘要]本文从DBMS的查询优化器对SQL查询语句进行性能优化的角度出发,结合数据库理论,从查询表达式及其多种查询条件组合对数据库查询性能优化进行分析,总结出多种提高数据库查询性能优化策略,介绍索引的 ...
- centos 中设置网卡等相关参数
转:Centos启动和禁用网卡命令 ifup.ifdown:linux命令 实时地手动修改一些网络接口参数,可以利用ifconfig来实现,如果是要直接以配置文件,在 /etc/sysconfig/ ...
- RocketMQ 概述
Rocket 火箭 MQ的作用:同步转异步(异步解耦). 难点:如何确保消息一定被消费,而且仅消费一次. 1.消息架构:生产者.服务器.消费者.路由发现. 2.消息顺序:严格按照消息到达服务器的顺序进 ...