Vagrant簡單使用

Vagrant簡單使用

1、Vagrant介紹


Vagrant是什麼

Vagrant 是一款用來構建虛擬開發環境的工具,常適合 php/python/ruby/java 這類語言開發 web 應用。php

圖片描述

爲何用它

統一環境:咱們能夠經過 Vagrant 封裝一個 Linux 的開發環境,分發給團隊成員。成員能夠在本身喜歡的桌面系統(Mac/Windows/Linux)上開發程序,代碼卻能統一在封裝好的環境裏運行。「代碼在我機子上運行沒有問題」這種說辭將成爲歷史。html

節省時間:重裝電腦後直接使用封裝好的環境便可,無需從新配置開發環境。而若是讓每一個開發人員都本身去搭建本地環境,安裝虛擬機、下載ISO鏡像、選擇規格安裝建立vm、安裝OS、配置環境,會耗費很是多的時間。java

建立環境副本:咱們有時候須要向操做系統安裝軟件,但又怕安裝失敗對開發環境形成污染最終放棄。有了Vagrant你能夠將當前開發環境打包成Box,用這個Box新建立一個Vagrant實例,而後在新實例中進行你想作的人和操做。python

幾個概念

  • Provider:供應商,在這裏指Vagrant調用的虛擬化工具。Vagrant自己並無能力建立虛擬機,它是調用一些虛擬化工具來建立,如VirtualBox、VMWare、Xen、Docker,甚至AWS,這些虛擬化工具只要安裝好了,vagrant會自動封裝在底層經過統一的命令調用。也就是說使用vagrant時你電腦上還須要安裝對應的Provider,默認是免費開源的virtualbox。nginx

  • Box:可被Vagrant直接使用的虛擬機鏡像文件,大小根據內容的不一樣從200M-2G不等。針對不一樣的Provider,Box文件的格式是不同的,從 vagrantcloud.com 你能夠找到社區維護的box。web

  • Vagrantfile:Vagrant根據Vagrantfile中的配置來建立虛擬機,是Vagrant的核心。在Vagrantfile文件中你須要指明使用哪一個Box(能夠下載好的或本身製做,或指定在線的URL地址),虛擬機使用的內存大小和CPU,須要預安裝哪些軟件,虛擬機的網絡配置,與host的共享目錄等。shell

  • Provisioner:是Vagrant的插件的一種。大部分現成的box並非你正好想要的,經過使用你熟悉的provisioner,好比Puppet,能夠在你使用vagrant up啓動虛擬機時自動的安裝軟件、修改配置等初始化操做。固然你也能夠在最早啓動虛擬機後,使用vagrant ssh進去而後手動安裝軟件,但畢竟不是全部人都是系統管理員,寫好Vagrantfile後無需人工干預立刻就可使用vm。目前支持並實現的provisioning有Puppet、Salt、Ansible、Chef這些知名的自動化運維工具,固然須要必定的使用經驗;也可使用shell provisioner,故名思議這個插件就是經過執行shell命令完成統一的做用。apache

  • Guest Additions:這個是常在下載 base box 介紹裏有的,通常用來實現host到vm的端口轉發、目錄共享,在開發環境上都建議裝上以便測試。ubuntu

啓動示意

圖片描述

2、安裝步驟



本博客不介紹具體安裝細節,請自行搜索安裝詳細流程。

一、安裝VirtualBox

虛擬機仍是得依靠 VirtualBox 來搭建,免費小巧,有Mac OS/Windows/Linux版本。 segmentfault

下載地址:https://www.virtualbox.org/wi...

提示:雖然 Vagrant 也支持 VMware,不過 VMware 是收費的,對應的 Vagrant 版本也是收費的

二、安裝Vagrant

Vagrant支持Max OS、Windows、CentOS以及基於Debian的發行版本Ubuntu

下載地址:https://www.vagrantup.com/dow...

三、下載Box

官方box: https://atlas.hashicorp.com/b... 暫時只看到搜索名稱,無法下載
第三方box: http://www.vagrantbox.es/ 提供了各發行版/provider的下載連接,貌似官方的url也有

3、啓動步驟


一、添加Box鏡像

命令:vagrant box add {box-name} {box-url}

舉例:

vagrant box add ubuntuBox ~/Downloads/ubuntu.box  //添加本地Box

Box相關命令

  • 查看Box列表:vagrant box list

  • 刪除Box:vagrant box remove {box-name}

二、建立一個Vagrant環境

命令:vagrant init {box-name}

舉例:

vagrant init ubuntuBox

執行init命令後,會在當前文件夾建立一個Vagrant配置文件Vagrantfile

三、啓動Vagrant

命令:vagrant up

舉例:

注:執行up命令前需先cd到Vagrant目錄

vagrant up

執行up命令後,終端會輸出一系列啓動信息,第一次啓動會花費幾分鐘時間。

四、鏈接Vagrant

命令:vagrant ssh

舉例:

注:Vagrant實例的用戶名密碼默認都爲「vagrant

vagrant ssh

執行ssh命令就至關於使用vagrant身份登陸實例,你能夠對操做系統進行操做,好比安裝LNMP環境。

五、配置Vagrant

注:修改完後執行vagrant reload重啓虛擬機生效配置文件。

配置IP

爲了在Host機上經過瀏覽器訪問Vagrant虛擬機,須要給虛擬機配置一個IP地址。使用文本編輯器修改Vagrant的Vagrantfile,以下:

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

重啓虛擬機後就能夠在瀏覽器經過192.168.33.10就能夠訪問。

設置共享文件夾

由於咱們在Host機上開發,那麼編寫代碼時若是將修改同步到虛擬機實時查看效果呢?咱們能夠配置共享文件夾來實現,修改Vagrantfile

config.vm.synced_folder "/Users/Sam/Code/web/", "/web", create:true,
:owner => "vagrant",
:group => "www-data",
:mount_options => ["dmode=775","fmode=664"]

配置解釋:

config.vm.synced_folder host_folder vagrant_folder

第一個參數是Host機的文件夾路徑,若是你填寫的是相對路徑的話,則文件夾是相對於當前虛擬機目錄。
第二個參數是虛擬機的文件夾路徑,這個路徑必須是絕對路徑。

可選參數:

  • create:Bool值。當Host機目錄不存在是,是否自動建立。

  • group:虛擬機文件夾所屬用戶組。

  • owner:虛擬機文件夾所屬用戶。

  • disabled:Bool值。是否禁用。

  • mount_options:掛載參數。

4、經常使用命令


命令 功能
vagrant init 初始化虛擬機
vagrant up 啓動虛擬機
vagrant halt 關閉虛擬機
vagrant reload 重啓虛擬機
vagrant ssh 登陸虛擬機
vagrant status 查看虛擬機運行狀態
vagrant destroy 銷燬虛擬機
vagrant box list 查看本地Box列表
vagrant box add 添加Box
vagrant box remove 刪除Box
vagrant package 打包虛擬機成Box

5、注意事項


使用 Apache/Nginx 時會出現諸如圖片修改後但頁面刷新仍然是舊文件的狀況,是因爲靜態文件緩存形成的。須要對虛擬機裏的 Apache/Nginx 配置文件進行修改:

#Apache 配置(httpd.conf 或者 apache.conf)添加:
EnableSendfile off

#Nginx 配置(nginx.conf)添加:
sendfile off;

6、參考文獻

相關文章
相關標籤/搜索