Vagrant安装与使用

一、安装 VirtualBox 、Vagrant

1
2
VirtualBox:https://www.virtualbox.org/wiki/Downloads/
vagrant: http://downloads.vagrantup.com

二、下载 box

1
2
3
1、https://vagrantcloud.com/
2、http://www.vagrantbox.es/
3、https://puphpet.com # php环境的配置文件可以在线生成

三、添加并安装 box

1
vagrant box add base ~/Downloads/virtualbox.box

四、查看已经安装的 box 列表

1
vagrant box list

五、初始化 box

1
vagrant init

六、Vagrantfile 配置

1、 网络设置

1.1、端口映射:

1
config.vm.network :forwarded_port, guest: 80, host: 8080
  • guest: 80 表示虚拟机中的80端口, host: 8080 表示映射到宿主机的8080端口。

1.2、private_network :

1
config.vm.network :private_network, ip: "192.168.2.222"
  • 192.168.2.222 表示虚拟机的IP

1.3、DHCP:

1
config.vm.network :public_network
2、 共享目录
1
config.vm.synced_folder "./data", "/vagrant_data"
  • ./data 表示虚拟机所在目录下的data目录, vagrant_data 表示虚拟机的目录
3、运行脚本
1
2
3
4
config.vm.provision "shell", inline: <<-SHELL
sudo apt-get update
sudo apt-get install -y apache2
SHELL

或:

1
config.vm.provision :shell, :path => "boot.sh"
4、内存、CPU
1
2
3
4
5
6
7
8
config.vm.provider "virtualbox" do |vb|
#Display the VirtualBox GUI when booting the machine
vb.gui = true
#Customize the amount of memory on the VM:
vb.memory = "1024"
vb.cpus = 2
vb.name = "my_vm"
end
5、nfs 权限
1
2
3
4
5
config.vm.synced_folder '.', '/vagrant', :nfs =>{
:linux__nfs_options => ["no_root_squash"],
:map_uid => 0,
:map_gid => 0
}
6、域名解析慢
1
2
3
4
5
config.vm.provider :virtualbox do |vb|
#vb.gui = true
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end

七、其他命令

1
2
3
4
5
6
7
8
$ vagrant init  		# 初始化
$ vagrant up # 启动虚拟机
$ vagrant halt # 关闭虚拟机
$ vagrant reload # 重启虚拟机
$ vagrant package # 打包分发
$ vagrant ssh # SSH 至虚拟机
$ vagrant status # 查看虚拟机运行状态
$ vagrant destroy # 销毁当前虚拟机

八、共享目录的静态文件缓存

1
2
Nginx: sendfile off;
Apache: EnableSendfile off

九、Vagrant For Parallels On Mac OS X

1
2
3
4
5
6
gem install ffi -v '1.9.8'
gem install json -v '1.8.2'
gem install vagrant-parallels -v '1.3.9'

vagrant plugin install vagrant-parallels
vagrant up --provider=parallels
参考阅读: