Vagrant 是一款用來構建虛擬開發環境的工具 , 咱們能夠經過 Vagrant 封裝一個 Linux 的開發環境 , 分發給團隊成員 ; 成員能夠在本身喜歡的桌面系統 Mac/Windows/Linux 上開發程序 , 代碼卻能統一在封裝好的環境裏運行 , 很是便於統一開發環境
1. 安裝Vagrant虛擬工做環境
安裝 VirtualBox
下載地址 : https://www.virtualbox.org/
安裝 Vagrant
下載地址 : https://www.vagrantup.com/
下載 box
box 是一個後綴爲 box 的文件 , 實際上它就是一個包含了虛擬機配置 , 虛擬機硬盤鏡像和 Vagrant 配置的壓縮包 , 能夠到 http://www.vagrantbox.es/ 上下載 box
附一個 CentOS7 的下載連接 : https://atlas.hashicorp.com/centos/boxes/7/versions/1703.01/providers/virtualbox.box
2. 安裝虛擬機步驟
切換到須要配置虛擬機的文件夾 , 添加 box , 將下載好的 box 文件放在某個目錄 , 以下得是當前目錄 , 運行命令 :
vagrant box add MyCentOS7 virtualbox.box
1
先將 box 鏡像下載下來安裝會很快 ; 也可使用在線安裝 , 好比運行 vagrant box add centos/7 , 就會在線下載 box 鏡像安裝 , 但國內網速很慢 , 不推薦用
執行完添加 box 命令後 , box 中的鏡像文件被放到了 /Users/astaxie/.vagrant.d/boxes/ , 在 Window 系統中是放到了C:\Users\當前用戶名\.vagrant.d\boxes\ 目錄下
初始化php
vagrant init MyCentOS7
啓動虛擬機ios
vagrant up
出現 Timed out while waiting for the machine to boot... , 但又沒法定位錯誤的話 , 能夠編輯虛擬機配置目錄下的 Vagrantfile 文件 , 啓動 VirtualBox 的 GUI 界面 , 配置以下 config.vm.provider "virtualbox" do |vb| \ vb.gui = true \ end , 而後 vagrant reload 重啓 , 虛擬機啓動時就有 GUI 界面了 , 同時錯誤也會顯示出來 , 好比彈出 VT-x/AMD-V 硬件加速在您的系統中不可用 ; 您的 64-位虛擬機將沒法檢測到 64-位處理器 , 從而沒法啓動 錯誤時 , 就是 CPU 的虛擬化技術沒開啓 , 只須要進入 bios 開啓就能夠了
出現 "Rsync" could not be found on your PATH... 錯誤後 , 打開 C:\Users\{your_username}\.vagrant.d\boxes\CentOS7\0\virtualbox\Vagrantfile , 將 config.vm.synced_folder ".", "/vagrant", type: "rsync" 修改成 config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
出現 Vagrant was unable to mount VirtualBox shared folders... 錯誤後 , 運行 vagrant plugin install vagrant-vbguest , 再運行 vagrant reload 重啓便可
登陸虛擬機
Linuxweb
vagrant ssh
Windows 終端並不支持 SSH , 因此須要安裝第三方 SSH 客戶端 , 好比 : Xshell , Putty , Cygwin , 我用的是 Xshell
再 Xshell 裏面新建鏈接 , 而後輸入虛擬機 IP : 127.0.0.1 , 端口號 : 2222 , 都是默認的
而後確認並鏈接 , 輸入登陸用戶名 : vagrant , 登陸密碼 : vagrant , 也是默認的
若是 box 裏的系統沒有設置支持密碼登陸 , 這是密碼的輸入框會是灰色的沒法輸入 , 選擇下面的 Public Key , 在 用戶密鑰 處點擊瀏覽 , 選擇剛剛配置虛擬機目錄下的子目錄 \.vagrant\machines\default\virtualbox\private_key , 而後即可登錄
若是想繼續使用帳戶密碼登陸 , 能夠進入虛擬系統後 , 修改 /etc/ssh/sshd_config , 設置 PasswordAuthentication yes
設置局域網其餘主機鏈接登陸
修改虛擬機 配置目錄下的 Vagrantfile 文件
將 # config.vm.network "public_network" 修改成 config.vm.network "public_network", ip: "192.168.0.150"
意思就是解除註釋 , 並用 192.168.0.150 來做爲虛擬機 IP , 默認端口 22 , 這時即可從局域網內其餘主機登陸該虛擬機
3. 打包分發
當你配置好開發環境後 , 退出並關閉虛擬機 , 在終端裏對開發環境進行打包 , 運行以下命令 :shell
vagrant package
打包完成後會在當前目錄生成一個 package.box 的文件 , 將這個文件傳給其餘用戶 , 其餘用戶只要添加這個 box 並用其初始化本身的開發目錄就能獲得一個如出一轍的開發環境了
4. 經常使用配置
Vagrant 初始化成功後 , 會在初始化的目錄裏生成一個 Vagrantfile 文件 , 能夠修改該文件進行個性化的定製
配置IPcentos
config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "public_network", ip: "192.168.0.150"
你能夠把IP改爲其餘地址 , 只要不產生衝突就行
配置同步目錄
服務器
將 `# config.vm.synced_folder "../data", "/vagrant_data"` 去掉 `#` , 修改成 : `config.vm.synced_folder "/home/web/www", "/data/www"` /home/web/www 是本地目錄 /data/www 是 Linux 服務器目錄
配置虛擬內存:ssh
在文件結尾 end 字符前添加下面一段 : config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] end
舒適提示 : 修改配置後 , 記得重啓虛擬機
5. 經常使用的操做命令ide
vagrant init # 初始化 vagrant up # 啓動虛擬機 vagrant halt # 關閉虛擬機 , 實際上是調用vitualbox的管理接口 , 關閉了虛擬機 vagrant suspend #暫停虛擬機環境 vagrant reload # 重啓虛擬機 vagrant ssh # SSH 至虛擬機 vagrant status # 查看虛擬機運行狀態 vagrant destroy # 銷燬當前虛擬機
6. 跨網段訪問虛擬機(進階)
以上方法安裝的虛擬機設置 public_network 參數後 , 能夠實現局域網內相同網段的主機訪問 , 注意只是相同網段 !
好比 : 我本機 IP 爲 172.20.12.86 , 在 IP 爲 192.168.22.56 的內網機器上部署了虛擬機 , 虛擬機 IP 設置爲 192.168.22.150:22 , 那我在本機 172.20.12.86 是沒法鏈接到虛擬機 192.168.22.150 的 ;
解決這個問題 , 咱們能夠用 Windows 自帶的 netsh 實現端口轉發 , 如今咱們經過虛擬機的宿主主機 192.168.22.56 的端口 2222 轉發到虛擬機 192.168.22.150 的端口 22 , 在 CMD 運行以下命令 :工具
// XP 系統首先安裝 IPV6 , Win7以上忽略 netsh interface ipv6 install // 添加一個IPV4到IPV4的端口映射 netsh interface portproxy add v4tov4 listenaddress=192.168.22.56 listenport=2222 connectaddress=192.168.22.150 connectport=22
這時就能夠在本機 172.20.12.86 直接鏈接虛擬機宿主主機 192.168.22.56:2222 來達到訪問虛擬機的目的 ;
須要刪除監聽轉發的端口能夠運行以下命令 :ui
netsh interface portproxy delete v4tov4 listenaddress=192.168.22.56 listenport=2222
查看已存在的端口轉發能夠運行一下命令 :
netsh interface portproxy show all
原文:https://blog.csdn.net/tojohnonly/article/details/70151040