在大半年前剛剛接觸PHP的時(shí)候,因?yàn)槟菚r(shí)候只想先熟悉PHP的語(yǔ)法,并且對(duì)配置服務(wù)器、Mysql等一干事情不想花費(fèi)太多時(shí)間,于是在網(wǎng)上找到了XAMPP這個(gè)解決方案。當(dāng)時(shí)那是驚為天人,感覺(jué)虛擬主機(jī)很是方便。但是隨著后來(lái)自己的慢慢深入,并且也在云服務(wù)器上陸續(xù)的部署自己的小項(xiàng)目,這才感覺(jué)到一個(gè)很惡心的事情,就是本地和線(xiàn)上的開(kāi)發(fā)環(huán)境不同意,導(dǎo)致自己在頻繁的修改配置文件,并且主力開(kāi)發(fā)機(jī)器是用mac,家里還有win10的臺(tái)式機(jī),線(xiàn)上是Liunx系統(tǒng),各種不一樣的環(huán)境讓我想尋求一個(gè)解決方案,統(tǒng)一線(xiàn)上和線(xiàn)下的開(kāi)發(fā)環(huán)境。
在這種想法的指引下,很快有一個(gè)解決方案進(jìn)入我的視線(xiàn)。通過(guò)搭建Liunx虛擬機(jī),解決線(xiàn)上線(xiàn)下開(kāi)發(fā)環(huán)境不統(tǒng)一的情況。這個(gè)解決方案,就是VirtualBox
+ Vagrant
。目前他能完成我的所有需求,并且提供了很快捷的打包,來(lái)實(shí)現(xiàn)開(kāi)發(fā)環(huán)境的遷移及統(tǒng)一部署,非常好用。本文就來(lái)記錄如何使用Vagrant這個(gè)工具,好讓我在日后部署環(huán)境的時(shí)候,能夠把這些命令翻出來(lái)再看看。
安裝
實(shí)際上Vagrant只是一個(gè)讓你可以方便設(shè)置你想要的虛擬機(jī)的便攜式工具,它底層支持VirtualBox、VMware甚至AWS作為虛擬機(jī)系統(tǒng),本書(shū)中我們將使用VirtualBox來(lái)進(jìn)行說(shuō)明,所以第一步需要先安裝Vagrant和VirtualBox。
安裝環(huán)境:mac
注:windows環(huán)境下,基本一致
安裝VirtualBox
直接來(lái)到官網(wǎng) https://www.virtualbox.org/wiki/Downloads 點(diǎn)擊下載最新的virtualbox,雙擊安裝,一路傻瓜化完成。
安裝Vagrant
在進(jìn)行完上一個(gè)步驟后,我們就要考慮我們的虛擬機(jī)需要使用什么操作系統(tǒng)了。因?yàn)槲揖€(xiàn)上使用了Ubuntu16.04
的操作系統(tǒng),所以我線(xiàn)下也選擇了16.04的Ubuntu
操作系統(tǒng)。在以前使用vm的過(guò)程中,我們需要自己去下載鏡像,然后進(jìn)行相關(guān)的安裝,設(shè)置系統(tǒng)等等操作。而vagrant的開(kāi)源社區(qū),提供了很多已經(jīng)打包好的操作系統(tǒng),在vagrant的世界里被稱(chēng)為box。在 http://www.vagrantbox.es/ 這里你可以找到你想要的操作系統(tǒng)box,當(dāng)然你也可以自己制作一個(gè)。后續(xù)教程會(huì)講到,這里就不多說(shuō)。
我的開(kāi)發(fā)機(jī)是Mac,所以我建立了如下的開(kāi)發(fā)環(huán)境目錄:
$ /Users/vagrant
$ cd /Users/vagrant
這里注意,vagrant提供的在線(xiàn)安裝,有可能因?yàn)樘斐木W(wǎng)絡(luò)原因,很慢或者下載失敗,所以我會(huì)找到box的下載鏈接,用迅雷等工具下載好這個(gè)盒子。之后執(zhí)行安裝設(shè)置
$ vagrant box add {title} {url}
$ vagrant init {title}
$ vagrant up
vagrant box add
是添加box的命令
其中{title}可以自行設(shè)置,我這里使用的是 Ubuntu
,{url}是下載到本地box路徑。我的路徑是:/Users/vagrant/ubuntu.box
box中的鏡像文件被放到了:/Users/.vagrant.d/boxes/,如果在window系統(tǒng)中應(yīng)該是放到了: C:\Users\當(dāng)前用戶(hù)名.vagrant.d\boxes\目錄下。
# 如果是才add 的box,就必須執(zhí)行本步驟,初始化一次后,以后啟動(dòng)系統(tǒng),就不需要執(zhí)行本步驟。
$ vagrant init Ubuntu
輸出如下 :
A `Vagrantfile` has been placed in this directory.
You are now ready to `vagrant up` your first virtual environment!
Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
這樣就會(huì)在當(dāng)前目錄生成一個(gè) Vagrantfile的文件,里面有很多配置信息,后面我在慢慢說(shuō),默認(rèn)不做任何配置改動(dòng),也是可以啟動(dòng)系統(tǒng)的。
# 啟動(dòng)系統(tǒng)
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'base'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
...
ssh鏈接到虛擬機(jī)
經(jīng)過(guò)以上操作后,完成了虛擬機(jī)的安裝,現(xiàn)在需要登錄上虛擬機(jī),進(jìn)行操作。鏈接很簡(jiǎn)單,可以使用第三方(xshell等)shell工具或系統(tǒng)自帶的,進(jìn)行登錄
在系統(tǒng)中,如mac,可直接使用 vagrant ssh 來(lái)完成鏈接。或者使用第三方如xshell,ip地址是:localhost,端口,需要觀察,映射的22端口是多少。一般是2200 或者2222
用戶(hù)名與密碼均是: vagrant
vagrant的命令詳解
命令 | 作用 |
---|---|
vagrant box add | 添加box的操作 |
vagrant init | 初始化box的操作,會(huì)生成vagrant的配置文件Vagrantfile |
vagrant up | 啟動(dòng)本地環(huán)境 |
vagrant ssh | 通過(guò) ssh 登錄本地環(huán)境所在虛擬機(jī) |
vagrant halt | 關(guān)閉本地環(huán)境 |
vagrant suspend | 暫停本地環(huán)境 |
vagrant resume | 恢復(fù)本地環(huán)境 |
vagrant reload | 修改了 Vagrantfile 后,使之生效(相當(dāng)于先 halt,再 up) |
vagrant destroy | 徹底移除本地環(huán)境 |
vagrant box list | 顯示當(dāng)前已經(jīng)添加的box列表 |
vagrant box remove | 刪除相應(yīng)的box |
vagrant package | 打包命令,可以把當(dāng)前的運(yùn)行的虛擬機(jī)環(huán)境進(jìn)行打包 |
vagrant plugin | 用于安裝卸載插件 |
vagrant status | 獲取當(dāng)前虛擬機(jī)的狀態(tài) |
vagrant global-status | 顯示當(dāng)前用戶(hù)Vagrant的所有環(huán)境狀態(tài) |
后記
配置好Vagrant只是開(kāi)始,而之后在Linux配置環(huán)境,可以參考我之前的一篇文章,在《云服務(wù)器上部署Laravel》這篇文章,來(lái)配置自己的LNMP
環(huán)境。