zoukankan      html  css  js  c++  java
  • 构建虚拟开发环境

    构建虚拟开发环境

    Date: 2019-05-27

    Author: Sun

    为啥不注册云服务器?

    我没钱,我不想花钱,但是又想在本地搭建linux环境,学习ubuntu和centos,使用vagrant+VirtualBox搭建虚拟开发环境

    VirtualBox

    ​ 一款功能强大的x86和AMD64 / Intel64 虚拟化产品,适用于企业以及家庭使用。VirtualBox不仅是一款功能非常丰富,性能卓越的企业用户产品。

    vmware只有企业版才支持docker,virtualbox是完全支持docker

    1 支持操作系统

    ​ VirtualBox可在Windows,Linux,Macintosh和Solaris主机上运行,并支持大量客户操作系统,包括但不限于Windows(NT 4.0,2000,XP,Server 2003,Vista,Windows 7,Windows 8,Windows 10 ),DOS / Windows 3.x,Linux(2.4,2.6,3.x和4.x),Solaris和OpenSolaris,OS / 2和OpenBSD。

    2 安装VirtualBox

    下载网址:

    http://download.virtualbox.org/virtualbox/5.1.24/

    下载软件:

    ​ VirtualBox-5.1.24-117012-Win.exe

    安装成功后,会在桌面产生virtualbox。

    vagrant

    ​ Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。

    ​ Vagrant是一款用来构建虚拟开发环境的外挂工具,可以简化虚拟机配置和管理。它底层支持VirtualBox、VMware、AWS等,非常适合使用php/python/ruby/java语言开发的应用。

    1. Vagrant下载地址:

    https://releases.hashicorp.com/vagrant/1.9.7/

    进入vagrantup官网 https://www.vagrantup.com/downloads.html,

    下载vagrant_1.9.7_x86_64,安装

    安装完成后,cmd进入后,输入vagrant,如果出现如下信息,表示安装成功!

    ​ 至此,vagrant安装成功!

    2. 下载package.box

    ​ 去vagrant官网下载一个package.box 文件, box文件就是一个系统的镜像文件。

    ​ 参考网站:

    http://www.vagrantbox.es/

    ​ 有不同的虚拟化环境box,包含centos,debian,ubuntu等,下载到本地。

    此时,可以选择自己想要安装的操作系统

    我下载的是 vagrant-centos-7.box,见附件

    centos box镜像版本:

    ​ vagrant-centos-7.box

    ubuntu box版本:

    ​ xenial-server-cloudimg-amd64-vagrant.box

    3. 把box加载到vagrant中

    box文件就是vagrant的镜像文件

    https://github.com/CommanderK5/packer-centos-template/releases

    下载好之后,在该目录下执行命令加载镜像文件到Vagrant中去

    查看vagrant box 使用手册 (vagrant box help)

    cmd -》 cd $PATH/virtualbox-vagrant

    > vagrant box add centos7 vagrant-centos-7.box
    

    centos7是给虚拟机起的名字 ,随意写。然后可以通过以下命令查看,当前vagrant下有那些可用

    > vagrant box list
    centos7 (virtualbox, 0)
    

    ubuntu对应的box地址如下:

    https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-vagrant.box

    说明:

    $ vagrant box remove centos7 # 从box列表移除

    4. 初始化虚拟机

    ​ 在你想要创建虚拟机的目录下,执行以下命令进行初始化

    > vagrant  init   centos7
    

    会生成一个Vagrantfile文件,该文件就是Vagrant的配置文件。

    具体关于vagrantfile的详解见章节后面介绍。

    5. 启动虚拟机

    在该目录下输入:

    vagrant up
    

    等待启动,如果没有错误并且启动完成后,可以在virtualbox中看到虚拟机

    说明:

    ​ 可能会出现错误信息,提示没有开启vt虚拟化支持

    需要进入系统BIOS设置开启下

    设置好了后,保存进入系统,再次执行如下命令

    >vagrant up
    

    等待启动虚拟机。进入步骤6

    说明:关闭虚拟机,采用 vagrant halt

    6. 登录到centos7系统

    登录到centos7系统中

    >vagrant ssh
    

    会免密进入到centos操作系统

    进入到centos7的vagrant用户下,进行操作了!

    至此,采用virtualbox结合vagrant构建虚拟开发环境已经部署完成!

    (可以采用yum进行包安装和python环境安装配置)

    vagrantfile知识扩展

    ​ Vagrantfile文件,里面包含有大量的配置信息,通过它可以定义虚拟机的各种配置,如网络、内存、主机名等,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置

    配置详解

    下面是一些常用的配置:

    config.vm.hostname:配置虚拟机主机名
    config.vm.network:这是配置虚拟机网络,由于比较复杂,我们其后单独讨论
    config.vm.synced_folder:除了默认的目录绑定外,还可以手动指定绑定
    config.ssh.username:默认的用户是vagrant,从官方下载的box往往使用的是这个用户名。如果是自定制的box,所使用的用户名可能会有所不同,通过这个配置设定所用的用户名。
    config.vm.provision:我们可以通过这个配置在虚拟机第一次启动的时候进行一些安装配置

    ​ 需要注意的是,Vagrantfile文件只会在第一次执行vagrant up时调用执行,其后如果不明确使用vagrant reload进行重新加载,否则不会被强制重新加载。

    1. box设置
    config.vm.box = "centos7"
    

    ​ 该名称是再使用 vagrant init 中后面跟的名字。

    2. hostname 设置

    config.vm.hostname = "node1"
    

    ​ 设置hostname非常重要,因为当我们有很多台虚拟服务器的时候,都是依靠hostname來做识别的。比如,我安装了centos1,centos2 两台虚拟机,再启动时,我可以通过vagrant up centos1来指定只启动哪一台。

    3. 虚拟机网络设置

    config.vm.network "private_network", ip: "192.168.10.11"   // Host - only模式
    
    config.vm.network "public_network", ip: "10.1.2.61"       // Bridge模式
    

    Vagrant的网络连接方式有三种:

    NAT : 缺省创建,用于让vm可以通过host转发访问局域网甚至互联网。

    host-only : 只有主机可以访问vm,其他机器无法访问它。

    bridge : 此模式下vm就像局域网中的一台独立的机器,可以被其他机器访问。

    config.vm.network "public_network", ip: "192.168.0.17"
    #创建一个bridge桥接网络,指定IP
    config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
    #创建一个bridge桥接网络,指定桥接适配器
    config.vm.network "public_network"
    #创建一个bridge桥接网络,不指定桥接适配器
    

    4. 同步目录设置

    config.vm.synced_folder "D:/xxx/code", "/home/www/" 
    

    ​ 第一个参数是宿主机的目录,第二个参数是虚拟机挂载的目录。

    ​ 前面的路径(D:/xxx/code)是本机代码的地址,后面的地址就是虚拟机的目录。虚拟机的/vagrant目录默认挂载宿主机的开发目录(可以在进入虚拟机机后,使用df -h 查看),这是在虚拟机启动时自动挂载的。

    5. 端口转发设置

    config.vm.network :forwarded_port, guest: 80, host: 8080
    

    ​ 上面的配置把宿主机上的8080端口映射到客户虚拟机的80端口,例如你在虚拟机上使用nginx跑了一个Go应用,那么你在host上的浏览器中打开http://localhost:8080时,Vagrant就会把这个请求转发到虚拟机里跑在80端口的nginx服务上。不建议使用该方法,因为涉及端口占用问题,常常导致应用之间不能正常通信,建议使用Host-only和Bridge方式进行设置

    6. provision任务

    ​ 你可以编写一些命令,让vagrant在启动虚拟机的时候自动执行,这样你就可以省去手动配置环境的时间了。

    ​ 脚本何时会被执行 ?

    ​ 第一次执行vagrant up命令

    ​ 执行vagrant provision命令

    ​ provision任务是预先设置的一些操作指令,格式:

    config.vm.provision 命令字 json格式参数
    
    config.vm.provion 命令字 do |s|
        s.参数名 = 参数值
    end
    

    修改完Vagrantfile的配置后,记得要重启虚拟机,才能使用虚拟机更新后的配置。reload

    vagrant reload
    

    帮助命令

    vagrant help
    

    查看vagrant版本信息

    vagrant -v
    

    Vagrant命令详解

    命令	作用
    vagrant box add	添加box的操作
    vagrant init	初始化box的操作,会生成vagrant的配置文件Vagrantfile
    vagrant up	启动本地环境
    vagrant ssh	通过 ssh 登录本地环境所在虚拟机
    vagrant halt	关闭本地环境
    vagrant suspend	暂停本地环境
    vagrant resume	恢复本地环境
    vagrant reload	修改了 Vagrantfile 后,使之生效(相当于先 halt,再 up)
    vagrant destroy	彻底移除本地环境
    vagrant box list	显示当前已经添加的box列表
    vagrant box remove	删除相应的box
    vagrant package	打包命令,可以把当前的运行的虚拟机环境进行打包
    vagrant plugin	用于安装卸载插件
    vagrant status	获取当前虚拟机的状态
    
  • 相关阅读:
    heartbeat 心跳技术
    国产数据库有哪些?
    Redis(1.9)Redis主从复制
    Redis(1.8)Redis与mysql的数据库同步(缓存穿透与缓存雪崩)
    分布式系统/NoSQL
    Redis(1.7)Redis高可用架构与数据库交互(理论篇)
    Redis(1.6)Redis发布订阅
    Redis(1.5)Redis配置文件(4.0.14)
    (5.3.4)数据库迁移——数据对比(结构、数据类型)
    【基本优化实践】【1.5】如何在线稳定的删除/更新大量数据?
  • 原文地址:https://www.cnblogs.com/sunBinary/p/10929856.html
Copyright © 2011-2022 走看看