原文地址:http://www.cnblogs.com/suihui/p/4362233.htmlhtml
1、软件下载nginx
1.下载Oracle VM VirtualBox https://www.virtualbox.org/wiki/Downloads (VirtualBox-5.0.12-104815-Win.exe)web
2.下载vagrant https://www.vagrantup.com/downloads.html (vagrant_1.8.1.msi)ubuntu
3.下载Vagrant Boxes http://www.vagrantbox.es/ (ubuntu-15.04-amd64.box)segmentfault
2、安装浏览器
1.安装vitualbox 我安装到了D盘(其余的就是下一步 下一步)缓存
2.安装vagrant 安装到了C盘(若是安装到D盘,要配置变量和再C盘创建文件夹,否则安装插件会出现错误)服务器
验证vagrant 是否安装成功网络
vagrant -v
3、安装vagrant boxapp
一、再D盘下创建文件夹vagrant 并把ubuntu-15.04-amd64.box 放进去,再CMD下执行命令
vagrant box add base ubuntu-15.04-amd64.box
二、初始化
vagrant init base //初始化
此时会在文件夹下面出现 Vagrantfile 文件,这是咱们的虚拟机配置文件,打开它
#config.vm.network "public_network" //把这一行#号去
三、启动
执行vagrant up 命令,启动咱们的虚拟机
4、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 //用于安装卸载插件
5、Vagrantfile配置文件详解
在咱们的开发目录下有一个文件Vagrantfile
,里面包含有大量的配置信息,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置。Vagrant是使用Ruby开发的,因此它的配置语法也是Ruby的,可是咱们没有学过Ruby的人仍是能够跟着它的注释知道怎么配置一些基本项的配置。
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。
网络设置
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地址。
hostname设置
hostname
的设置很是简单,Vagrantfile中加入下面这行就能够了:
config.vm.hostname = "go-app"
设置hostname
很是重要,由于当咱们有不少台虚拟服务器的时候,都是依靠hostname
來作识别的,例如Puppet或是Chef,都是经过hostname
來作识别的,既然设置那么简单,因此咱们就別偷懒,设置一个。
同步目录
咱们上面介绍过/vagrant
目录默认就是当前的开发目录,这是在虚拟机开启的时候默认挂载同步的。咱们还能够经过配置来设置额外的同步目录:
config.vm.synced_folder "/Users/astaxie/data", "/vagrant_data" win7如: config.vm.synced_folder "D:/www", "/home/wwwroot/default"
上面这个设定,第一个参数是主机的目录,第二个参数是虚拟机挂载的目录
端口转发
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之间的信息交互。
vagrant reload
命令来重启VM以后才能使用VM更新后的配置6、注意事项
一、使用 Apache/Nginx 时会出现诸如图片修改后但页面刷新仍然是旧文件的状况,是因为静态文件缓存形成的。须要对虚拟机里的 Apache/Nginx 配置文件进行修改:
# Apache 配置添加:
EnableSendfile off
# Nginx 配置文件 nginx.conf 添加:
sendfile off;
二、配置好web服务器,若是没法正常访问,检查防火墙是否关闭
三、启动过程可能会出现须要安装加强工具的错误,具体解决方法见这篇文章: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'