使用Vagrant管理虛擬機

 

 

爲何須要使用Vagrant管理虛擬機?

由於你開發的項目最終是要運行在 Linux 系統的服務器上,在開發的過程種,你可能須要建立多個 Linux 系統的虛擬機。因此,你打算在本地也用 Linux 系統爲項目搭建一個開發環境,手工去安裝不一樣類型的 Linux 操做系統太麻煩了。你須要 Vagrant來統一管理這些虛擬機。html

Vagrant 可讓咱們用命令直接從雲上下載虛擬機的鏡像,你想要什麼系統都是能夠的。好比Centos,Ubuntu …   只須要一行命令,而後再用命令去操做虛擬機,啓動,暫停,關閉,重啓。這樣你能夠更方便的管理全部的在本地上電腦上的虛擬機鏡像,手工去配置它們,能夠再從新打包成新的鏡像,方便你跟你的團隊在其它的項目上重複使用這些打包的虛擬機鏡像。shell

下面的內容是我在Window電腦去安裝Vagrant,而後管理虛擬機的相關筆記分享。
 

Vagrant管理虛擬機筆記目錄:

———————————
 

1.一些準備工做

爲了能在Windows電腦上使用命令行工具,咱們須要下載cmder工具或Windows電腦自帶的Powershell命令行工具。vim

1.1 使用cmder命令行工具,你能夠在cmder官網去下載最新的cmder,而後放在你電腦的桌面上,解壓後,你會看到Cmder.exe,鼠標右鍵Cmder.exe已管理員方式運行,就就看到一個Cmder的命令行窗口,截圖以下圖所示。centos

Cmder截圖

Cmder截圖服務器

 
Cmder運行的命令行窗口

Cmder運行的命令行窗口網絡

 
1.2 若是你打算使用Windows電腦自帶的Powershell,你能夠在電腦左下角,輸入Powershell,而後已管理員身份運行它。見下面截圖:
以管理員身份運行Powershell

以管理員身份運行Powershellapp

Powershell命令行窗口

Powershell命令行窗口ssh

1.2.1 在Powershell命令行窗口輸入 Set-ExecutionPolicy Unresctricted 更改Powershell的執行策略,所下所示。
更改Powershell執行策略

更改Powershell執行策略編輯器

 
那麼到這裏,咱們在Windows電腦上面命令行工具(Cmder或Powershell)就能夠正常在Windows電腦上使用命令行進行操做了。
 

2.在Windows電腦安裝chocolately包管理工具

chocolately是一個包管理工具,你能夠在它的 官網瞭解 chocolately更詳細的資料。
 

輸入命令:工具

iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))

進行自動安裝chocolately工具,安裝完以後,能夠輸入 choco 查看一下版本,能看到版本信息就說明你已經安裝好了chocolately包管理工具。
chocolately安裝截圖

chocolately安裝截圖

3.在Windows電腦上安裝Vagrant軟件

命令 choco install vagrant
 

4.在Windows電腦上安裝Virtualbox軟件

命令 choco install virtualbox
 

5.給Vagrant添加BOX

默認咱們是沒有虛擬機的鏡像BOX的,咱們可使用vagrant box list查看本地電腦項目可使用的BOX列表,默認是空的。

下面咱們去vagrant cloud網站去搜索一下咱們想要的BOX,找到合適的BOX以後,複製一下BOX的名字,這裏我找了一個

viniciusfs/ centos7的BOX。下面咱們就來添加這個BOX.
添加BOX的命令是 vagrant box add viniciusfs/centos7   
[解釋:vagrant box add box 名稱]
安裝完成以後咱們能夠在使用  vagrant box list  來查看一下BOX列表。
查看BOX列表

查看BOX列表

6.在Windows電腦上建立項目目錄並在項目中啓動虛擬機

