VirtualBox+Vagrant环境搭建

我们刚开始入门的时候使用的集成的wamp来开发我们的PHP程序,在window下,虽然说可以搭建各种开发环境,但是有时候和Linux的生产环境还是不太一样,最佳的还是linux平台。于是我们虚拟机,我们使用开源的VirtualBox作为虚拟化支持,另外对于团队来说,每个人的开发环境要保持一致,利用Vagrant来解决开发环境保持一致,配置大大简化,轻松跨平台。

1.VirtualBox虚拟机

VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件。在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

在VirtualBox网站下载主机操作系统对应的二进制文件。VirtualBox可以安装在32位和64位操作系统上。在32位主机操作系统上运行64位的虚拟机是可以的,但必须在主机的BIOS中启用硬件虚拟化特性。

官网下载https://www.virtualbox.org/wiki/Downloads

window下安装VirtualBox6.0.8

如果想下载往期的版本https://www.virtualbox.org/wiki/Download_Old_Builds

双击exe文件运行二进制安装文件将开启一个简单的安装向导,允许用户定制VirtualBox特性,选择任意快捷方式并指定安装目录。

2.安装Vagrant

Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境,由HashiCorp公司开发的工具。它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。Vagrant 有着易于使用的工作流,并且专注于自动化,降低了开发者搭建环境的时间,提高了生产力。解决了“在我的机器上可以工作”的问题。

官网下载https://www.vagrantup.com/downloads.html

双击msi文件,我本次下载的是vagrant_2.2.4_x86_64的版本。选择安装位置,进行下一步安装。安装完毕后需要重启系统。

之后就可以打开终端cmd使用vagrant 。

3.下载Box

Vagrant官网下载一个package.box 文件,它有点类似于我们之前安装虚拟机时候需要下载ISO镜像来装系统,这里的话就是Vagrant开源社区已经提供许多打包好的操作系统,我们称之为Box,你可以直接下载,也可以自己制作。省去我们自己下载镜像,配置安装系统初始化的过程。

官网下载https://app.vagrantup.com/boxes/search 或者在仓库下载http://www.vagrantbox.es/

我这里下载一个Centos7的版本

https://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-1902_01.VirtualBox.box

4.添加box

Box其实是一个压缩包,里面包含了 Vagrant 的配置信息和 VirtualBox 的虚拟机镜像文件。vagrant up 启动虚拟机是基于 box 文件的,因此在启动虚拟机前必须得把 box 文件准备好。

创建一个工作目录,添加box,把下载好的box文件放在目录下面。

vagrant box add Centos7 CentOS-7-x86_64-Vagrant-1902_01.VirtualBox.box
[添加box命令]
vagrant box add 起一个名字  使用box的文件位置

5.初始化box

[查看有哪些box]
vagrant box list 
[初始化box]
vagrant init Centos7

6.启动虚拟机

[启动虚拟机box]
vagrant up

7.连接虚拟机

[连接box虚拟机]
vagrant ssh

默认root用户密码是vagrant

8.修改配置文件

Vagrantfile文件

这个文件是非常重要,包括虚拟机配置,ssh配置,Vagrant的一些基础配置。Vagrant是用Ruby开发的,所以它配置文件的语法也是Ruby。配置文件只要有改动就需要执行 vagrant reload 载入配置。重新启动虚拟机,重新载入配置文件。

9.打包虚拟机

[关闭虚拟机]
vagrant halt
[打包box]
vagrant package --output Centos7.box

使用 package 选项将虚拟机打包.

[报错]

如果有问题可以参考下面的一些错误解决方法,仅供参考。

1.没有共享目录怎么办

报错:No guest additions were detected on the base box for this VM! Guest additions are required for forwarded ports . shared folders ,host only networking and more.

缺少Virtualbox Guest Additions。手动安装vagrant-vbguest插件来完成这个功能。 

2.但是我后来重启一下又报错了

[default] GuestAdditions seems to be installed (6.0.8) correctly, but not running.

实际上这个GuestAdditions扩展默认的VirtualBox是不安装的,这就会导致VirutalBox软件中只能小窗口访问,另外不能和宿主操作系统共享文件。所以我们必须要安装这个功能。

进入到VirtualBox的官网下载VBoxGuestAdditions镜像文件

http://download.virtualbox.org/virtualbox/6.0.8/

然后利用root进入系统后,创建一个/mnt/cdrom文件夹,将光驱挂载上面利用mount命令。

然后可以进入/mnt/cdrom/可以看到镜像里面内容。

提示安装成功,重启生效。 Running kernel modules will not be replaced until the system is restarted

3.卸载后重装 VirtualBox

最后怎么都弄不好我又重装了virtualbox最后终于可以共享目录了。

 

[注意]

1.安装过程 先安装VirtualBox 后安装Vagrant。

2.安装Virtualbox时右击属性兼容模式调成win7,以管理员身份运行exe文件进行安装,安装的时候不要选择c盘。

3.安装vagrant-vbguest插件。

