Vagrant 簡單使用

Vagrant 簡單使用

一,Vagrant 介紹

vagrant相關概念

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

特點

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

節省時間:重裝電腦後直接使用封裝好的環境即可,無需重新配置開發環境。而如果讓每個開發人員都自己去搭建本地環境,安裝虛擬機、下載ISO鏡像、選擇規格安裝創建vm、安裝OS、配置環境,會耗費非常多的時間。

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

概念

  • Provider:供應商,在這裏指Vagrant調用的虛擬化工具。Vagrant本身並沒有能力創建虛擬機,它是調用一些虛擬化工具來創建,如VirtualBox、VMWare、Xen、Docker,甚至AWS,這些虛擬化工具只要安裝好了,vagrant會自動封裝在底層通過統一的命令調用。也就是說使用vagrant時你電腦上還需要安裝對應的Provider,默認是免費開源的virtualbox。
  • Box:可被Vagrant直接使用的虛擬機鏡像文件,大小根據內容的不同從200M-2G不等。針對不同的Provider,Box文件的格式是不一樣的,從 vagrantcloud.com 你可以找到社區維護的box。
  • Vagrant根據Vagrantfile中的配置來創建虛擬機,是Vagrant的核心。在Vagrantfile文件中你需要指明使用哪個Box(可以下載好的或自己製作,或指定在線的URL地址),虛擬機使用的內存大小和CPU,需要預安裝哪些軟件,虛擬機的網絡配置,與host的共享目錄等。
  • 是Vagrant的插件的一種。大部分現成的box並不是你正好想要的,通過使用你熟悉的provisioner,比如Puppet,可以在你使用vagrant up啓動虛擬機時自動的安裝軟件、修改配置等初始化操作。當然你也可以在最先啓動虛擬機後,使用vagrant ssh進去然後手動安裝軟件,但畢竟不是所有人都是系統管理員,寫好Vagrantfile後無需人工干預馬上就可以使用vm。目前支持並實現的provisioning有Puppet、Salt、Ansible、Chef這些知名的自動化運維工具,當然需要一定的使用經驗;也可以使用shell provisioner,故名思議這個插件就是通過執行shell命令完成統一的作用。
  • Guest Additions:這個是常在下載 base box 介紹裏有的,一般用來實現host到vm的端口轉發、目錄共享,在開發環境上都建議裝上以便測試。

圖片實例

二,安裝

1、安裝VirtualBox

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

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

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

2、安裝Vagrant

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

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

3、下載Box

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

三,啓動

1、添加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}

2、創建一個Vagrant環境

命令:vagrant init {box-name}

舉例:

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

3、啓動Vagrant

命令:vagrant up

舉例:

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

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

4、連接Vagrant

命令:vagrant ssh

舉例:

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

vagrant ssh
執行ssh命令就相當於使用vagrant身份登錄實例,你可以對操作系統進行操作,比如安裝LNMP環境。

5、配置Vagrant

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

配置IP

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

config.vm.network :private_network, ip: "192.168.33.10"
重啓虛擬機後就可以在瀏覽器通過192.168.33.10就可以訪問。

1、公有網絡設置
 找到 # config.vm.network "public_network"
 去掉註釋符 # 號:
 指定局域網ip:  config.vm.network "public_network", ip: "192.168.43.115"
 注:指定局域網ip時,先查看本地主機ip號段,如本地:192.168.43.229,配置192.168.43.*  如重啓後提示ip佔用,則換其它號段試試。

2、私有網絡
找到 config.vm.network "private_network", ip: "192.168.100.100"
配置自己需要的私有ip

設置共享文件夾

因爲我們在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:掛載參數。

四、常用命令

命令	功能
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

更多命令

五、注意事項
使用 Apache/Nginx 時會出現諸如圖片修改後但頁面刷新仍然是舊文件的情況,是由於靜態文件緩存造成的。需要對虛擬機裏的 Apache/Nginx 配置文件進行修改:

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章