参考
如何使用 vagrant 搭建开发环境 视频下载 密码:65bi
概念
- vagrant 的基本思路是为每一个项目创建自己的一个虚拟机
- 默认用户,vagrant ssh 登陆进来的用户名是 vagrant,这个用户挺好,执行 sudo 是不需要输入密码的,开发中实际使用挺好用的。
- 共享文件夹。默认情况下,Vagrantfile 所在的这个文件夹,会自动对应虚拟机里面的 /vagrant 这个目录。这个意味着我不需要在虚拟机里面配置 sublimeText vim git 搜狗输入法 这些工具了,Mac 依旧是我写代码的环境。ubuntu 虚拟机是项目的安装运行环境。这个分工是太合理了!
- 通常的做法,项目源码就放在 myproject 目录下,把 Vagrantfile 和源码一起用 git 统一控制。
基本使用
1 |
|
修改配置
- Vigrant 有一个好处是所有一切都在命令行和配置文件中搞定,这样比图形界面用起来方便的多,所以一般是不需要启动 virtualbox 图形界面的
- 修改内存:
1 | config.vm.provider "virtualbox" do |v| |
创建用户
1 | # --ingroup 保证具有sudo权限 |
设置ip
1 | # 在Vagrantfile中设置虚拟机的局域网ip地址 |
手动修改
工具:
使用共享目录vagrant
进行服务器和宿主机开发项目构建前端开发测试环境
利用共享目录,那么我们就可以在mac上面进行开发、编译,之后把项目跑在虚拟机的服务器(如:nginx)之上1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26# 宿主机存储虚拟机的`Vagrantfile`的目录即是共享目录,在虚拟机中映射到`/vagrant`
vagrant@ubuntu-xenial:/vagrant$ ll
total 52
drwxr-xr-x 1 vagrant vagrant 192 Jan 28 12:52 ./
drwxr-xr-x 24 root root 4096 Jan 27 05:12 ../
drwxr-xr-x 1 vagrant vagrant 96 Jan 20 02:28 .vagrant/
-rw-r--r-- 1 vagrant vagrant 3388 Jan 21 12:13 Vagrantfile
-rw-r--r-- 1 vagrant vagrant 14 Jan 28 12:52 index.html
-rw------- 1 vagrant vagrant 38334 Jan 27 05:12 ubuntu-xenial-16.04-cloudimg-console.log
# 配置nginx
cd /etc/nginx/sites-enabled
# 因为nginx.conf默认包含:include /etc/nginx/sites-enabled/*; 这样的配置;
vim project.conf
# 编辑指定/vagrant/为默认server的根目录
server {
listen 80 default;
#root /home/vagrant/project/vue-webpack-tmpl/dist;
root /vagrant/dist/;
}
sudo -su
nginx -t
service nginx -reload
因为我们上面修改了宿主机的hosts文件,那么我们直接就可以得到vagrant
中的index.html:
自定义脚本
实际开发情况是复杂的,从 vagrant cloud 下载的 box 中不可能包含我所需要的所有工具。这样,我可以制作自己的 box 上传的 vagrant cloud 上面,以备后面自己用,或者分享给朋友。但是另外一个更为灵活的方式是:我就锁定一个干净的 ubuntu 系统 box 。每个项目的虚拟机都基于这个 box 来做,vagrant 有个叫法 Base Box 。 然后我在上面执行脚本来自定制系统。chef puppet 都是可以的,但是有一定的学习难度,最简单的是直接写 shell 脚本。具体操作是这样。
打开 Vagrantfile 文件,在 do-end 块内部添加
1 | config.vm.provision "shell", inline: $script, privileged: false |
vagrant命令行参考
1 | # vagrant box add {your_box_name} {your_box_path} // 添加一box到自己的box列表,{your_box_path}可以是本地的,也可以是网络上的box地址。 |