4.我这里装的Centos7的系统,默认登陆是普通用户vagrant,另外root用户密码为vagrant。

<think>好的,用户之前询问了初学运维的学习路径,现在又问VirtualBox + Vagrant是什么。我需要先回顾之前的回答,确保现在的内容和之前的建议一致。用户可能是刚入门的新手,对工具的具体用途不太了解,需要详细但易懂的解释。 首先,VirtualBox是Oracle的虚拟机软件,用来创建虚拟机。Vagrant则是管理虚拟机的工具,用配置文件自动化设置。两者结合能快速搭建一致的开发环境,这对运维新手来说很重要,因为环境配置常常是痛点。 用户可能想知道为什么推荐这两个工具,以及它们如何帮助学习。需要强调它们的优点,比如快速搭建环境一致性,还有与云平台和配置管理工具的整合,比如Vagrant支持Ansible,这对后续的DevOps学习有帮助。 另外,用户可能需要具体的使用示例,比如Vagrantfile的编写,以及常用命令,如vagrant up。这些实际操作的步骤能帮助他们快速上手。还要提到适用场景,比如本地实验、团队协作,这样用户能明白在不同情况下如何使用这些工具。 还要考虑用户可能遇到的问题,比如资源占用,或者是否需要命令行操作。需要指出VirtualBox的图形界面友好,而Vagrant虽然用命令行,但简化了流程,适合自动化。 最后,结合之前推荐的学习路径,强调这些工具在实践中的重要性,帮助用户构建实验环境,进行后续的Linux、网络和自动化学习。确保回答结构清晰,分点说明,让用户容易理解。</think>以下是关于 **VirtualBox + Vagrant** 的详细介绍,从功能特性到实际应用场景的系统说明: --- ### 一、核心工具定义 #### 1. **VirtualBox** - **本质**:Oracle开发的**开源虚拟机软件**(Type-2 Hypervisor) - **核心能力**: - 在物理机(Windows/macOS/Linux)上虚拟化运行多种操作系统 - 支持快照功能(快速回滚系统状态) - 提供虚拟网络配置(NAT/桥接/仅主机模式) #### 2. **Vagrant** - **本质**:HashiCorp推出的**虚拟机编排工具** - **核心能力**: - 通过代码(Vagrantfile)定义虚拟机配置 - 自动化创建、启动、销毁虚拟机环境 - 集成主流虚拟化平台(VirtualBox/VMware/Hyper-V等) --- ### 二、组合优势解析 #### 1. **开发环境标准化** - **场景示例**: ```ruby # Vagrantfile 定义CentOS环境 Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.provision "shell", inline: "yum install -y nginx" config.vm.network "forwarded_port", guest:80, host:8080 end ``` - 团队成员通过共享`Vagrantfile`文件,可快速获得完全一致的开发环境 #### 2. **资源高效利用** - **对比传统虚拟机**: - 启动时间:Vagrant虚拟机可在**10秒内完成启动** - 内存占用:典型Linux环境仅需**512MB-1GB内存** - 磁盘空间:通过`vagrant package`打包环境,镜像体积缩小50%+ --- ### 三、典型应用场景 #### 1. **本地实验环境搭建** - **操作流程**: ```bash # 初始化Ubuntu环境 vagrant init ubuntu/focal64 vagrant up vagrant ssh # 进入虚拟机 ``` #### 2. **多节点集群模拟** - **配置示例**: ```ruby # 定义3台Web服务器 (1..3).each do |i| config.vm.define "web#{i}" do |node| node.vm.network "private_network", ip: "192.168.50.#{10+i}" end end ``` --- ### 四、技术扩展方向 #### 1. **与云平台集成** - **支持提供商**: ```mermaid graph LR Vagrant --> AWS Vagrant --> Azure Vagrant --> GCP ``` #### 2. **结合配置管理工具** - **Ansible联动**: ```ruby config.vm.provision "ansible" do |ansible| ansible.playbook = "setup.yml" ansible.extra_vars = { nginx_port: 8080 } end ``` --- ### 五、新手学习路径建议 1. **初级阶段**: - 掌握`vagrant up/destroy/suspend`基本命令 - 理解`Vagrantfile`的语法结构 2. **中级应用**: - 实现多虚拟机互联(通过私有网络) - 集成Shell/Puppet自动化配置 3. **生产级实践**: - 构建自定义Box镜像(`vagrant package`) - 结合CI/CD工具实现环境自动验证 --- ### 六、注意事项 1. **性能优化**: - 启用VirtualBox的**嵌套虚拟化**(支持KVM/Docker) - 配置共享文件夹时建议使用`rsync`同步模式 2. **常见问题**: - **网络冲突**:检查`hostonlyif`网段设置 - **启动失败**:通过`vagrant up --debug`排查错误 --- **总结**:VirtualBox+Vagrant组合是运维/开发人员快速构建标准化环境的利器,特别适合需要频繁重建测试环境的场景。建议新手从单节点配置开始,逐步扩展到复杂集群模拟。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值