使用vagrant來搭建跨平臺的開發(fā)環(huán)境

一切的開始是vagrant的官方文檔

1橡娄、安裝必要的軟件

1.1、安裝vagrant

vagrant的官網(wǎng)地址是https://www.vagrantup.com/,官網(wǎng)頁面如下

vagrant官網(wǎng)地址

安裝文件就去download就好了阱表,安裝過程是傻瓜式的安裝過程淹禾,下一步下一步的操作馁菜,如果需要更改安裝地址修改即可,安裝完畢之后使用命令行查看安裝版本:

vagrant版本查看

出現(xiàn)上述的版本就說明vagrant是正確安裝的

1.2稀拐、安裝virtual box和Xshell

virtual box是虛擬機的運行環(huán)境火邓,同類型的還有VMWare、Parallels 或 Hyper-V,但是只有virtual box是不收費的铲咨,這個軟件的下載參考地址是:https://www.virtualbox.org/wiki/Downloads

virtual box下載

Xshell是一個安全終端模擬軟件躲胳,這里不做過多的介紹,軟件下載參考地址:http://www.downza.cn/soft/235505.html

Xshell下載參考地址界面

這兩個軟件都是傻瓜是的安裝過程纤勒,安裝路徑最好自定義在不是C盤即可坯苹;

2、vagrant的常用命令

vagrant的使用參考地址是:https://www.vagrantup.com/docs/index.html
下面簡單的介紹幾個常用的命令

2.1摇天、box相關(guān)的命令

命令 解釋
vagrant box list 查看目前已經(jīng)存在的box
vagrant box add 新增加一個box
vagrant box remove 移除一個box

2.2粹湃、虛擬機相關(guān)的命令

命令 解釋
vagrant init 初始化配置文件vgrantfile
vagrant up 啟動虛擬機
vagrant ssh ssh登錄虛擬機
vagrant suspend 掛起虛擬機
vagrant reload 重啟虛擬機
vagrant halt 關(guān)閉虛擬機
vagrant status 查看虛擬機狀態(tài)
vagrant destory 刪除虛擬機

3、虛擬機環(huán)境搭建

3.1泉坐、box文件依賴說明

vagrant搭建開發(fā)環(huán)境要依賴box文件为鳄,在官網(wǎng)上的findbox可以打開對應的box文件搜索站,地址是:https://app.vagrantup.com/boxes/search

box文件搜索

上面的provider標識的是提供給什么樣的虛擬機管理軟件使用的腕让,比如virtualbox就是針對Virtual Box使用的孤钦,關(guān)于依賴的說法是vagrant可以使用在線或者離線的方式加載box文件來創(chuàng)建對應的虛擬環(huán)境

3.2、在線方式依賴box文件搭建虛擬機環(huán)境

下面使用“ubuntu/trusty64”為例子做虛擬機搭建的示例:

點擊對應的數(shù)據(jù)條目使用最新的版本做處理纯丸,如下是這個box文件的加載配置示例:

ubuntu/trusty64所有版本
ubuntu/trusty64的某一個具體版本

上面圖中的代碼段

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.box_version = "20190110.0.3"
end

后面會使用到偏形,下面是實操過程

創(chuàng)建一個test文件夾,并在這個文件夾中使用命令初始化

vagrant init

初始化完畢之后的文件夾下會多出一個‘Vagrantfile’文件觉鼻,圖中標記的代碼段就是需要在這個文件中配置的

初始化完成

替換Vagrantfile文件中的內(nèi)容為上面的代碼段俊扭,并在代碼段中新增IP地址的配置

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.box_version = "20190110.0.3"
  config.vm.network "private_network", ip: "192.168.10.10",auto_config: true
end

然后運行下面的命令

vagrant up

這個命令根據(jù)‘Vagrantfile’文件去啟動虛擬機環(huán)境,過程如下:


啟動過程

在上述的這個啟動的過程中‘Virtual Box’軟件中也會出現(xiàn)變化坠陈,運行欄會新增一個虛擬機環(huán)境:

新增的虛擬機環(huán)境

完成啟動之后使用Xshell本地端口2222連接虛擬機萨惑,初始的用戶名和密碼是vagrant,配置和連接成功的示意圖如下:

連接配置
連接成功并查看ip

3.3、離線方式依賴box文件搭建虛擬機環(huán)境

3.3.1畅姊、下載離線box文件并添加box

還是使用上面的“ubuntu/trusty64”為例子做虛擬機環(huán)境離線搭建的示例咒钟,首先去下載這個的離線box文件
下面有一個box文件下載的參考地址:http://www.vagrantbox.es/
對應的找到“trusty64”的下載地址是:https://github.com/sepetrov/trusty64/releases/download/v0.0.5/trusty64.box
下載完畢之后放在指定的磁盤路徑上,這里放在了D盤的VM目錄下:

下載的box文件

有了box使用下面的命令添加box

vagrant box add test trusty64.box

其中的test是為添加之后的box設定的名字若未,可以根據(jù)實際情況修改朱嘴,添加完畢之后使用下面的命令查看新增加的box

vagrant box list
添加查看box
3.3.2、基于離線box創(chuàng)建虛擬機環(huán)境

上面已經(jīng)添加了名字為test的box粗合,這里就基于這個box創(chuàng)建虛擬機

創(chuàng)建一個文件夾萍嬉,并在文件夾中使用下面的初始化命令

vagrant init test

初始化命令之后會生成Vagrantfile文件,在其中添加ip的配置設置

config.vm.network "private_network", ip: "192.168.10.11",auto_config: true

創(chuàng)建文件夾和執(zhí)行初始化的過程圖如下:


離線安裝下創(chuàng)建文件夾和執(zhí)行初始化

然后就是啟動這個虛擬機環(huán)境

vagrant up

啟動過程響應和Virtual Box中的顯示如下:


離線安裝下的啟動過程

4隙疚、虛擬機內(nèi)的開發(fā)環(huán)境搭建

上面的過程已經(jīng)介紹了虛擬機的創(chuàng)建壤追,下面使用Xshell連接虛擬機并搭建php的開發(fā)環(huán)境,為了方便供屉,下面的安裝過程均使用命令行的方式安裝對應的軟件或者包文件行冰。

4.1溺蕉、備份和替換軟件源

備份命令

cp /etc/apt/sources.list /etc/apt/sources.list.bak 

編輯替換源地址

sudo vim /etc/apt/sources.list

沒有安裝vim的使用apt-get install vim安裝即可,安裝之前最好先更新apt-get update,更換的源地址是:

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

替換之后再次更新apt-get update

4.2、安裝apache和nginx

apache和nginx是服務器軟件悼做,一般來說安裝一個即可疯特,這里兩個都安裝做演示用。
安裝nginx:

apt-get install nginx

安裝完畢之后已經(jīng)啟動了肛走,查看狀態(tài)和瀏覽器訪問示意:


nginx狀態(tài)

瀏覽器訪問

安裝apache

apt-get install apache2

安裝完畢之后啟動查看運行的狀態(tài)和訪問示意:


apache狀態(tài)

瀏覽器訪問

4.3漓雅、安裝mysql

服務端安裝命了

apt-get install mysql-server

服務端安裝會提示輸入管理員密碼,自己設置一個即可
客戶端安裝命令

aot-get install mysql-client

安裝完畢之后使用mysql -uroot -p輸入密碼登錄查詢mysql的版本

mysql登錄和版本查詢

4.4朽色、安裝php

這里安裝PHP5的版本邻吞,整個記錄描述的重點不是php的版本而是可移植的開發(fā)環(huán)境搭建過程
安裝命令

apt-get install php5-cli

安裝完畢之后可以查看php的版本:

php版本查看

安裝幾個常用的擴展:

apt-get install php5-mcrypt
apt-get install php5-mysql
apt-get install php5-gd

4.5 配置apache和nginx支持php的解析

4.5.1、支持nginx的fastcgi模式

安裝php5-cgi和php5-fpm

apt-get install php5-cgi php5-fpm

安裝完畢之后修改連接池子的配置葫男,原來默認的是sock抱冷,現(xiàn)在修改為172.0.0.1:9000的監(jiān)聽

vim /etc/php5/fpm/pool.d/www.conf

屏蔽原來的sock,修改為127.0.0.1:9000


