原文地址: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'