6.1在咱們本地電腦的桌面建立一個vagrant-learning 的文件夾,用於存放咱們的項目。
6.2運行Cmder或Powershell,而後進入到咱們的這個項目所在的目錄,
    cd c:\User\Desktop\vagrant-learning       //進入到vagrant-learning這個項目目錄
    vagrant box list                             //查看可用的BOX列表
    vagrant init viniciusfs/centos7      //初始化BOX
    vagrant up                                    //啓動虛擬機
在項目裏啓動虛擬機

在項目裏啓動虛擬機

啓動虛擬機

啓動虛擬機

7.在Windows電腦上登錄CentOS服務器

7.1 在Powershell或Cmder命令行窗口,輸入 vagrant ssh  登錄CentOS服務器。
vagrant ssh登錄服務器

vagrant ssh登錄服務器

 
7.2 使用 XshellPutty來登錄CentOS服務器。默認服務器的IP地址是 127.0.0.1, ssh端口 2222,用戶名 vagrant,密碼vagrant
Putty輸入IP和端口

Putty輸入IP和端口

輸入密碼vagrant

輸入密碼vagrant

Putty成功登錄服務器

Putty成功登錄服務器

8.在Windows電腦上使用Vagrant對虛擬機進行啓動,關機,暫停,恢復,銷燬操做

啓動:     vagrant up
中止:     vagrant halt
暫停:  vagrant suspend
恢復: vagrant resume
重啓:     vagrant reload
銷燬: vagrant destroy
查看虛擬機狀態:  vagrant status
 

9.虛擬機的共享目錄

通常咱們本地電腦的項目所在的文件夾就是和虛擬機同步的目錄,咱們能夠在項目的文件夾裏面去建立文件,而後,虛擬機就能夠執行咱們本地電腦項目裏面的文件。本地項目所在文件夾,這裏是vagrant-learning則對應虛擬機的 /vagrant目錄,他們是同步的。下面咱們能夠來驗證一下。
 
9.1 在本地電腦項目文件夾vagrant-learning下面建立一個www文件夾,在www下建立index.html。
9.2 用編輯器打開index.html寫點內容,好比這裏寫的內容是 「vagrant 學習」。
9.3 在Cmder或Powershell登錄虛擬機( vagrant ssh),而後 cd /vagrant 進入vagrant目錄,咱們看到了咱們在本地電腦手動建立的www文件夾。
9.4  cd www切換到www目錄, ls 查看一下www下的文件,咱們看到了本地電腦建立的index.html文件。
9.5 cat index.html 查看index.html裏面的內容,咱們看到了,咱們在本地電腦index.html裏面寫的內容 「vagrant 學習」。
虛擬機上查看項目裏的文件

虛擬機上查看項目裏的文件

10.在Windows本地電腦給虛擬機建立額外的共享目錄

10.1 用編輯器打開咱們的項目文件夾vagrant-learning下的Vagrantfile.
10.2 找到 「 # config.vm.synced_folder 「../data」, 「/vagrant_data 」這一行,把這一行最前面的#去掉。
10.3. 按回車,在這一行的下面輸入: create:true,owner:」root」,group:」root」  (意思是若是本地沒有data這個文件夾的話就建立一個data文件,文件夾的owner擁有着和group羣組都屬於root)
10.4 保存並關閉Vagrantfile文件。
10.5 vagrant reload 重啓虛擬機。
10.6 vagrant ssh登錄虛擬機,進入根目錄 (cd /) ,ls-la能夠看到多了一個vagrant_data的目錄,它和本地電腦的 data 是一組同步的目錄,vagrant_data的擁有者和羣組都是root。
配置虛擬機共享目錄

配置虛擬機共享目錄

vagrant_data同步目錄

vagrant_data同步目錄

11.給虛擬機配置私有網絡

