Vagrant的安裝及使用


 

 

 

Vagrant 簡介

Vagrant 是一款用來構建虛擬開發環境的工具,非常適合 php/python/ruby/java 這類語言開發 web 應用,“代碼在我機子上運行沒有問題”這種說辭將成為歷史。

我們可以通過 Vagrant 封裝一個 Linux 的開發環境,分發給團隊成員。成員可以在自己喜歡的桌面系統(Mac/Windows/Linux)上開發程序,代碼卻能統一在封裝好的環境里運行,非常霸氣。

當然啦,如果你和我一樣有系統潔癖的話,也非常推薦使用 Vagrant 。畢竟電腦上經常莫名其妙會安裝各種環境,導致有時候開發項目並不清楚究竟項目的依賴環境具體有哪些,使用 Vagrant 是一個很有逼格的解決方案。我自己的 Surface 和 Mac 都搭建了各種 Vagrant 的虛擬環境——有專門運行 Hexo 博客的,有專門運行 Wordpress 的,也有專門用來學習 Linux 的……

當然如果你用各種虛擬機如 VirtualBox、VMware、AWS、Parallels Desktop 來搭建虛擬開發環境也沒有什么不可以。但是我這里還是安利一下 Vagrant 。用 Vagrant 來裝,不僅安裝起來更方便快捷,而且后面真正開發中也會有很多好處。

Vargant的優點

1、 統一開發環境。一次配置打包,統一分發給團隊成員,統一團隊開發環境,解決諸如“編碼問題”,“缺少模塊”,“配置文件不同”帶來的問題;

2、 避免重復搭建開發環境。新員工加入,不用浪費時間搭建開發環境,快速加入開發,減少時間成本的浪費;

3、 多個相互隔離開發環境。可以在不用box里跑不同的語言,或者編譯安裝同一語言不同版本,搭建多個相互隔離的開發環境,卸載清除時也很快捷輕松。

安裝步驟

1、安裝 VirtualBox

VirtualBox 是一個免費開源的虛擬機,相對 VMware 來說更加小巧,個人比較喜歡。

 

下載地址:https://www.virtualbox.org/wiki/Downloads

雖然 Vagrant 也支持 VMware,不過 VMware 是收費的,對應的 Vagrant 版本也是收費的。

2、安裝 Vagrant

下載地址:http://downloads.vagrantup.com

有 Windows 版,也有 Mac 版,找到適合自己的包來安裝就好了,和安裝別的軟件沒啥區別,我這里就不演示了,雙擊來安裝,到終端中執行:

vagrant -v

如果看到輸出,表示已經裝好了。

3、到 vagrantcloud 上找一個 box鏡像 並添加

如果你要其他系統的鏡像,可以來這里下載:http://www.vagrantbox.es

 

 

可以看到這里有上百種不同的鏡像,而且全部都可以通過命令行一鍵安裝。(但是國內的網絡會經常失敗。)

所以也可以下載之后再安裝。

添加鏡像語法
vagrant box add [名稱] [源路徑]
添加 ubuntu 鏡像並命名為 ubuntu_base

已經下載好的 源文件路徑: E:\resource\Vagrant\trusty-server-cloudimg-amd64-vagrant-disk1.box



vagrant box add ubuntu_base E:\resource\Vagrant\trusty-server-cloudimg-amd64-vagrant-disk1.box

輸出的一部分內容