修改fpm監(jiān)聽配置

然后重啟fpm

sudo /etc/init.d/php5-fpm restart

接下來就是修改nginx的配置文件

vim /etc/nginx/sites-available/default

這里面有兩個地方需要修改:
1)新增默認解析文件配置梢褐,也就新加一個index.php

新增index.php到解析配置處

2)參照放開nginx解析PHP的配置部分,這一部分初始是注釋掉的

nginx解析PHP部分放開

然后重啟nginx

sudo /etc/init.d/nginx restart

之后再nginx根目錄下新增index.php文件徘层,里面對phpinfo函數(shù)的輸出

cd /usr/share/nginx/html
echo '<?php phpinfo(); ?>' > index.php

瀏覽器訪問效果:


nginx瀏覽器解析php效果
4.5.1、支持apache的PHP模塊

安裝模塊

apt-get install libapache2-mod-php5

安裝完畢之后啟動rewrite

sudo a2enmod rewrite

瀏覽器的訪問效果:


apache的瀏覽器訪問效果

4.6利职、環(huán)境配置的額外說明

經(jīng)過上述的安裝,基本自定義出了一個自己常用的開發(fā)環(huán)境瘦癌,如果需要更加個性化的環(huán)境猪贪,上述的php,mysql讯私,apache或者nginx均可以使用源碼的方式來進行安裝

5热押、vagrant虛擬機配置優(yōu)化

詳細的vagrant配置和使用參見g官網(wǎng)文檔https://www.vagrantup.com/docs/index.html

下面列舉三個優(yōu)化的點

5.1、設置虛擬機端口轉(zhuǎn)發(fā)

虛擬機端口轉(zhuǎn)發(fā)參考鏈接
基礎配置的示例代碼:

Vagrant.configure("2") do |config|
  config.vm.network "forwarded_port", guest: 80, host: 8080
end

guest表示的是虛擬機端口,host表示的是宿主機端口斤寇,設置示例如下:


端口轉(zhuǎn)發(fā)示例

將虛擬機80和8888端口分別轉(zhuǎn)發(fā)到宿主機的8888和8889端口桶癣,然后使用vagrant reload命令重載虛擬機,啟動過程中的端口轉(zhuǎn)發(fā)如下:

啟動過程中的端口轉(zhuǎn)發(fā)

重啟之后再瀏覽器中使用宿主機的8888和8889端口就可以訪問虛擬機的80和8888端口了娘锁,其中已經(jīng)把虛擬機的apache服務器的訪問端口設置為8888了牙寞,下面是在宿主機中的訪問注意看瀏覽器的地址欄:


nginx轉(zhuǎn)發(fā)端口訪問

apache轉(zhuǎn)發(fā)端口訪問

5.2、共享文件夾設置

共享文件夾參考鏈接
基礎用法示例:

Vagrant.configure("2") do |config|
  # other config here
  config.vm.synced_folder "D:/readbooknote", "/home/www"
end

重啟vagrant reload過程中的共享文件夾和實際虛擬機中的示例如下:

重啟過程中的共享文件夾

實際虛擬機中的共享文件

5.3 設置虛擬機ip

虛擬機的ip設置參考莫秆,這個里面有私有ip和公有ip的設置參考间雀,下面是開發(fā)環(huán)境中的私有ip設置示例:

Vagrant.configure("2") do |config|
  # other config here
  config.vm.network "private_network", ip: "192.168.10.11",auto_config: true
end

重啟vagrant reload之后就可以在宿主機上使用設置的ip直接訪問虛擬機,就不需要通過宿主機端口轉(zhuǎn)發(fā)了镊屎,直接訪問如下惹挟,請注意地址欄:

nginx私有ip訪問

apache私有ip訪問

6、vagrant打包分發(fā)操作

6.1缝驳、打包分發(fā)操作