11.1 用編輯器打開本地項目vagrant-learning下的Vagrantfile。
11.2 找到  # config.vm.network 「private_network」, ip: 「192.168.33.10」  這一行,把最前面的#去掉,後面IP地址根據本身須要設置私有IP地址段的IP地址。我這裏設置的是192.168.1.10
11.3 保存並關閉Vagrantfile.
11.4 vagrant reload重啓一下虛擬機。
11.5 ping一下咱們剛剛配置的虛擬機IP地址,這裏ping 192.168.1.10,咱們看到能夠ping通。
ping虛擬機IP地址

ping虛擬機IP地址

11.6 咱們能夠登錄進去虛擬機檢查一下虛擬機的IP地址。
vagrant ssh
ifconfig
ifconfig查看IP地址

ifconfig查看IP地址

12. 給虛擬機配置公有網絡

12.1 用編輯器打開項目vagrant-learning下的Vagrantfile.
12.2 找到 #config.vm.network 「public_network」 這一行,把最前面的#去掉,保存文件。
12.3 vagrant reload 重啓虛擬機。
12.4 vagrant ssh登錄虛擬機,ifconfig查看一下如今虛擬機的IP地址。
12.5 exit虛擬機,ping虛擬機IP地址,看到能夠ping通。
12.6 用局域網的其餘電腦,ping虛擬機IP地址,應該也是能夠ping通。說明公有網絡配置正確。
(圖略)

13. 在centos7虛擬機上搭建WEB服務器

sudo yum install httpd                           //安裝apach
sudo yum install vim                             //安裝vim編輯器
sudo vim /etc/httpd/conf/httpd.conf    //修改apach配置文件,更改網站根目錄爲DocumentRoot /vagrant/www/
sudo service httpd start                        //啓動apach
sudo service httpd status                    //查看apach運行的狀態
sudo service httpd restart                  //重啓apach服務
sudo service httpd stop                   // 中止apach服務
(圖略)
 
 

14. 從新打包虛擬機BOX

從新打包BOX的目的是在之後的項目中能夠複用,好比咱們將安裝好apach服務的BOX打包,下次咱們須要用到apach服務的虛擬主機的時候,直接初始化咱們打包好的BOX,而後vagrant up啓動以後,就可使用apach,就不用在去配置apach相關的東西了。
14.1 進入項目的目錄vagrant-learning,而後vagrant up啓動虛擬機。
14.2 刪除70-persistent-net.rules.
刪除70-persistent-net.rules

刪除70-persistent-net.rules

14.3 vagrant package打包虛擬機鏡像BOX。
vagrant package打包虛擬機鏡像BOX

vagrant package打包虛擬機鏡像BOX

14.4 添加咱們打包的BOX
vagrant box add lihong/centos7 package.box
//lihong/centos7 是我定義的BOX的名稱, package.box是要添加的BOX
添加打包的package.box

添加打包的package.box

14.5 刪除打包生成的package.box文件。
rm -rf package.box
 
14.5 查看一下可用的BOX列表。
vagrant box list
 
刪除打包生成的package.box

刪除打包生成的package.box

 

15. 在新的項目上應用打包的虛擬機BOX

15.1 在本地電腦從新建立一個項目的目錄,好比lihong,並進入lihong這個目錄。
15.2 初始化咱們打包後添加的BOX,這裏咱們定義打包後的BOX名字是lihong/centos7
vagrant init lihong/centos7
初始化打包的BOX

初始化打包的BOX

15.3 查看打包後運行的BOX是否裝了apach
查看apach狀態

查看apach狀態

 

16.在Windows電腦上用Vagrant定義多主機

16.1 在桌面上建立一個新的工做項目目錄workflow-project.
16.2 進入這個目錄,vagrant box list查看一下可使用的box,以下 (lihong/centos7這個BOX是我本身打包的BOX,咱們後面使用這個BOX)
workflow-project可用的BOX

workflow-project可用的BOX

16.3在workflow-project項目下初始化 lihong/centos7這個BOX,它會在workflow-project文件夾下面建立一個vagrantfile的文件。
 
