一、導出自己的Box
導出前,先進行相關配置1、vagrant box打包前的准備 2、VirtrualBox壓縮打包
我們在vagrant的虛擬機下面進行了一些操作之后想把它導出作為備份,為的是以后在別的機器上安裝完vagrant以后可以立即導入自己熟悉的box進行開發。步驟如下
1、進入到VirtualBox的安裝目錄下,運行 vboxmanage list vms 命令(此處務必使用cmd,如果使用git,命令為./vboxmanage list vms),可以看出我們的vagrant下的虛擬機列表
2、導出Box。進入到你的vagrant工作目錄(即vagrantFile文件所在目錄下),我安裝在E:\workspace,打開git窗口運行下面命令(注意:復制代碼的時候留意--base和--output,這里都是兩個英文字符下的橫杠,復制的時候有可能會變成中文的橫杠或少一個橫杠)。
vagrant package –-base newbox_default_1503366286622_12977 –-output ./ubuntu1604.box
vagrant package是導出box的打包命令
–base 代表本地
newbox_default_1503366286622_12977是你要導出的box的名稱
–output代表導出
./ubuntu1604.box 表示導出后的box名為ubuntu1604.box,並保存在當前目錄下
二、導入。
你來到了另一台電腦,你想把你的工作環境完全的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
三、高級應用
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 #默認已經關閉
修改virutalbox和vagrant的默認目錄
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