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服务器,如果无法正常访问,检查防火墙是否关闭

时间: 2024-12-29 11:03:12

Vagrant + Vbox实战 【转】的相关文章

0. vagrant+vbox创建centos7虚拟机

准备工作 安装 virthbox和vagrant 下载地址: 常用vagrant命令 $ vagrant init # 初始化 $ vagrant up # 启动虚拟机 $ vagrant halt # 关闭虚拟机 $ vagrant reload # 重启虚拟机 $ vagrant ssh # SSH 至虚拟机 $ vagrant suspend # 挂起虚拟机 $ vagrant resume # 唤醒虚拟机 $ vagrant status # 查看虚拟机运行状态 $ vagrant de

vagrant vbox上配置好开发环境缓存问题

vagrant配置完成 设置好共享目录 搭建好nginx环境 访问 127.0.0.1:8080 一切正常  然后进入本的的开发目录修改测试文件保存后刷新页面 问题来了..........没变化  然后再ssh vagrant看看 共享目录中的文件 跟刚刚修改的文件一样啊....怎么回事  nginx缓存吧  sudo vi /etc/nginx/nginx.conf     sendfile off; 重启 nginx服务 刷新页面 ok了  

谈谈Vagrant中的那些坑:CentOS

安装了vagrant之后,当然需要将它投入使用.由于计划中的生产环境是 CentOS 7,因此想搭建一个 基于CentOS 7(x86_64)的虚拟开发环境. 最开始的一系列工作,比如在vbox中安装CentOS 7.打包box文件.将box导入vagrant等都不在此一一细述,后面将有专文总结这些过程. 然后坑来了:修改Vagrantfile配置文件欲实现 public_network: config.vm.network "public_network", ip: "19

vagrant故障记--升级虚拟机linux内核导致无法挂载共享文件夹

i'm new to use vagrant,今天升级了下vbox里的ubuntu12.04内核,结果vagrant reload后出现报错. 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 t

Windows上使用Vagrant打造Laravel Homestead可协同跨平台开发环境

1.简介 Laravel 致力于让整个 PHP 开发过程变得让人愉悦,包括本地开发环境,为此官方为我们提供了一整套本地开发环境 —— Laravel Homestead. Laravel Homestead 是一个打包好各种 Laravel 开发所需要的工具及环境的 Vagrant 盒子(Vagrant 提供了一个便捷的方式来管理和设置虚拟机),该盒子为我们提供了优秀的开发环境,有了它,我们不再需要在本地环境安装 PHP.HHVM.Web服务器以及其它工具软件,我们也完全不用再担心误操作搞乱操作

Scikit-Learn实战KNN

Scikit-Learn总结 Scikit-Learn(基于Python的工具包) 1.是一个基于Numpy,Scipy,Matplotlib的开源机器学习工具包. 2.该包于2007年发起,基本功能包涵了6个方面:分类.回归.聚类.数据降维.模型选择.预处理 包括了大量常用的算法::SVM,逻辑回归,朴素贝叶斯,k-means 3.网站为:http://scikit-learn.org鸢尾花数据集是由杰出的统计学家 R.A.Fisher在20世纪30年代中期创建的,它被公认为用于数据挖掘的最著

【实战】Docker 入门实战一

Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低 从这个解释我们不知道大家有没有想到一个优点类似的东西,没错就是 Vagrant :  vagrant打造跨平台可移动的开发环境   ,那么

VBox虚拟机与主机(宿主)通讯原理以及socat(套接字猫)简单介绍

前言 尝试虚拟机使用socat建立服务器端接口转发时,发现对虚拟机接入网络原理不是非常了解,于是乎上网查找资料想搞明白是怎么回事,于是乎有了这篇总结博文.socat可以在服务器端口间建立全双工通信通道,可以用于端口数据转发,据说是Linux/Unix系统三大神器之一. 虚拟机虚拟网卡连接模式 1.桥接模式 直接将虚拟网卡桥接在物理网卡上,虚拟机与主机地位对等,相当于局域网新增加了一台机器,虚拟机分配的IP是局域网真实的IP地址,主机与虚拟机以及局域网其它主机与虚拟机可以互相访问 2.仅主机(ho

学会使用 vagrant

全平台适用 Mac  win  ubuntu  centos 1.安装 vbox. 只是个承载,不用去启动 2.下载vagrantbox镜像  .box文件  4用到 http://www.vagrantbox.es/ 3.下载vagrant  win  msi https://www.vagrantup.com/downloads.html 4.导入box vagrant box add 名  box位置 查看是否存在 vagrant box list 5.初始化 vagrant init 名