使用vagrant來搭建跨平臺的開發環境
一切的開始是vagrant的 官方文件
1、安裝必要的軟體
1.1、安裝vagrant
vagrant的官網地址是 https://www.vagrantup.com/ ,官網頁面如下
vagrant官網地址
安裝檔案就去download就好了,安裝過程是傻瓜式的安裝過程,下一步下一步的操作,如果需要更改安裝地址修改即可,安裝完畢之後使用命令列檢視安裝版本:
vagrant版本檢視
出現上述的版本就說明vagrant是正確安裝的
1.2、安裝virtual box和Xshell
virtual box是虛擬機器的執行環境,同類型的還有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相關的命令
命令 | 解釋 |
---|---|
vagrant box list | 檢視目前已經存在的box |
vagrant box add | 新增加一個box |
vagrant box remove | 移除一個box |
2.2、虛擬機器相關的命令
命令 | 解釋 |
---|---|
vagrant init | 初始化配置檔案vgrantfile |
vagrant up | 啟動虛擬機器 |
vagrant ssh | ssh登入虛擬機器 |
vagrant suspend | 掛起虛擬機器 |
vagrant reload | 重啟虛擬機器 |
vagrant halt | 關閉虛擬機器 |
vagrant status | 檢視虛擬機器狀態 |
vagrant destory | 刪除虛擬機器 |
3、虛擬機器環境搭建
3.1、box檔案依賴說明
vagrant搭建開發環境要依賴box檔案,在官網上的findbox可以開啟對應的box檔案搜尋站,地址是: https://app.vagrantup.com/boxes/search
box檔案搜尋
上面的provider標識的是提供給什麼樣的虛擬機器管理軟體使用的,比如virtualbox就是針對Virtual Box使用的,關於依賴的說法是vagrant可以使用線上或者離線的方式載入box檔案來建立對應的虛擬環境
3.2、線上方式依賴box檔案搭建虛擬機器環境
下面使用“ubuntu/trusty64”為例子做虛擬機器搭建的示例:
點選對應的資料條目使用最新的版本做處理,如下是這個box檔案的載入配置示例:
ubuntu/trusty64所有版本
ubuntu/trusty64的某一個具體版本
上面圖中的程式碼段
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/trusty64" config.vm.box_version = "20190110.0.3" end
後面會使用到,下面是實操過程
建立一個test資料夾,並在這個資料夾中使用命令初始化
vagrant init
初始化完畢之後的資料夾下會多出一個‘Vagrantfile’檔案,圖中標記的程式碼段就是需要在這個檔案中配置的
初始化完成
替換Vagrantfile檔案中的內容為上面的程式碼段,並在程式碼段中新增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
這個命令根據‘Vagrantfile’檔案去啟動虛擬機器環境,過程如下:
啟動過程
在上述的這個啟動的過程中‘Virtual Box’軟體中也會出現變化,執行欄會新增一個虛擬機器環境:
新增的虛擬機器環境
完成啟動之後使用Xshell本地埠2222連線虛擬機器,初始的使用者名稱和密碼是vagrant,配置和連線成功的示意圖如下:
連線配置
連線成功並檢視ip
3.3、離線方式依賴box檔案搭建虛擬機器環境
3.3.1、下載離線box檔案並新增box
還是使用上面的“ubuntu/trusty64”為例子做虛擬機器環境離線搭建的示例,首先去下載這個的離線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設定的名字,可以根據實際情況修改,新增完畢之後使用下面的命令檢視新增加的box
vagrant box list
新增檢視box
3.3.2、基於離線box建立虛擬機器環境
上面已經添加了名字為test的box,這裡就基於這個box建立虛擬機器
建立一個資料夾,並在資料夾中使用下面的初始化命令
vagrant init test
初始化命令之後會生成Vagrantfile檔案,在其中新增ip的配置設定
config.vm.network "private_network", ip: "192.168.10.11",auto_config: true
建立資料夾和執行初始化的過程圖如下:
離線安裝下建立資料夾和執行初始化
然後就是啟動這個虛擬機器環境
vagrant up
啟動過程響應和Virtual Box中的顯示如下:
離線安裝下的啟動過程
4、虛擬機器內的開發環境搭建
上面的過程已經介紹了虛擬機器的建立,下面使用Xshell連線虛擬機器並搭建php的開發環境,為了方便,下面的安裝過程均使用命令列的方式安裝對應的軟體或者包檔案。
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
安裝完畢之後已經啟動了,檢視狀態和瀏覽器訪問示意:
nginx狀態
瀏覽器訪問
安裝apache
apt-get install apache2
安裝完畢之後啟動檢視執行的狀態和訪問示意:
apache狀態
瀏覽器訪問
4.3、安裝mysql
服務端安裝命了
apt-get install mysql-server
服務端安裝會提示輸入管理員密碼,自己設定一個即可
客戶端安裝命令
aot-get install mysql-client
安裝完畢之後使用 mysql -uroot -p
輸入密碼登入查詢mysql的版本
mysql登入和版本查詢
4.4、安裝php
這裡安裝PHP5的版本,整個記錄描述的重點不是php的版本而是可移植的開發環境搭建過程
安裝命令
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,現在修改為172.0.0.1:9000的監聽
vim /etc/php5/fpm/pool.d/www.conf
遮蔽原來的sock,修改為127.0.0.1:9000
修改fpm監聽配置
然後重啟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函式的輸出
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、環境配置的額外說明
經過上述的安裝,基本自定義出了一個自己常用的開發環境,如果需要更加個性化的環境,上述的php,mysql,apache或者nginx均可以使用原始碼的方式來進行安裝
5、vagrant虛擬機器配置優化
詳細的vagrant配置和使用參見g官網文件 https://www.vagrantup.com/docs/index.html
下面列舉三個優化的點
5.1、設定虛擬機器埠轉發
虛擬機器埠轉發 參考連結
基礎配置的示例程式碼:
Vagrant.configure("2") do |config| config.vm.network "forwarded_port", guest: 80, host: 8080 end
guest表示的是虛擬機器埠,host表示的是宿主機埠,設定示例如下:
埠轉發示例
將虛擬機器80和8888埠分別轉發到宿主機的8888和8889埠,然後使用 vagrant reload
命令過載虛擬機器,啟動過程中的埠轉發如下:
啟動過程中的埠轉發
重啟之後再瀏覽器中使用宿主機的8888和8889埠就可以訪問虛擬機器的80和8888埠了,其中已經把虛擬機器的apache伺服器的訪問埠設定為8888了,下面是在宿主機中的訪問注意看瀏覽器的位址列:
nginx轉發埠訪問
apache轉發埠訪問
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的設定參考,下面是開發環境中的私有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直接訪問虛擬機器,就不需要通過宿主機埠轉發了,直接訪問如下,請注意位址列:
nginx私有ip訪問
apache私有ip訪問
6、vagrant打包分發操作
6.1、打包分發操作
上述的5個小節中比較詳細的說明了vagrant建立虛擬機器並搭建lamp或者lnmp開發環境的過程,整個過程就是為了最終能夠打包這個環境做準備的,否則每一次都需要重複前面的操作也就失去了vagrant提供的便利性。
box檔案搜尋連結 中能夠搜尋到的包檔案就是通過打包分發之後以便開發者下載並基於下載檔案打造自己的開發環境,大量的節省開發環境的搭建時間,但是我們總想擁有自己自定義的開發環境,這樣的情況下經過上述的過程、引入自己使用的開放框架程式碼並打包成box檔案,將box檔案通過物理儲存盤、網盤或者團隊工作伺服器進行上傳分發,無論是新入職的員工搭建開發環境,還是更新已有開發環境都能在很短的時間內實現了。
下面是實際的操作過程,打包命令如下
//不帶引數虛擬機器被打包成名為package.box的檔案 vagrant package //帶 --output引數被打包為指定名字的.box檔案 vagrant package --outputxxx.box
打包之前需要停止虛擬機器且最好將Vagrantfile檔案中的ip設定遮蔽掉,或者增加auto_config引數,這個引數的值設定為true,否者其他人使用生成的.box檔案建立開發環境的時候會出現連線錯誤
打包過程和產生的檔案如下:
打包過程和產生的box檔案
現在有了自己的自動以的.box檔案,那麼就可以參考3.3節中的操作去快速構建開發環境了
6.2、包更新和虛擬機器更新
如果開發環境需要更新,分為兩個部分處理:
1)新使用者
使用備份的虛擬機器重新安裝先關的軟體、包檔案或者其他必須的檔案,處理完之後重新打包分發,新使用者拿到box檔案之後就可構建更新後的開發環境;
2)已經在使用的使用者
使用 provision
配置來安裝處理自己需要的東西(當然也可以直接手動安裝),這個的參考說明見 地址 ,下面以redis的安裝為例說明更新的操作
config.vm.provision "shell", inline: <<-SHELL apt-get install -y redis-server SHELL
配置完畢之後使用 vagrant reload --provision
命令重啟,注意這裡的新增引數--provision的使用
重啟和安裝redis的過程
驗證redis安裝成功