16.4 使用編輯器打開workflow-project這個目錄下邊的Vagrantfile文件,分別定義development和production這兩臺主機。配置方法以下截圖所示。
配置development和production主機

配置development和production主機

16.5 查看這2臺虛擬機的狀態。vagrant status
多主機的not create狀態

多主機的not create狀態

16.6 啓動這兩臺主機。

vagrant up (它會同時啓動development ,production這2臺主機)

若是要啓動其中的某一臺,咱們使用命令 vagrant up developement來單獨啓動development 這臺主機。若是想SSH進入某臺主機可使用命令 vagrant ssh development (這個命令是ssh登錄development 這臺主機)
啓動完成以後,咱們再來看一下vagrant status,這2臺主機都已經處於running運行狀態了。
多主機running狀態

多主機running狀態

 

17.多主機的網絡配置

17.1 用編輯器打開工做項目的目錄workflow下的Vagrantfile。
17.2 在Vagrantfile給2臺主機設置IP地址。具體設置參考下面截圖。
這裏咱們給2臺主機定義私有網絡IP地址。兩臺IP地址分別爲192.168.2.100, 192.168.2.101
(值得注意的是,IP地址要和你本地電腦的IP地址處於不一樣的網段)
 
給多主機配置IP地址

給多主機配置IP地址

17.3 vagrant reload重啓虛擬主機。
 
17.4 在SSH鏈接到這2臺主機。vagrant ssh development , vagrant ssh production。
而後用ifconfig命令來查看一下development和production主機的IP地址。
查看development主機的IP地址

查看development主機的IP地址

查看production主機的IP地址

查看production主機的IP地址

17.5 站在development 主機上測試是否能夠ping通production主機的IP地址192.168.2.101。
站在development上ping一下production主機的IP地址

站在development上ping一下production主機的IP地址

 
17.6 反過來,站在production主機上測試一下是否能夠ping通development主機的IP地址192.168.2.100。
站在production主機ping一下development主機的IP地址

站在production主機ping一下development主機的IP地址

18.多主機的主機名設置

18.1 咱們先SSH登錄主機,輸入命令 hostname查看一下如今的主機名。
hostname查看主機名

hostname查看主機名

 
18.2 在定義這2臺主機的Vagrantfile裏面去設置一下這兩臺主機的主機名。
定義多主機名

定義多主機名

 
18.3 vagrant reload 重啓一下這2臺主機。而後從新SSH登錄,看一下hostname.
從新查看主機名

從新查看主機名

從新查看主機名2

從新查看主機名2

 
備註:咱們也能夠經過network文件進行修改主機名:
vi /etc/sysconfig/network
service network restart
 
 

19.多主機的共享目錄設置

默認多主機使用項目所在的目錄做爲虛擬機和本地電腦的同步目錄。這裏默認就是,本地電腦的同步目錄是workflow-project, 2臺虛擬主機development,production主機根目錄下的vagrant 目錄。
咱們的任務是給development , production分別建立2個不一樣的同步共享目錄。
 
19.1 在項目的目錄分別建立development ,production 文件夾。
本地項目的目錄下建立2個同步目錄

本地項目的目錄下建立2個同步目錄

19.2 編輯Vagrantfile,設置同步的目錄。
在Vagrantfile中設置同步目錄

在Vagrantfile中設置同步目錄

19.3 vagrant reload重啓主機。
 
19.4 而後咱們在本地電腦development下放一個index.html
本地development同步目錄下添加文件

本地development同步目錄下添加文件

19.5 vagrant ssh development 登錄development主機查看 /vagrant 是否有這個文件,若是有就同步成功了。以下截圖。
在development主機查看同步目錄vagrant是否有本地添加的文件

在development主機查看同步目錄vagrant是否有本地添加的文件

 
 
哇噢,寫到如今寫了很久,太累了,休息一下。你學會了嗎?若是有問題能夠在下方留言,相互交流
相關文章
相關標籤/搜索