F:\vagrant_base>vagrant box add ubuntu_base E:\resource\Vagrant\trusty-server-cloudimg-amd64-vagrant-disk1.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'ubuntu_base' (v0) for provider:
    box: Unpacking necessary files from: file:///E:/resource/Vagrant/trusty-server-cloudimg-amd64-vagrant-disk1.box
    box: Progress: 100% (Rate: 540M/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'ubuntu_base' (v0) for 'virtualbox'!

4、初始化開發環境

這個就是我要的64位 ubuntu14.04 系統。先新建一個新的目錄,然后進入目錄,到終端里執行初始化命令:

vagrant init ubuntu_base

接下來執行開機命令,就會進入安裝:

vagrant up

輸出信息

F:\vagrant_base>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu_base'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vagrant_base_default_1481788759445_62713
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key

等個幾分鍾左右,就安裝成功了。

成功之后可以輸入一下命令可以連接進虛擬機:

vagrant ssh  

連接成功后會進入到虛擬機的 bash 中,並且會展示虛擬機的環境。

windows 執行結果

F:\vagrant_base>vagrant ssh
`ssh` executable not found in any directories in the %PATH% variable. Is an
SSH client installed? Try installing Cygwin, MinGW or Git, all of which
contain an SSH client. Or use your favorite SSH client with the following
authentication information shown below:

Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: F:/vagrant_base/.vagrant/machines/default/virtualbox/private_key

F:\vagrant_base>

Windows 用戶注意:Windows 終端並不支持 ssh,所以需要安裝第三方 SSH 客戶端,比如:Putty、Cygwin 等。我使用Xshell。
因為自動導出私鑰了,所以 直接用密鑰文件進登陸即可, 下面是xshell的配置過程。




                添加主機
 
 
 

 

           配置賬號密碼, 選擇密鑰文件登陸

 

 

                   登陸成功界面

 

宿主機的交換目錄

其中,vagrant 的 /vagrant目錄是與宿主機的交換目錄。可以很方便的實現在宿主機編碼,在虛擬機運行。

 

                     虛擬機中的地址 /vagrant

 

 

               本地話環境的地址, 就是安裝目錄,內容是同步的

 

修改虛擬機內存

登陸到虛擬機里面,默認的用戶叫做 vagrant,可以用 whoami 查看一下。再查看一下內存,用 free -m 命令,發現默認內存大小還不到500M,所以敲 Ctrl-D 退出來。添加下面幾行到 Vagrantfile 文件。


config.vm.provider "virtualbox" do |v|
  v.memory = 2048
end

 

文件內容

 

 然后執行:

vagrant reload

來加載設置就可以了。

加載過程

 

 

修改 訪問方式為 host-only

Vagrant 默認是使用端口映射方式將虛擬機的端口映射本地從而實現類似 http://localhost:80 這種訪問方式,這種方式比較麻煩,新開和修改端口的時候都得編輯。相比較而言,host-only 模式顯得方便多了。打開 Vagrantfile,將下面這行的注釋去掉(移除 #)並保存:


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

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

打包分發

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


vagrant package

集成預安裝

從上面這條看下來,你會發現每次都修改了一點點內容,再打包分發給其他用戶其實很麻煩。為此 Vagrant 還提供了更為便捷的預安裝定制。打開 Vagrantfile 文件末尾處有下面被注釋的代碼:

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

沒錯,這段代碼就是讓你在初次運行 vagrant up 后,虛擬機創建過程眾自動運行的初始化命令。 取消注釋,把要預先安裝的 php/mysql/redis 和配置之類的通通都寫進去。初始化時這些程序都會根據你寫好的方法安裝並配置。

如果你不是初次運行,同時又修改了這里的命令,想讓系統再次運行這里面的命令,你可以使用 vagrant reload --provision 進行重載。所以在這種情況下,你只要將 Vagrantfile 共享給團隊的其他成員就可以了,其他成員運行相同的命令即可,是不是比打包分發要方便許多。

你還可以把要運行的命令單獨寫在一個文件里存放在相同的目錄下,比如 bootstrap.sh:

#!/usr/bin/env bash

apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
  rm -rf /var/www
  ln -fs /vagrant /var/www
fi

然后在 Vagrantfile 里這樣添加:

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
  ...

  config.vm.provision "shell", path: "bootstrap.sh"  # 添加這行
end

效果和直接寫在 Vagrantfile 是一樣的。

注意事項

使用 Apache/Nginx 時會出現諸如圖片修改后但頁面刷新仍然是舊文件的情況,是由於靜態文件緩存造成的。需要對虛擬機里的 Apache/Nginx 配置文件進行修改:


# Apache 配置(httpd.conf 或者 apache.conf)添加:
EnableSendfile off

# Nginx 配置(nginx.conf)添加:
sendfile off;

常用命令

vagrant init  # 初始化
vagrant up  # 啟動虛擬機
vagrant halt  # 關閉虛擬機
vagrant reload  # 重啟虛擬機
vagrant ssh  # SSH 至虛擬機
vagrant status  # 查看虛擬機運行狀態
vagrant destroy  # 銷毀當前虛擬機

 

轉載: https://www.jianshu.com/p/d3398b2e3f4f

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM