1、導出本身的Boxhtml
導出前,先進行相關配置一、vagrant box打包前的準備 二、VirtrualBox壓縮打包nginx
咱們在vagrant的虛擬機下面進行了一些操做以後想把它導出做爲備份,爲的是之後在別的機器上安裝完vagrant之後能夠當即導入本身熟悉的box進行開發。步驟以下laravel
一、進入到VirtualBox的安裝目錄下,運行 vboxmanage list vms 命令(此處務必使用cmd,若是使用git,命令爲./vboxmanage list vms),能夠看出咱們的vagrant下的虛擬機列表git
二、導出Box。進入到你的vagrant工做目錄(即vagrantFile文件所在目錄下),我安裝在E:\workspace,打開git窗口運行下面命令(注意:複製代碼的時候留意--base和--output,這裏都是兩個英文字符下的橫槓,複製的時候有可能會變成中文的橫槓或少一個橫槓)。github
vagrant package –-base newbox_default_1503366286622_12977 –-output ./ubuntu1604.box
vagrant package是導出box的打包命令web
–base 表明本地apache
newbox_default_1503366286622_12977是你要導出的box的名稱ubuntu
–output表明導出centos
./ubuntu1604.box 表示導出後的box名爲ubuntu1604.box,並保存在當前目錄下服務器
2、導入。
你來到了另外一臺電腦,你想把你的工做環境徹底的copy一份到這臺電腦,接下來就很關鍵了。
1.建立一個你要的工做目錄,個人是E:\workspace,把公共打好的包放進來
2.在這個目錄下打開Git窗口,輸入
vagrant box add 你自定義的別名 包名
ps:添加前最好使用vagrant box list查看一下當前的box列表,若是有跟你要設置的別名同樣的box,先刪除 vagrant box remove laravel/homestead --box-version 0
3.初始化工做環境
vagrant init
發現你的文件夾中自動生成了一個文件,Vagrantfile。
4.因爲你是直接引入本身打的包,而不是vagrant官方提供的包,因此有可能存在一些問題。咱們經過編輯Vagrantfile來解決。在Vagrantfile中的「config.vm.box」這一行下,加上這三句
config.ssh.username = "vagrant" config.ssh.password = "vagrant" config.ssh.insert_key = false
因爲vagrant默認使用private_key登陸,此時你有很大的多是沒有private_key的,咱們直接改爲用戶名+密碼登陸
5.啓動vagrant
vagrant up
3、高級應用
1)端口轉發
說明:點擊 設置->網絡->高級-端口轉發 就能夠看到各個轉發的端口配置狀況。
官網文檔位置:https://www.vagrantup.com/docs/networking/forwarded_ports.html
##############配置代碼#################################
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8888
end
########################################################
配置說明:
將虛擬機的80端口轉發到宿主機的8888
config.vm.network "forwarded_port", guest: 80, host: 8888
2)共享目錄
說明:同步宿主主機文件到虛擬機:
官網文檔位置:https://www.vagrantup.com/docs/synced-folders/basic_usage.html
Windows配置用SMB配置共享目錄
官網文檔位置:https://www.vagrantup.com/docs/synced-folders/smb.html
Linux系列系統用NFS配置共享目錄
官網文檔位置:https://www.vagrantup.com/docs/synced-folders/nfs.html
將寫代碼目錄映射到虛擬機服務器目錄【Windows機配置示範】:
##############配置代碼#################################
Vagrant.configure("2") do |config|
config.vm.synced_folder "D://workspace/", "/data/wwwroot/web", type: "smb"
end
########################################################
3)ip配置
###########重要提示!################
# 公有ip不能共享目錄 #
#####################################
1)私有IP配置
##############配置代碼#################################
Vagrant.configure("2") do |config|
config.vm.network "private_network", ip: "192.168.50.4"
end
########################################################
好處說明:配置私有ip好處。直接訪問私有ip
2)共有ip配置
查看宿主機ip: 192.168.1.37
##############配置代碼#################################
Vagrant.configure("2") do |config|
config.vm.network "public_network", ip: "192.168.1.17"
end
########################################################
和宿主主機同樣經過DHCP分配
##############配置代碼#################################
Vagrant.configure("2") do |config|
config.vm.network "public_network",use_dhcp_assigned_default_route: true
end
########################################################
1)虛擬機名稱配置
config.vm.provider "virtualbox" do |vb|
vb.cpus = 2 #虛擬機核數
vb.memory = "1024" #虛擬機內存
vb.name = "centos7_lnmp" #虛擬機名稱
end
2)主機名稱配置
Vagrant.configure("2") do |config|
config.vm.hostname = "dh2y"
end
3)nginx和apache同步延時配置
官網文檔位置:https://www.vagrantup.com/docs/synced-folders/virtualbox.html
In Nginx: sendfile off;
In Apache: EnableSendfile Off #默認已經關閉
virtualbox和vagrant默認都是放到系統C盤中,若是安裝的box比較多,很容易打滿C盤。這個目標路徑的配置是能夠修改的:
(1)更改VirtualBox虛擬機映像文件的位置
打開 VirtualBox 程序,點擊管理/全局設定菜單項(Ctrl+G), 將常規欄裏的默認虛擬電腦位置(M)改成其餘磁盤下的路徑
將原路徑 C:\Users\user_name\.VirtualBox\VirtualBox VMs 下的文件移動到新路徑下。
從新啓動VirtualBox程序,在虛擬機列表裏,之前創建的虛擬機雖然都還在,但已經不可用了,將他們所有刪除。
雙擊打開新路徑各個文件夾裏的vbox文件,將創建的虛擬機從新導入。
(2)更改vagrant配置文件的位置
將 C:\Users\user_name\.vagrant.d 移動到新的位置
新建環境變量VAGRANT_HOME,並指向新路徑
參考:
https://imququ.com/post/vagrantup.html
https://github.com/astaxie/go-best-practice/blob/master/ebook/zh/01.1.md