Windows使用Vagrant&VirtualBox搭建虛擬開發環境

    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

相關文章
相關標籤/搜索