上述的5個小節(jié)中比較詳細的說明了vagrant創(chuàng)建虛擬機并搭建lamp或者lnmp開發(fā)環(huán)境的過程连锯,整個過程就是為了最終能夠打包這個環(huán)境做準備的归苍,否則每一次都需要重復前面的操作也就失去了vagrant提供的便利性。
box文件搜索鏈接中能夠搜索到的包文件就是通過打包分發(fā)之后以便開發(fā)者下載并基于下載文件打造自己的開發(fā)環(huán)境运怖,大量的節(jié)省開發(fā)環(huán)境的搭建時間拼弃,但是我們總想擁有自己自定義的開發(fā)環(huán)境,這樣的情況下經(jīng)過上述的過程驳规、引入自己使用的開放框架代碼并打包成box文件肴敛,將box文件通過物理存儲盤、網(wǎng)盤或者團隊工作服務器進行上傳分發(fā)吗购,無論是新入職的員工搭建開發(fā)環(huán)境医男,還是更新已有開發(fā)環(huán)境都能在很短的時間內(nèi)實現(xiàn)了。

下面是實際的操作過程,打包命令如下

//不帶參數(shù)虛擬機被打包成名為package.box的文件
vagrant package 
//帶 --output參數(shù)被打包為指定名字的.box文件
vagrant package --output  xxx.box

打包之前需要停止虛擬機且最好將Vagrantfile文件中的ip設置屏蔽掉捻勉,或者增加auto_config參數(shù)镀梭,這個參數(shù)的值設置為true,否者其他人使用生成的.box文件創(chuàng)建開發(fā)環(huán)境的時候會出現(xiàn)連接錯誤

打包過程和產(chǎn)生的文件如下:

打包過程和產(chǎn)生的box文件

現(xiàn)在有了自己的自動以的.box文件踱启,那么就可以參考3.3節(jié)中的操作去快速構(gòu)建開發(fā)環(huán)境了

6.2报账、包更新和虛擬機更新

如果開發(fā)環(huán)境需要更新,分為兩個部分處理:
1)新用戶
使用備份的虛擬機重新安裝先關(guān)的軟件埠偿、包文件或者其他必須的文件透罢,處理完之后重新打包分發(fā),新用戶拿到box文件之后就可構(gòu)建更新后的開發(fā)環(huán)境冠蒋;
2)已經(jīng)在使用的用戶
使用provision配置來安裝處理自己需要的東西(當然也可以直接手動安裝)羽圃,這個的參考說明見地址,下面以redis的安裝為例說明更新的操作

  config.vm.provision "shell", inline: <<-SHELL
    apt-get install -y redis-server
  SHELL

配置完畢之后使用vagrant reload --provision命令重啟,注意這里的新增參數(shù)--provision的使用

重啟和安裝redis的過程

驗證redis安裝成功

7抖剿、參考文獻

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朽寞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子斩郎,更是在濱河造成了極大的恐慌脑融,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缩宜,死亡現(xiàn)場離奇詭異肘迎,居然都是意外死亡,警方通過查閱死者的電腦和手機脓恕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門膜宋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炼幔,你說我怎么就攤上這事秋茫。” “怎么了乃秀?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵肛著,是天一觀的道長圆兵。 經(jīng)常有香客問我,道長枢贿,這世上最難降的妖魔是什么殉农? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮局荚,結(jié)果婚禮上超凳,老公的妹妹穿的比我還像新娘。我一直安慰自己耀态,他們只是感情好轮傍,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著首装,像睡著了一般创夜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仙逻,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天驰吓,我揣著相機與錄音,去河邊找鬼系奉。 笑死檬贰,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的缺亮。 我是一名探鬼主播偎蘸,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瞬内!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起限书,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤虫蝶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后倦西,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體能真,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年扰柠,在試婚紗的時候發(fā)現(xiàn)自己被綠了粉铐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡卤档,死狀恐怖蝙泼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情劝枣,我是刑警寧澤汤踏,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布织鲸,位于F島的核電站,受9級特大地震影響溪胶,放射性物質(zhì)發(fā)生泄漏搂擦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一哗脖、第九天 我趴在偏房一處隱蔽的房頂上張望瀑踢。 院中可真熱鬧,春花似錦才避、人聲如沸橱夭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徘钥。三九已至,卻和暖如春肢娘,著一層夾襖步出監(jiān)牢的瞬間呈础,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工橱健, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留而钞,地道東北人。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓拘荡,卻偏偏與公主長得像臼节,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子珊皿,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容