Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用Chef创建自动化虚拟环境。

使用vagrant搭建开发环境优势:

  • 运行完全隔离;
  • 熟悉linux常用操作;
  • GUEST改时间不影响HOST时间

安装

需要软件:
GIT
VirtualBox-5.1.4-110228-Win
vagrant_1.8.5.msi
BOX文件

the git root\usr\bin加入环境变量, 确保ssh命令可用

Virtualbox安装成功后
执行VBoxManage.exe setextradata global "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1"
设置Virtualbox不同步系统时间

创建box

1
2
3
rem centos7是自定义名字
rem E:\centos_7.box是box文件路径
vagrant box add centos7 E:\centos_7.box

项目

1
2
3
4
rem 切换到项目目录(trunk或者qqjy_cn_版本号)
cd project_path
rem 创建开发环境
vagrant init centos7

在生成Vagrantfile文件中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
config.ssh.username = "root"
config.ssh.password = "vagrant"
# 端口映射
config.vm.network "forwarded_port", guest: 8101, host: 47010
# 共享文件夹
config.vm.synced_folder "./", "/data/qqjy"
# 执行脚本
# 需要--provision参数
config.vm.provision "shell", inline: <<-SHELL
touch /root/.db_status
VER=$(cat /root/.db_status)
if [[ "$VER" == "" ]]; then
echo "deal" > /root/.db_status
cd /data/qqjy/db_script && mysql -uroot -p123456 -e "create database qqjy_admin; use qqjy_admin; source admin.sql;"
fi
cd /data/qqjy/script && ./server_ctl.sh make && ./server_ctl.sh start_all
SHELL

使用vagrant up --provision启动

其他

  1. 导出box

打开virtualbox,查看box名称,然后使用vagrant package --output centos7_64_1.box --base server_default_1472191933425_51781导出自己的BOX

参考文档

  1. https://wenku.baidu.com/view/a14d3fc5a1c7aa00b52acb38.html