1. 程式人生 > 實用技巧 >vagrant+java+springcloud+redis+zookeeper映象下載(&製作詳解)

vagrant+java+springcloud+redis+zookeeper映象下載(&製作詳解)


《SpringCloud Nginx 高併發核心程式設計》 環境搭建 - 系列

元件 連結地址
【必須】 虛擬機器Linux 開發環境準備
Linux openresty 安裝 Linux openresty 安裝
【必須】Linux Redis 安裝(帶視訊) Linux Redis 安裝(帶視訊)
【必須】Linux Zookeeper 安裝(帶視訊) Linux Zookeeper 安裝, 帶視訊
Windows Redis 安裝(帶視訊) Windows Redis 安裝(帶視訊)
RabbitMQ 離線安裝(帶視訊) RabbitMQ 離線安裝(帶視訊)
ElasticSearch 安裝, 帶視訊 ElasticSearch 安裝, 帶視訊
Nacos 安裝(帶視訊) Nacos 安裝(帶視訊)
【必須】Eureka Eureka 入門,帶視訊
【必須】springcloud Config 入門,帶視訊 springcloud Config 入門,帶視訊
【必須】SpringCloud 腳手架打包與啟動 SpringCloud腳手架打包與啟動
Linux 自啟動 假死自啟動 定時自啟 Linux 自啟動 假死啟動

什麼是vagrant

必先利其器,開發環境 和 開發工具 就是 我們開發人員的劍,所以我們需要一個快並且好用的劍

Vagrant:是一個比較流行的虛擬機器管理軟體,使用Vagrant 可以讓我們用命令直接從雲上下載虛擬機器的映象,然後進行建立和管理等。

剛開始做開發的時候的都是把開發環境 配置在 自己的電腦上,隨著後面我們接觸的東西越來越多,慢慢的電腦上都是各種環境了,php,java,python,nodejs等等,非常麻煩,並且經常由於某種原因就把電腦重灌了,ORZ,所以環境都要重來。所以打造一個屬於自己並且可以移動的環境是非常重要的。

vagrant就是一款構建虛擬開發環境的工具,支援window,linux,mac,總有一款適合你。並且vagrant 可以把配置好的環境打包成一個box,分享給其他人直接使用,非常方便

vagrant 是一個很適合開發者的虛擬環境部署工具,本身集成了主流的虛擬器管理工具,支援 vmvare 和 virtualbox。

vagrant 的精髓在一個 Vagrantfile 裡面,和 docker 的 Dockerfile 功能上一樣。我們只需要把需要安裝部署的步驟寫在 Vagrantfile 裡面,便可以實現輕鬆部署。vagrant 還支援把當前系統做成一個.box 字尾命名的映象,類似 docker 的 image,可輕鬆實現環境的移植。

所以,使用vagrant可以在執行著多臺vm的系統上定義複雜的虛擬框架。可以通過 Vagrant 封裝一個 Linux 的開發環境,分發給團隊成員。成員可以在自己喜歡的桌面系統(Mac/Windows/Linux)上開發程式,程式碼卻能統一在封裝好的環境裡執行,非常霸氣。是不是很酷?

準備工作:

下載安裝 VirtualBox ,下載安裝 Vagrant ,下載更多不同系統甚至是已經配置好環境直接可以用的box,雖然可以直接在Vagrant直接使用網址,由Vagrant自動下載安裝,但是考慮到網路情況,還是建議自行先下載好。

還可以在 http://www.vagrantbox.es/ 這裡下載更多不同系統甚至是已經配置好環境直接可以用的box,雖然可以直接在Vagrant直接使用網址,由Vagrant自動下載安裝,但是考慮到網路情況,還是建議自行先下載好。

此外,還得下載官方封裝好的基礎映象:
Ubuntu precise 32 VirtualBox http://files.vagrantup.com/precise32.box
Ubuntu precise 64 VirtualBox http://files.vagrantup.com/precise64.box

如果你要其他系統的映象,可以來這裡下載:http://www.vagrantbox.es/

