• Vagrant + Vbox实战 【转】


    原文地址:http://www.cnblogs.com/suihui/p/4362233.html

    一、软件下载

    1.下载Oracle VM VirtualBox  https://www.virtualbox.org/wiki/Downloads  (VirtualBox-5.0.12-104815-Win.exe)

    2.下载vagrant  https://www.vagrantup.com/downloads.html  (vagrant_1.8.1.msi)

    3.下载Vagrant Boxes  http://www.vagrantbox.es/     (ubuntu-15.04-amd64.box)

    二、安装

    1.安装vitualbox  我安装到了D盘(其他的就是下一步 下一步)

    2.安装vagrant  安装到了C盘(如果安装到D盘,要配置变量和再C盘建立文件夹,不然安装插件会出现错误)

    验证vagrant 是否安装成功

    vagrant -v

    三、安装vagrant box

      1、再D盘下建立文件夹vagrant  并把ubuntu-15.04-amd64.box 放进去,再CMD下执行命令

    vagrant box add base  ubuntu-15.04-amd64.box

         2、初始化

    vagrant init base //初始化

       此时会在文件夹下面出现 Vagrantfile 文件,这是我们的虚拟机配置文件,打开它

    #config.vm.network "public_network" //把这一行#号去

         3、启动

    执行vagrant up 命令,启动我们的虚拟机

       

     四、vagrant的配置与操作

    vagrant up 启动虚拟机的操作
    vagrant halt  //关机
    vagrant destroy //停止当前正在运行的虚拟机并销毁所有创建的资源
    vagrant reload  //重新启动虚拟机,主要用于重新载入配置文件
    vagrant status  //获取当前虚拟机的状态
    vagrant suspend   //挂起当前的虚拟机
    vagrant resume //恢复前面被挂起的状态
    
    vagrant box add //添加box的操作
    vagrant init 初始化box的操作
    vagrant box list //显示当前已经添加的box列表
    vagrant box remove //删除相应的box
    
    vagrant ssh-config //输出用于ssh连接的一些信息
    vagrant ssh 登录拟机的操作
    
    vagrant package   //打包命令,可以把当前的运行的虚拟机环境进行打包
    vagrant plugin  //用于安装卸载插件

    五、Vagrantfile配置文件详解

    在我们的开发目录下有一个文件Vagrantfile,里面包含有大量的配置信息,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置。Vagrant是使用Ruby开发的,所以它的配置语法也是Ruby的,但是我们没有学过Ruby的人还是可以跟着它的注释知道怎么配置一些基本项的配置。

    1. box设置

      config.vm.box = "base"

      上面这配置展示了Vagrant要去启用那个box作为系统,也就是上面我们输入vagrant init Box名称时所指定的box,如果沒有输入box名称的話,那么默认就是base,VirtualBox提供了VBoxManage这个命令行工具,可以让我们设定VM,用modifyvm这个命令让我们可以设定VM的名称和内存大小等等,这里说的名称指的是在VirtualBox中显示的名称,我们也可以在Vagrantfile中进行设定,在Vagrantfile中加入如下这行就可以设定了:

      config.vm.provider "virtualbox" do |v|
        v.customize ["modifyvm", :id, "--name", "astaxie", "--memory", "512"]
      end

      这行设置的意思是调用VBoxManage的modifyvm的命令,设置VM的名称为astaxie,内存为512MB。你可以类似的通过定制其它VM属性来定制你自己的VM。

    2. 网络设置

      Vagrant有两种方式来进行网络连接,一种是host-only(主机模式),意思是主机和虚拟机之间的网络互访,而不是虚拟机访问internet的技术,也就是只有你一個人自High,其他人访问不到你的虚拟机。另一种是Bridge(桥接模式),该模式下的VM就像是局域网中的一台独立的主机,也就是说需要VM到你的路由器要IP,这样的话局域网里面其他机器就可以访问它了,一般我们设置虚拟机都是自high为主,所以我们的设置一般如下:

      config.vm.network :private_network, ip: "11.11.11.11"

      这里我们虚拟机设置为hostonly,并且指定了一个IP,IP的话建议最好不要用192.168..这个网段,因为很有可能和你局域网里面的其它机器IP冲突,所以最好使用类似11.11..这样的IP地址。

    3. hostname设置

      hostname的设置非常简单,Vagrantfile中加入下面这行就可以了:

      config.vm.hostname = "go-app"

      设置hostname非常重要,因为当我们有很多台虚拟服务器的时候,都是依靠hostname來做识别的,例如Puppet或是Chef,都是通过hostname來做识别的,既然设置那么简单,所以我们就別偷懒,设置一个。

    4. 同步目录

      我们上面介绍过/vagrant目录默认就是当前的开发目录,这是在虚拟机开启的时候默认挂载同步的。我们还可以通过配置来设置额外的同步目录:

      config.vm.synced_folder  "/Users/astaxie/data", "/vagrant_data"
      
      win7如: config.vm.synced_folder "D:/www", "/home/wwwroot/default"

      上面这个设定,第一个参数是主机的目录,第二个参数是虚拟机挂载的目录

    5. 端口转发

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

      上面这句配置可厉害了,这一行的意思是把对host机器上8080端口的访问请求forward到虚拟机的80端口的服务上,例如你在你的虚拟机上使用nginx跑了一个Go应用,那么你在host机器上的浏览器中打开http://localhost:8080时,Vagrant就会把这个请求转发到VM里面跑在80端口的nginx服务上,因此我们可以通过这个设置来帮助我们去设定host和VM之间,或是VM和VM之间的信息交互。

    6. 修改完Vagrantfile的配置后,记得要用vagrant reload命令来重启VM之后才能使用VM更新后的配置

    六、注意事项

      1、使用 Apache/Nginx 时会出现诸如图片修改后但页面刷新仍然是旧文件的情况,是由于静态文件缓存造成的。需要对虚拟机里的 Apache/Nginx 配置文件进行修改:

          

    # Apache 配置添加:
    EnableSendfile off
    
    # Nginx 配置文件 nginx.conf 添加:
    sendfile off;

         2、配置好web服务器,如果无法正常访问,检查防火墙是否关闭

       3、启动过程可能会出现需要安装增强工具的错误,具体解决方法见这篇文章:https://segmentfault.com/a/1190000002869922

      

    ==> default: Mounting shared folders...
        default: /vagrant => E:/VmWork/ubuntu14.04
    Failed to mount folders in Linux guest. This is usually because
    the "vboxsf" file system is not available. Please verify that
    the guest additions are properly installed in the guest and
    can work properly. The command attempted was:
    
    mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
    mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant
    
    The error output from the last command was:
    
    stdin: is not a tty
    mount: unknown filesystem type 'vboxsf'
  • 相关阅读:
    返回一个整数数组中子数组的最大值
    软工概论第二周个人项目四则运算二(改进)
    构建之法阅读笔记01
    单例模式
    .net基础加强
    使用jquery easy ui
    抽象工厂类
    System.Linq.Expressions.Expression
    创建上下文对象
    DBSesson
  • 原文地址:https://www.cnblogs.com/whoamme/p/5106422.html
Copyright © 2020-2023  润新知