使用 Vagrant 配置开发环境

学习使用 Vagrant 配置开发环境

我使用的是苹果笔记本,跑 Mac 系统,但是我的 rails 程序要跑在 ubuntu 系统上。那最简单的解决方案就是安装 virtualbox 虚拟机,载装上 vagrant 。 这样就很容易的把 ubuntu 装上了。当然如果你已经习惯了用其他的方式安装 ubuntu 也是可以的

这里演示如何在本机配置Ubuntu系统


下载vagrant和 VirtualBox

vagrant 下载地址: http://www.vagrantup.com/downloads.html

VirtualBox下载地址: https://www.virtualbox.org/wiki/Downloads


安装 virtualbox 和 vagrant

到相应的下载页面,找到适合自己的包来安装就好了,和安装别的软件没啥区别,我这里就不演示了。

接下来你可以在 virtualbox 直接安装 ubuntu,以前的很多年里,我自己都是这么干的,所以没啥不可以的。但是还是用 vagrant 来装吧,不仅安装起来更方便快捷,而且后面真正开发中也会有很多好处


到 vagrantcloud 上找一个 box

就找一个干净的 ubuntu14.04 系统就行,使用 https://vagrantcloud.com/ubuntu/boxes/trusty64

这个就是我要的64位 ubuntu14.04 系统,到终端里执行

1
2
3
4
5
mkdir ubuntu

cd ubuntu

vagrant init ubuntu/trusty64

此步骤在Ubuntu文件夹中配置一个名为Vagrantfile的文件

接下来执行

1
vagrant up

安装过程就开始了,一般首次运行需要十几分钟时间


基本操作

vagrant up 之后,系统就装好并启动起来了,可以运行

1
2

vagrant ssh

登陆到虚拟机里面,默认的用户叫做 vagrant,可以用 whoami 查看一下。再查看一下内存,用 free -m 命令,发现默认内存大小还不到500M,所以敲 Ctrl-D 退出来。添加下面几行到 Vagrantfile 文件

1
2
3
config.vm.provider "virtualbox" do |v|
v.memory = 2048
end

然后执行

1
vagrant reload

来加载设置就可以了


为此Ubuntu系统配置ip指向地址

添加下面一行到 Vagrantfile 文件

1
config.vm.network :private_network, ip:"192.168.10.10"

然后执行

1
vagrant reload

来加载设置

最后还可以在自己电脑hosts文件中添加

1
192.168.10.10   lk.dev

然后通过lk.dev来访问此Ubuntu的服务器

Vagrant 使用教程

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
27
28
# vagrant init  初始化

# vagrant status 查看虚拟机运行状态

# vagrant up 启动虚拟机

# vagrant halt 关闭虚拟化开发环境

# vagrant reload 修改配置文件后,重启虚拟化开发环境

# vagrant box list 查看当前可用的虚拟化开发环境

# vagrant box remove boxname 删除指定的box环境

# vagrant destroy 销毁虚拟机

# vagrant package 当前正在运行的VirtualBox虚拟环境打包成一个可重复使用的box

打包创建虚机

1、打包虚拟机
vagrant package

2、当前目录就会生成package.box,之后新建虚拟机则可使用这个box。

vagrant box add my_box ~/package.box
vagrant init my_box
vagrant up

错误解决

出现如下错误:

1
2
3
4
5
6
7
8
9
10
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:
/sbin/mount.vboxsf: mounting failed with the error: No such device

解决办法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
在本机输入
vagrant plugin install vagrant-vbguest

进入虚拟机
vagrant ssh

输入
sudo ln -s /opt/VBoxGuestAdditions-4.3.18/lib/VBoxGuestAdditions /usr/lib/VBoxGuestAdditions(VBoxGuestAdditions-4.3.18为版本号)

更新内核
yum update kernel
sudo yum install gcc dkms kernel-devel


安装
sudo /etc/init.d/vboxadd setup

退出
control+d

重启
vagrant reload

..............[ok]