什么是vagrant堪遂?
Vagrant 是一個(gè)簡單易用的部署工具萌庆,用英文說應(yīng)該是 Orchestration Tool 溶褪。它能幫助開發(fā)人員迅速的構(gòu)建一個(gè)開發(fā)環(huán)境,幫助測試人員構(gòu)建測試環(huán)境, Vagrant 基于 Ruby 開發(fā)践险,使用開源 VirtualBox 作為虛擬化支持猿妈,可以輕松的跨平臺(tái)部署。
通俗的來說, 就是在本地部署一個(gè)和 Linux 虛擬機(jī)上的同步文件夾, 這樣所有的操作都方便了許多
準(zhǔn)備工作
?下載 VirtualBox 虛擬器 : https://www.virtualbox.org/
?下載安裝 Vagrant : http://www.vagrantup.com/
?下載使用的 box (這里的 box 指的是系統(tǒng)) : http://www.vagrantbox.es/
?在本地建立一個(gè)工作文件夾
部署環(huán)境
1.進(jìn)入工作文件夾中
2.把下載的 box 鏡像包放到工作目錄下-這里我以 Ubuntu.14.04 為例
3.打開終端進(jìn)入工作目錄, 或者你可以在當(dāng)前目錄按住 shift+鼠標(biāo)右鍵 可快速打開當(dāng)前目錄的終端
4.我們執(zhí)行 vagrant box list 可查看當(dāng)前添加進(jìn) vagrant 的鏡像
5.如果沒有添加 box 鏡像, 我們執(zhí)行 vagrant box add 系統(tǒng)名字 box鏡像
6.這時(shí)候我們執(zhí)行 vagrant box list 就可以查看我們添加的 box 鏡像
7.box 鏡像添加到 vagrant 里面后我們就可以執(zhí)行 vagrant init 系統(tǒng)名 初始化, 初始成功后我們可以看見當(dāng)前工作目錄下會(huì)生成一個(gè) Vagrantfile 的配置文件
8.*因?yàn)槲覀兲摂M機(jī)默認(rèn)只分配一個(gè)訪問外網(wǎng)的 IP, 項(xiàng)目使用的 IP 得手動(dòng)設(shè)置打開 Vagrantfile 找到29行(我的配置文件在29行)設(shè)置一個(gè)私有 IP *
9.到這里所有配置工作都完成了, 我們可以 vagrant up 正式啟動(dòng)了, 啟動(dòng)成功后會(huì)在當(dāng)前目錄生成一個(gè) .vagrant 的隱藏文件夾
10.在工作目錄中, 使用了 vagrant up 命令, 我們虛擬機(jī)會(huì)自動(dòng)的幫我們配置一個(gè)系統(tǒng), 然后自動(dòng)后臺(tái)啟動(dòng), 以后都無須管理虛擬機(jī) 讓虛擬機(jī)在后臺(tái)玩兒去吧
11.我們可以在當(dāng)前目錄使用 vagrant ssh 直接連接到虛擬機(jī)里面, 也可以使用第三方工具進(jìn)行連接如 Putty, Xshell, IP 為我們剛剛在 Vagrantfile 配置文件中設(shè)置的私有 IP
12.虛擬機(jī)里面的 /vagrant 這個(gè)文件夾是和我們本地同步的文件夾
13.下面我們就來看看vagrant神奇的地方, 我們在 /vagrant 同步文件夾里面創(chuàng)建一個(gè)文件 a, 看看我們本地發(fā)生了什么....., 同樣我們在本地把這個(gè) a 文件刪除, 看看虛擬機(jī)里面發(fā)生了什么...
14.這樣我們以后從服務(wù)器拉取下來的項(xiàng)目, 就可以直接在同步文件夾操作, 操作本地文件, 就相當(dāng)于操作虛擬機(jī), 目前已經(jīng)有很多大型公司使用 vagrant, 因?yàn)檫@可以提升他們的開發(fā)效率
15.最后附上vagrant一些常用的命令, 希望這能幫助你們, 別忘記點(diǎn)贊喲!
$ vagrant box add NAME URL #添加一個(gè)box
$ vagrant box list #查看本地已添加的box
$ vagrant box remove NAME virtualbox #刪除本地已添加的box巍虫,如若是版本1.0.x彭则,執(zhí)行$ vagrant box remove NAME
$ vagrant init NAME #初始化,實(shí)質(zhì)應(yīng)是創(chuàng)建Vagrantfile文件
$ vagrant up #啟動(dòng)虛擬機(jī)
$ vagrant halt #關(guān)閉虛擬機(jī)
$ vagrant destroy #銷毀虛擬機(jī)
$ vagrant reload #重啟虛擬機(jī)
$ vagrant package #當(dāng)前正在運(yùn)行的VirtualBox虛擬環(huán)境打包成一個(gè)可重復(fù)使用的box
$ vagrant ssh #進(jìn)入虛擬環(huán)境 $ vagrant port #查看ip和端口
補(bǔ)充:
在實(shí)際運(yùn)用中,發(fā)現(xiàn)會(huì)過段時(shí)間出現(xiàn)一個(gè)錯(cuò)誤:
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
解決方法:
在Vagrantfile配置文件中添加了兩行代碼,使用明文用戶名密碼
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"