Windows使用Vagrant&VirtualBox搭建虚拟开发环境

Windows使用Vagrant&VirtualBox搭建虚拟开发环境

大家好,又见面了,我是全栈君。

    Vagrant 是一款用来构建虚拟开发环境的工具 , 我们可以通过 Vagrant 封装一个 Linux 的开发环境 , 分发给团队成员 ; 成员可以在自己喜欢的桌面系统 Mac/Windows/Linux 上开发程序 , 代码却能统一在封装好的环境里运行 , 非常便于统一开发环境

1. 安装Vagrant虚拟工作环境

    安装 VirtualBox

    下载地址 : https://www.virtualbox.org/

    安装 Vagrant

    下载地址 : https://www.vagrantup.com/

    下载 box

    box 是一个后缀为 box 的文件 , 实际上它就是一个包含了虚拟机配置 , 虚拟机硬盘镜像和 Vagrant 配置的压缩包 , 可以到 http://www.vagrantbox.es/ 上下载 box

        附一个 CentOS7 的下载链接 : https://atlas.hashicorp.com/centos/boxes/7/versions/1703.01/providers/virtualbox.box

2. 安装虚拟机步骤

    切换到需要配置虚拟机的文件夹 , 添加 box , 将下载好的 box 文件放在某个目录 , 如下得是当前目录 , 运行命令 :

    vagrant box add MyCentOS7 virtualbox.box
        1

        先将 box 镜像下载下来安装会很快 ; 也可以使用在线安装 , 比如运行 vagrant box add centos/7 , 就会在线下载 box 镜像安装 , 但国内网速很慢 , 不推荐用

        执行完添加 box 命令后 , box 中的镜像文件被放到了 /Users/astaxie/.vagrant.d/boxes/ , 在 Window 系统中是放到了C:\Users\当前用户名\.vagrant.d\boxes\ 目录下

    初始化

  vagrant init MyCentOS7  

    启动虚拟机

    vagrant up

        出现 Timed out while waiting for the machine to boot… , 但又无法定位错误的话 , 可以编辑虚拟机配置目录下的 Vagrantfile 文件 , 启动 VirtualBox 的 GUI 界面 , 配置如下 config.vm.provider “virtualbox” do |vb| \ vb.gui = true \ end , 然后 vagrant reload 重启 , 虚拟机启动时就有 GUI 界面了 , 同时错误也会显示出来 , 比如弹出 VT-x/AMD-V 硬件加速在您的系统中不可用 ; 您的 64-位虚拟机将无法检测到 64-位处理器 , 从而无法启动 错误时 , 就是 CPU 的虚拟化技术没开启 , 只需要进入 bios 开启就可以了

        出现 “Rsync” could not be found on your PATH… 错误后 , 打开 C:\Users\{your_username}\.vagrant.d\boxes\CentOS7\0\virtualbox\Vagrantfile , 将 config.vm.synced_folder “.”, “/vagrant”, type: “rsync” 修改为 config.vm.synced_folder “.”, “/vagrant”, type: “virtualbox”

        出现 Vagrant was unable to mount VirtualBox shared folders… 错误后 , 运行 vagrant plugin install vagrant-vbguest , 再运行 vagrant reload 重启即可

    登录虚拟机

        Linux

  vagrant ssh

        Windows 终端并不支持 SSH , 所以需要安装第三方 SSH 客户端 , 比如 : Xshell , Putty , Cygwin , 我用的是 Xshell

            再 Xshell 里面新建连接 , 然后输入虚拟机 IP : 127.0.0.1 , 端口号 : 2222 , 都是默认的

            然后确认并连接 , 输入登录用户名 : vagrant , 登录密码 : vagrant , 也是默认的

            如果 box 里的系统没有设置支持密码登录 , 这是密码的输入框会是灰色的无法输入 , 选择下面的 Public Key , 在 用户密钥 处点击浏览 , 选择刚刚配置虚拟机目录下的子目录 \.vagrant\machines\default\virtualbox\private_key , 然后便可登陆

                如果想继续使用账户密码登录 , 可以进入虚拟系统后 , 修改 /etc/ssh/sshd_config , 设置 PasswordAuthentication yes

        设置局域网其他主机连接登录

        修改虚拟机 配置目录下的 Vagrantfile 文件

        将 # config.vm.network “public_network” 修改为 config.vm.network “public_network”, ip: “192.168.0.150”

        意思就是解除注释 , 并用 192.168.0.150 来作为虚拟机 IP , 默认端口 22 , 这时便可从局域网内其他主机登录该虚拟机

3. 打包分发

当你配置好开发环境后 , 退出并关闭虚拟机 , 在终端里对开发环境进行打包 , 运行如下命令 :

vagrant package

    打包完成后会在当前目录生成一个 package.box 的文件 , 将这个文件传给其他用户 , 其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了

4. 常用配置

