使用Vagrant创建跨平台统一开发环境

Vagrant 是一个虚拟机管理工具,非常适合用于搭建统一开发环境。无论开发人员用的是 Windows 还是 Mac,都可以跑一个一致的 Linux 开发环境。所以如果你想快速安装/重置虚拟机,或者给开发组成员部署完全一致的开发环境,Vagrant 就是你需要的。它提供了一套易用的配置规则,比人工操作或者使用虚拟机软件提供的命令行要方便,且可重复。这里说的虚拟机一般用的是 VirtualBox

安装


1、安装VirtualBox

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

2、安装Vagrant

下载地址:http://downloads.vagrantup.com/

3、系统镜像

Ubuntu precise 32:http://files.vagrantup.com/precise32.box

Ubuntu precise 64:http://files.vagrantup.com/precise64.box

其他系统镜像:http://www.vagrantbox.es/

打造开发环境


1、添加镜像到Vagrant

假设镜像目录是:C:\Ubuntu\precise64.box

vagrant box add Ubuntu_name C:\Ubuntu\precise64.box

Ubuntu_name是这个box的名字。

2、 初始化开发环境

假设本地开发环境是C:\www,切换到开发目录,用Ubuntu_name镜像初始化开发环境。

cd C:\www
vagrant init Ubuntu_name   //初始化
vagrant up //启动

虚拟机启动后,如果你是Unix系统,直接可以用varant ssh登录虚拟机,虚拟机上会默认生成 /vagrant目录,对应宿主机上的C:/www目录,两个目录是实时同步的。

vagrant ssh
cd /vagrant

由于我使用的是Windows,需要借助SSH(ssh client,putty)工具登录。默认地址是127.0.0.1:2222 用户名vagrant,密码vagrant。

配置IP

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

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

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

重启虚拟机,这样我们就能用 192.168.33.10 访问这台机器了,你可以把 IP 改成其他地址,只要不产生冲突就行。

打包发布


如果你想将你的开发环境分享给你的同事或朋友使用,可以用以下命令打包。(需要退出并关闭虚拟机。)

vagrant package

打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其他用户,其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。

常用命令


 vagrant init  // 初始化
 vagrant up  // 启动虚拟机
 vagrant halt // 关闭虚拟机
 vagrant reload  // 重启虚拟机
 vagrant ssh  // SSH 至虚拟机
 vagrant status  // 查看虚拟机运行状态
 vagrant destroy  // 销毁当前虚拟机

更多内容请查阅官方文档 http://docs.vagrantup.com/v2/cli/index.html

注意事项


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

# Apache 配置添加:
EnableSendfile off

# Nginx 配置添加:
sendfile off;

参考与借鉴


http://segmentfault.com/a/1190000000264347
http://chloerei.com/2013/11/01/vagrant/


JackSun

JackSun

I'm a coder.

You may also like...

5 Responses

  1. 香港vps says:

    没整过这个,但感觉很牛逼的样子

  2. 久闻网佳莉 says:

    这个安不安全

  3. JackSun 孙大宝 says:

    这个一般用于开发者内部测试环境使用,所以不用考虑安全问题

  4. 内涵笑话 says:

    无意溜达到了你的网站 留下足迹

Leave a Reply

Your email address will not be published.