網友提供的centos 7.2網盤地址:https://pan.baidu.com/s/15S2OZq37FcL9RWWSTWntIw   提取碼:3xb0
  • GitBash
    GitBash是windows下的Unix shell,方便向Vagrant輸入指令。(一般的java開發,都會使用git進行程式碼同步,所以此工具預設是已經安裝了的)
    https://git-scm.com/download/win

空間:

15G 的硬碟空間

什麼是:springcloud.box映象

瘋狂創客圈網盤,為大家準備了springcloud.box映象,裡邊預裝了java 、 redis 、zookeeper、kafka、Eureka、springcloud config 等必須的元件。網盤地址請參見【部落格園總入口

使用vagrant製作Java開發環境

第一步,新建目錄

E:\virtual\work

選擇新建立的資料夾作,右鍵 —> Git Bash Here,在Git Bash開啟當前目錄

在 Git Bash 中可以看到,當前的linux 格式目錄,執行指令如下:

$ pwd
/e/virtual/work

第二步,新增映象到 Vagrant

vagrant box add  centos  /e/virtual/vagrant-centos-7.2.box
centos 表示指定名稱,如果使用base,之後可以直接使用 

$ vagrant box add centos /e/virtual/vagrant-centos-7.2.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos' (v0) for provider:
box: Unpacking necessary files from: file:///E:/virtual/vagrant-centos-7.2.box
box:
==> box: Successfully added box 'centos' (v0) for 'virtualbox'!

$

vagrant-centos-7.2.box是box的檔名,這裡是本地儲存box的路徑。也可以是可以下載box的網址,如果是網址的話,Vagrant會自動啟動下載。

第三步,初始化虛擬機器

設定好box之後,在當前工作目錄執行

$ vagrant init centos

centos為初始化的時候需要指定box的名稱。執行的結果如下:

$ vagrant init centos
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.

你也可以使用已有的目錄,切換到開發目錄裡,用 centos 映象初始化當前目錄。初始化映象之後,在當前目錄生成一個虛擬機器的配置檔案 Vagrantfile,通過該配置檔案,可以配置埠對映、虛擬機器的IP、目錄對映等。通過文字編輯器開啟Vagrantfile可以進行一些進一步的常用配置,如果配置登入使用者名稱稱和密碼,虛擬機器的ip如下:

config.ssh.username = "root"
config.ssh.password = "vagrant"

config.vm.network :private_network, ip: "192.168.68.128"

重啟虛擬機器,這樣我們就能用 192.168.233.128 訪問這臺機器了,你可以把 IP 改成其他地址,只要不產生衝突就行。

具體的配置,稍後介紹。

第四步,啟動虛擬機器

使用如下命令:

$ vagrant up   # 啟動虛擬機器

你會看到終端顯示了啟動過程,啟動完成後,我們就可以用 SSH 登入虛擬機器了,剩下的步驟就是在虛擬機器裡配置你要執行的各種環境和引數了。

$ vagrant ssh # SSH 登入
$ cd /vagrant # 切換到開發目錄,也就是宿主機上的 E:\virtual\work

Windows 使用者注意:Windows 終端並不支援 ssh,所以需要安裝第三方 SSH 客戶端,比如:Putty、Cygwin 、Git Bash等。

有關初始賬戶和密碼:

賬戶 密碼
vagrant vagrant
root vagrant

可以使用其他的終端工具,通過root訪問虛擬機器了

打包分發

當你配置好開發環境後,退出並關閉虛擬機器。在終端裡對開發環境進行打包:

$ vagrant package

打包完成後會在當前目錄生成一個 package.box 的檔案,將這個檔案傳給其他使用者,其他使用者只要新增這個 box 並用其初始化自己的開發目錄就能得到一個一模一樣的開發環境了。

vagrant package -hUsage: vagrant package [options] [name]

Options:
--base NAME virtualbox程式裡面的虛擬機器的名稱,不是box的名字也不是Vagrantfile裡面的虛擬機器名稱.預設是打包當前目錄下面的虛擬機器。
--output NAME 要打包成的box名稱,不會自動新增.box字尾,要手動加.預設值package.box

