使用Vagrant在Windows上轻松搭建Linux开发环境


做软件开发,无疑需要一个Linux环境,我们有很多种方式,来搭建一个Linux, 比如:

  • 在自己电脑上安装 Win7 + Ubuntu双系统
  • 在公司局域网安装一个Ubuntu/CentOS, 使用SSH, 速度够流畅,不方便的是仅可以在公司用 :)
  • 也可以去购买一些廉价的VPS, 但是不好的是速度要慢一些,会卡顿。
    • 推荐一个VPS服务商:AcrosVM 是国外老牌VPS主机商Hostigation旗下特别为国内用户开放的子站,中文网站,支付宝支付,中文客服,而且价格很便宜,最低 60元一年
  • 在Windows中装一个虚拟机,VirtualBox,但是虚拟机总是感觉怪怪的,是用户玩的,而不是工作的。

我起初在自己电脑上安装了双系统,Windows + Ubuntu, 使用了一段时间,但是Ubuntu上软件资源确实相对少些,UI相对也差些。也在VcrosVM上购买过VPS, 但ssh太卡。后来,读到Rei的文章,Rei - Vagrant,虚拟机管理工具,让我开始认识到Vagrant这个工具,本文也大量引用了Rei的文章。

引用SegmentFault - 使用 Vagrant 打造跨平台开发环境上的一段话:

Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。

我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气

虽说Vagrant是基于虚拟机的,或者说是虚拟机管理工具,但是,我们却不需要运行VirtualBox, 不需要在虚拟机的界面里操作,通过SSH登入,是不是显得有点高大上了,哈哈

搭建一个Windows下好用的Shell环境

对比Linux下的Bash Shell, Windows下的cmd简直是另外一个极端,界面简陋,编辑操作复杂(复制,粘贴,等等),以下是使用一些工具,使得Windows下的Shell也漂亮起来,操作简单起来。

看一张图:

cmder

  • cmder, 界面美观,多标签,复制粘贴方便,集成Git,ssh等常用linux命令
  • Chocolatey, 有点类似apt-get, 可使用 cinst 安装 wget 类似的命令,具体包 去官网上搜索。

安装 Chocolatey

安装这个走了一些弯路

安装方法参考: https://github.com/chocolatey/chocolatey/wiki/Installation

  1. 使用管理员打开 PowerShell
  2. 执行 Set-ExecutionPolicy Unrestricted, 并且选择Yes
  3. 安装:iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

官网上的提示:

Note: You must have your execution policy set to unrestricted (or at least in bypass) for this to work (Set-ExecutionPolicy Unrestricted). There have been reports that RemoteSigned is enough for the install to work.

Install

下载安装VirtualBox, 我安装的是64位的

Note: 需报VirtualBox的安装路径添加到环境变量 PATH 下

下载安装Vagrant

下载官方镜像:Ubuntu precise 64 VirtualBox

添加镜像

# 进入用户路径
$ cd %userprofile%
# 注意,box文件不能跨分区,添加后,会复制到 用户路径下,不依赖原box
$ vagrant box add ubuntu ../box/precise64.box

初始化vagrant环境

# cd到希望创建环境的目录,我选择了用户路径
$ cd %userprofile%
# 以ubuntu 为初始版本,在%userprofile%/VirtualBox VMs 创建disk/box, 并在VirtualBox种添加一个虚拟机,并在VM中可直接启动
$ vagrant init ubuntu

启动 vagrant环境

# cd到 vagrant init的路径
$ cd %userprofile%
# 启动
$ vagrant up

关闭

  • vagrant suspend 将虚拟机挂起,虚拟机内存都保存到硬盘上,下次可以快速恢复。

  • vagrant halt 将虚拟机关闭,虚拟机内存释放,下次启动要慢一点。

  • vagrant destroy 将虚拟机删除,所有变更都丢失,下次启动要重新克隆一个 Vagrant box

Note: 可能会出现错误:

  1. 找不到VirtualBox, 检查是否把VirtualBox添加到环境变量
  2. 提示错误如下: “The guest machine entered an invalid state while waiting for it to boot. Valid states are ‘starting, running’. The machine is in the ‘poweroff’ state. Please verify everything is configured properly and try again. If the provider you’re using has a GUI that comes with it, it is often helpful to open that and watch the machine, since the GUI often has more helpful error messages than Vagrant can retrieve. For example, if you’re using VirtualBox, run vagrant up while the VirtualBox GUI is open.” 出现错误,可以先用virtualbox 中启动,看有没有问题,一般也启动不了。会发现 ”提示 VT-X 没有在主板中启用“。启用办法:进入主板设置,在CPU Configuration选项 下,有个Intel Virtualization Technology, 应该也有助于速度。

如果vagrant 已经启动,修改配置文件后,无需重新启动,重新载入即可

SSH 登录

$ vagrant ssh

Vagrant 的一些配置

在Vagrant init的目录下,有一个配置文件 叫 Vagrantfile, 打开编辑:

$ vagrant reload

共享目录

  config.vm.synced_folder "./coding", "/home/vagrant/coding"
  # 把E盘Dropbox映射到home下
  config.vm.synced_folder "E:/Dropbox", "/home/vagrant/Dropbox"

设置独立IP

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

端口映射

config.vm.network :forwarded_port, guest: 3000, host: 3000

Vagrant 再打包,分发

如果已经配置好了一个开放环境,可以打包发给其他需要同样环境的同事。

  • 退出虚拟机
  • vagrant package

Refrence