Vagrant 初始化成功后 , 会在初始化的目录里生成一个 Vagrantfile 文件 , 可以修改该文件进行个性化的定制

    配置IP

    config.vm.network "private_network", ip: "192.168.33.10"
    config.vm.network "public_network", ip: "192.168.0.150"

        你可以把IP改成其他地址 , 只要不产生冲突就行

    配置同步目录

    将 `# config.vm.synced_folder "../data", "/vagrant_data"` 去掉 `#` , 修改为 :
    `config.vm.synced_folder "/home/web/www", "/data/www"`
    /home/web/www   是本地目录
    /data/www   是 Linux 服务器目录

    配置虚拟内存:

在文件结尾 end 字符前添加下面一段 :
    config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
    end

    温馨提示 : 修改配置后 , 记得重启虚拟机
5. 常用的操作命令

vagrant init  # 初始化
vagrant up  # 启动虚拟机
vagrant halt  # 关闭虚拟机 , 其实是调用vitualbox的管理接口 , 关闭了虚拟机
vagrant suspend #暂停虚拟机环境  
vagrant reload  # 重启虚拟机
vagrant ssh  # SSH 至虚拟机
vagrant status  # 查看虚拟机运行状态
vagrant destroy  # 销毁当前虚拟机

6. 跨网段访问虚拟机(进阶)

以上方法安装的虚拟机设置 public_network 参数后 , 可以实现局域网内相同网段的主机访问 , 注意只是相同网段 !

比如 : 我本机 IP 为 172.20.12.86 , 在 IP 为 192.168.22.56 的内网机器上部署了虚拟机 , 虚拟机 IP 设置为 192.168.22.150:22 , 那我在本机 172.20.12.86 是无法连接到虚拟机 192.168.22.150 的 ;

解决这个问题 , 我们可以用 Windows 自带的 netsh 实现端口转发 , 现在我们通过虚拟机的宿主主机 192.168.22.56 的端口 2222 转发到虚拟机 192.168.22.150 的端口 22 , 在 CMD 运行如下命令 :

// XP 系统首先安装 IPV6 , Win7以上忽略
netsh interface ipv6 install

// 添加一个IPV4到IPV4的端口映射
netsh interface portproxy add v4tov4  listenaddress=192.168.22.56 listenport=2222 connectaddress=192.168.22.150  connectport=22

这时就可以在本机 172.20.12.86 直接连接虚拟机宿主主机 192.168.22.56:2222 来达到访问虚拟机的目的 ;

需要删除监听转发的端口可以运行如下命令 :

netsh interface portproxy delete v4tov4 listenaddress=192.168.22.56 listenport=2222

查看已存在的端口转发可以运行一下命令 :

netsh interface portproxy show all

原文:https://blog.csdn.net/tojohnonly/article/details/70151040

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112250.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信小程序实例教程_小程序怎么做

    微信小程序实例教程_小程序怎么做微信小程序入门教程+案例demo尊重原创,转载请注明出处:原文查看惊喜更多http://blog.csdn.net/qq137722697首先摆在好姿态,——微信小程序开发也就那么回事。你只需要一点点css(真的只要一点点)的基础就可以了。认清微信小程序开发其实,我觉得小程序就是将微信官方提供20+个基础组件(目前有26个)进行排列组合,然后加上一些css样式,对用户的操作进行反馈(调

    2025年12月12日
    4
  • Idea激活码最新教程2024.2.1版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2024.2.1版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2024 2 1 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2024 2 1 成功激活

    2025年5月28日
    10
  • ubuntu18.04.1 NFS服务器

    1、安装NFS软件包zhang@zhang-virtual-machine:~$sudoapt-getinstallnfs-kernel-server//安装NFS服务器端zhang@zhang-virtual-machine:~$sudoapt-getinstallnfs-common//安装NFS客户端2、添加NFS共享目录把/nfsroot目录设…

    2022年4月13日
    72
  • app:javaPreCompileDebug和transformDexArchiveWithExternalLibsDexMergerForDebug

    app:javaPreCompileDebug和transformDexArchiveWithExternalLibsDexMergerForDebug

    2021年9月30日
    50
  • Unity安装 ILRuntime插件

    Unity安装 ILRuntime插件unity2019.4.2f1c1在packagemanager里面找不到ILRuntime插件解决办法:编辑项目下Packages的manifest.json文件,添加如下代码贴出来方便大家复制自己需要的部分{“scopedRegistries”:[{“name”:”ILRuntime”,”url”:”https://registry.npmjs.org”,”scopes”:[…

    2022年6月27日
    81
  • 大数据技术的发展趋势

    大数据技术的发展趋势英国牛津大学教授维克托·迈尔-舍恩伯格在其所撰写的《大数据时代》中表述,大数据时代是“已经发生的未来”,而在这个已经发生的未来里,没有旁观者。作为时代发生的必然产物,大数据正加速渗透至我们的日常生活,正完成对各传统领域的颠覆。本文从大数据时代的特点出发,为读者介绍目前的大数据技术的发展趋势以及大数据的生态体系。大数据时代的特点和市场规模大数据时代两个特点。第一,大数据技术以开源为主,迄今为止,尚未形成绝对技术垄断,即便是IBM、甲骨文等行业巨擘,也同样是集成了开源技术和该公司已有产品而已。开源技

    2022年5月12日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号