VirtualBox, Vagrant
安装VirtualBox, 安装vagrant
安装Box
你可以把它想成是一个箱子,里面装了一些东西。在用 Vagrant 创建虚拟机的时候,需要用到 Box ,它里面会包装操作系统的镜像,不同的 Box 带的操作系统可能是不一样的,比如 CentOS,Ubuntu 等等,你可以基于它们去创建自己版本的 Box,比如在虚拟机上安装一些软件,然后把它重新打包成 Box。
在 vagrant添加 Box
,Vagrant 提供的云服务 ,要把 Box 下载到本地的电脑上,交给 Vagrant 去管理,这样在创建虚拟机的时候,Vagrant 会复制一份你指定的 Box 到你的项目里面,这样你在这个虚拟机上的操作,就不会影响到其它的项目。
http://www.vagrantbox.es/
https://atlas.hashicorp.com/boxes/search
1 | vagrant box add {title} {box} # title 为起的名字,box为在线URL地址,或者离线box路径 |
这里可以安装很多个box,以服务不同的项目环境,可以随时通过vagrant box remove {title}
,所有的命令可以通过vagrant -h 查看。
查看已安装的box
vagrant box list
初始化项目环境
1 | # 到项目目录 |
启动 并查看状态
1 | vagrant up |
控制虚拟机
1 | # mac |
打包分发,生成box供其他人使用
1 | vagrant package |
集成预安装
你会发现每次都修改了一点点内容,再打包分发给其他用户其实很麻烦,为此 Vagrant 还提供了更为便捷的预安装定制。打开 Vagrantfile 文件末尾处有下面被注释的代码:1
2
3
4config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y apache2
SHELL
如果你不是初次运行,同时又修改了这里的命令,想让系统再次运行这里面的命令,你可以使用 vagrant reload --provision
进行重载。所以在这种情况下,你只要将 Vagrantfile 共享给团队的其他成员就可以了,其他成员运行相同的命令即可。更多参考
你还可以把要运行的命令单独写在一个文件里存放在相同的目录下,比如 bootstrap.sh:1
2
3
4
5
6
7
8
apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
rm -rf /var/www
ln -fs /vagrant /var/www
fi
然后在 Vagrantfile 里这样添加:1
2
3
4
5
6Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
...
config.vm.provision "shell", path: "bootstrap.sh" # 添加这行
end
yii2 的vagrant 的 DEMO 配置
1 | vagrant box add ubuntu/trusty64 |
Vagrantfile 配置文件:
1 | require 'yaml' |
1 |
|
1 | #!/usr/bin/env bash |