基于Vagrant的虚拟环境搭建流程

Vagrant,基于Ruby开发,使用开源 VirtualBox 做为虚拟化支持,能够轻松的跨平台部署。shell

 

一. 下载资源:apache

1 下载安装 VirtualBox :https://www.virtualbox.org/缓存

2 下载安装 Vagrant :http://www.vagrantup.com/bash

3 下载须要使用的 box :网络

官方提供的范例:http://files.vagrantup.com/precise32.boxssh

还能够在 http://www.vagrantbox.es/ 这里下载更多不一样系统甚至是已经配置好环境直接能够用的box,虽然能够直接在Vagrant直接使用网址,由Vagrant自动下载安装,可是考虑到网络状况,仍是建议自行先下载好。.net

 

二. 添加镜像到 Vagrant:vagrant

假设下载的镜像存放路径是 ~/box/test.box,在终端里输入:图片

$ vagrant box add gsky ~/box/test.boxip

gsky 是咱们给这个 box 命的名字,~/box/test.box 是 box 所在路径

 

三. 初始化开发环境:

1 建立一个开发目录(好比:~/dev),你也可使用已有的目录,切换到开发目录里,用 gsky 镜像初始化当前目录的环境:

$ cd ~/dev  # 切换目录

$ vagrant init gsky  # 初始化

$ vagrant up  # 启动环境

 

2 启动完成后,就能够用 SSH 登陆虚拟机了,剩下的步骤就是在虚拟机里配置要运行的各类环境和参数了。

$ vagrant ssh  # SSH 登陆

$ cd /vagrant  # 切换到开发目录,也就是宿主机上的 `~/dev`

~/dev 目录对应虚拟机中的目录是 /vagrant

Windows 终端并不支持 ssh,因此须要安装第三方 SSH 客户端,好比:Putty、Cygwin 等。

 

登陆的账号密码均为 vagrant ,登陆以后若是须要 su root ,密码也是 vagrant

注:使用 vagrant ssh 时,会提示可使用密钥进行登陆,若是须要使用putty进行密钥登陆的话,须要下载 puttygen 将 ssh 的密钥转换为 ppk 文件才能使用。

 

3 Vagrant 初始化成功后,会在初始化的目录里生成一个 Vagrantfile 的配置文件,能够修改配置文件进行个性化的定制。

 

Vagrant 默认是使用端口映射方式将虚拟机的端口映射本地从而实现相似 http://localhost:80 这种访问方式,这种方式比较麻烦,新开和修改端口的时候都得编辑。相比较而言,host-only 模式显得方便多了。打开 Vagrantfile,将下面这行的注释去掉(移除 #)并保存:

 

config.vm.network :private_network, ip: "192.168.33.10"

重启虚拟机,这样就能用 192.168.33.10 访问这台机器了,能够把 IP 改为其余地址,只要不产生冲突就行。

 

4 目录映射:

既然是部署环境,那么开发工做确定仍是须要在本地完成,而不是都要进到虚拟机中去完成,虚拟机就好好在后台运行服务就行了,否则就本末倒置了,因此这里就须要使用目录映射功能,将本地的目录映射到虚拟机的对应目录。

 

默认状况下,当前的工做目录,会被映射到虚拟机的 /vagrant 目录,当前目录下的文件能够直接在 /vagrant 下进行访问,固然也能够在经过 ln 建立软链接,如

 

ln -fs /vagrant/wwwroot /var/www

来进行目录映射,固然,从自动化配置的角度,能不进系统就不须要进系统,因此在Vagrant也能够进行目录映射的操做:

 

config.vm.synced_folder "wwwroot/", "/var/www"

前面的参数 “wwwroot/”  表示的是本地的路径,这里使用对于工做目录的相对路径,这里也可使用绝对路径,好比: “d:/www/”.

后面的参数 “/var/www” 表示虚拟机中对应映射的目录。

 

5 运行脚本:

虽然不是必须,可是若是有须要在启动时运行一些脚本(环境的安装或者有些服务的启动须要在完成目录映射以后进行),能够编辑脚本,相似以下(摘自Vagrant Document):

 

#!/usr/bin/env bash

 

apt-get update

apt-get install -y apache2

rm -rf /var/www

ln -fs /vagrant /var/www

 

保存在和Vagrantfile相同目录,文件名自取(如 boot.sh),而后在Vagrantfile中添加:

config.vm.provision :shell, :path => "boot.sh"

 

四. 打包分发

当配置好开发环境后,退出并关闭虚拟机。在终端里对开发环境进行打包:

$ vagrant package

打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其余用户,其余用户只要添加这个 box 并用其初始化本身的开发目录就能获得一个如出一辙的开发环境了。

 

PS:

vagrant package --output NAME --vagrantfile FILE

可选参数:

--output NAME :(可选)设置经过NAME来指定输出的文件名

--vagrantfile FILE:(可选)能够将Vagrantfile直接封进box中

 

注:若是网络模式中使用 private_network 的话,在打包以前须要清除一下private_network的设置,避免没必要要的错误:

sudo rm -f /etc/udev/rule.d/70-persistent-net.rules

 

 

五. 经常使用命令

$ vagrant init  # 初始化

$ vagrant up  # 启动虚拟机

$ vagrant halt  # 关闭虚拟机

$ vagrant reload  # 重启虚拟机

$ vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,能够执行恢复操做后继续使用)

$ vagrant resume (恢复虚拟机 —— 与前面的暂停相对应)

$ vagrant ssh  # SSH 至虚拟机

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

$ vagrant destroy  # 销毁当前虚拟机

 

六. 注意事项

 

使用 Apache/Nginx 时会出现诸如图片修改后但页面刷新仍然是旧文件的状况,是因为静态文件缓存形成的。须要对虚拟机里的 Apache/Nginx 配置文件进行修改:

 

# Apache 配置添加:

EnableSendfile off

# Nginx 配置添加:

sendfile off;

能够参考: http://stackoverflow.com/questions/9479117/vagrant-virtualbox-apache2-strange-cache-behaviour

相关文章
相关标签/搜索