​ --include FILE... 打包時包含的檔名,你可以把.box檔案理解為一個壓縮包
​ --vagrantfile FILE 打包時包含的Vagrantfile檔案,原理和上面類似
​ -h, --help Print this help
例子:vagrant package –base virtualbox_vm_name –output newbox_name.box

通過Vagrantfile進行虛擬機器配置:

網路配置:

Vagrant的網路有三種模式

1、較為常用是埠對映,就是將虛擬機器中的埠對映到宿主機對應的埠直接使用 ,在Vagrantfile中配置:

config.vm.network :forwarded_port, guest: 80, host: 8080

guest: 80 表示虛擬機器中的80埠, host: 8080 表示對映到宿主機的8080埠。

2、如果需要自己自由的訪問虛擬機器,但是別人不需要訪問虛擬機器,可以使用private_network,併為虛擬機器設定IP ,在Vagrantfile中配置:

 config.vm.network :private_network, ip: "192.168.1.104"

192.168.1.104 表示虛擬機器的IP,多臺虛擬機器的話需要互相訪問的話,設定在相同網段即可

3、如果需要將虛擬機器作為當前區域網中的一臺計算機,由區域網進行DHCP,那麼在Vagrantfile中配置:

config.vm.network :public_network

目錄對映:

既然是開發環境,那麼開發工作肯定還是需要在本地完成,而不是都要進到虛擬機器中去完成,虛擬機器就好好在後臺執行服務就好了,不然就本末倒置了,所以這裡就需要使用目錄對映功能,將本地的目錄對映到虛擬機器的對應目錄。

預設情況下,當前的工作目錄,會被對映到虛擬機器的 /vagrant 目錄,當前目錄下的檔案可以直接在 /vagrant 下進行訪問,當然也可以在通過 ln 建立軟連線,如

ln -fs /vagrant/wwwroot /var/www

來進行目錄對映,當然,從自動化配置的角度,能不進系統就不需要進系統,所以在Vagrant也可以進行目錄對映的操作:

config.vm.synced_folder "wwwroot/", "/var/www"

前面的引數 “wwwroot/” 表示的是本地的路徑,這裡使用對於工作目錄的相對路徑,這裡也可以使用絕對路徑,比如: “d:/www/”

後面的引數 “/var/www” 表示虛擬機器中對應對映的目錄。

當在啟動Vagrant後,對於虛擬機器有進行過安裝環境相關的配置,如果並不希望寫在Vagrant的啟動shell裡面每次都重新安裝配置一遍,可以將當前配置好的虛擬機器打包成box,

注:如果網路模式中使用 private_network 的話,在打包之前需要清除一下private_network的設定,避免不必要的錯誤:

sudo rm -f /etc/udev/rule.d/70-persistent-net.rules

製作完成之後直接將box檔案拿到其他計算機上配置即可使用。

更多資訊可以參考官方文件:http://docs.vagrantup.com/v2/

附:我本機上的vagrantfile檔案

Vagrant.configure(2) do |config|
	config.ssh.username = "root"
	config.ssh.password = "vagrant"
    config.vm.box = "centos"
    config.vm.network "private_network", ip: "192.168.68.128"

   config.vm.synced_folder "/home/wangkongming/files/works/code/kfz-pm", "/data/webroot/pmv2"
   
end

vagrant 基本命令

官網文件:https://docs.vagrantup.com/v2/getting-started/index.html

vagrant init 初始化vagrantfile

vagrant add box 新增box,自動幫你生成vagrantfile

vagrant halt 關閉虛擬機器

vagrant destroy 銷燬虛擬機器

vagrant ssh 連線虛擬機器

vagrant reload 重新載入vagarntfile檔案

vagrant suspend 暫時掛起虛擬機器

vagrant status 檢視虛擬機器執行狀態

vagrant package 打包 box檔案

回到◀瘋狂創客圈

瘋狂創客圈 - Java高併發研習社群,為大家開啟大廠之門